summaryrefslogtreecommitdiffstats
path: root/2023/info
diff options
context:
space:
mode:
Diffstat (limited to '2023/info')
-rw-r--r--2023/info/adventure-after.md129
-rw-r--r--2023/info/adventure-before.md18
-rw-r--r--2023/info/adventure-nav.md6
-rw-r--r--2023/info/collab-after.md423
-rw-r--r--2023/info/collab-before.md21
-rw-r--r--2023/info/collab-nav.md7
-rw-r--r--2023/info/core-after.md1565
-rw-r--r--2023/info/core-before.md12
-rw-r--r--2023/info/core-nav.md7
-rw-r--r--2023/info/cubing-after.md310
-rw-r--r--2023/info/cubing-before.md26
-rw-r--r--2023/info/cubing-nav.md7
-rw-r--r--2023/info/devel-after.md561
-rw-r--r--2023/info/devel-before.md12
-rw-r--r--2023/info/devel-nav.md7
-rw-r--r--2023/info/doc-after.md1189
-rw-r--r--2023/info/doc-before.md45
-rw-r--r--2023/info/doc-nav.md7
-rw-r--r--2023/info/eat-after.md113
-rw-r--r--2023/info/eat-before.md12
-rw-r--r--2023/info/eat-nav.md7
-rw-r--r--2023/info/emacsconf-after.md3170
-rw-r--r--2023/info/emacsconf-before.md37
-rw-r--r--2023/info/emacsconf-nav.md7
-rw-r--r--2023/info/emacsen-after.md1671
-rw-r--r--2023/info/emacsen-before.md31
-rw-r--r--2023/info/emacsen-nav.md7
-rw-r--r--2023/info/emms-after.md1371
-rw-r--r--2023/info/emms-before.md46
-rw-r--r--2023/info/emms-nav.md7
-rw-r--r--2023/info/eval-after.md231
-rw-r--r--2023/info/eval-before.md20
-rw-r--r--2023/info/eval-nav.md7
-rw-r--r--2023/info/extending-after.md7
-rw-r--r--2023/info/extending-before.md12
-rw-r--r--2023/info/extending-nav.md7
-rw-r--r--2023/info/flat-after.md262
-rw-r--r--2023/info/flat-before.md12
-rw-r--r--2023/info/flat-nav.md7
-rw-r--r--2023/info/gc-after.md964
-rw-r--r--2023/info/gc-before.md12
-rw-r--r--2023/info/gc-nav.md7
-rw-r--r--2023/info/hn-after.md7
-rw-r--r--2023/info/hn-before.md18
-rw-r--r--2023/info/hn-nav.md7
-rw-r--r--2023/info/hyperamp-after.md1351
-rw-r--r--2023/info/hyperamp-before.md18
-rw-r--r--2023/info/hyperamp-nav.md7
-rw-r--r--2023/info/hyperdrive-after.md1338
-rw-r--r--2023/info/hyperdrive-before.md20
-rw-r--r--2023/info/hyperdrive-nav.md7
-rw-r--r--2023/info/koutline-after.md128
-rw-r--r--2023/info/koutline-before.md12
-rw-r--r--2023/info/koutline-nav.md7
-rw-r--r--2023/info/lem-after.md7
-rw-r--r--2023/info/lem-before.md4
-rw-r--r--2023/info/lem-nav.md7
-rw-r--r--2023/info/llm-after.md1144
-rw-r--r--2023/info/llm-before.md33
-rw-r--r--2023/info/llm-nav.md7
-rw-r--r--2023/info/lspocaml-after.md793
-rw-r--r--2023/info/lspocaml-before.md38
-rw-r--r--2023/info/lspocaml-nav.md7
-rw-r--r--2023/info/matplotllm-after.md227
-rw-r--r--2023/info/matplotllm-before.md19
-rw-r--r--2023/info/matplotllm-nav.md7
-rw-r--r--2023/info/mentor-after.md1792
-rw-r--r--2023/info/mentor-before.md18
-rw-r--r--2023/info/mentor-nav.md7
-rw-r--r--2023/info/multi-after.md7
-rw-r--r--2023/info/multi-before.md4
-rw-r--r--2023/info/multi-nav.md7
-rw-r--r--2023/info/nabokov-after.md512
-rw-r--r--2023/info/nabokov-before.md25
-rw-r--r--2023/info/nabokov-nav.md7
-rw-r--r--2023/info/one-after.md904
-rw-r--r--2023/info/one-before.md32
-rw-r--r--2023/info/one-nav.md7
-rw-r--r--2023/info/overlay-after.md731
-rw-r--r--2023/info/overlay-before.md46
-rw-r--r--2023/info/overlay-nav.md7
-rw-r--r--2023/info/parallel-after.md631
-rw-r--r--2023/info/parallel-before.md36
-rw-r--r--2023/info/parallel-nav.md7
-rw-r--r--2023/info/poltys-after.md7
-rw-r--r--2023/info/poltys-before.md12
-rw-r--r--2023/info/poltys-nav.md7
-rw-r--r--2023/info/ref-after.md298
-rw-r--r--2023/info/ref-before.md20
-rw-r--r--2023/info/ref-nav.md7
-rw-r--r--2023/info/repl-after.md1146
-rw-r--r--2023/info/repl-before.md28
-rw-r--r--2023/info/repl-nav.md7
-rw-r--r--2023/info/sat-close-after.md178
-rw-r--r--2023/info/sat-close-before.md18
-rw-r--r--2023/info/sat-close-nav.md7
-rw-r--r--2023/info/sat-open-after.md132
-rw-r--r--2023/info/sat-open-before.md12
-rw-r--r--2023/info/sat-open-nav.md7
-rw-r--r--2023/info/scheme-after.md544
-rw-r--r--2023/info/scheme-before.md36
-rw-r--r--2023/info/scheme-nav.md7
-rw-r--r--2023/info/sharing-after.md1071
-rw-r--r--2023/info/sharing-before.md28
-rw-r--r--2023/info/sharing-nav.md7
-rw-r--r--2023/info/solo-after.md761
-rw-r--r--2023/info/solo-before.md33
-rw-r--r--2023/info/solo-nav.md7
-rw-r--r--2023/info/steno-after.md359
-rw-r--r--2023/info/steno-before.md12
-rw-r--r--2023/info/steno-nav.md7
-rw-r--r--2023/info/sun-close-after.md7
-rw-r--r--2023/info/sun-close-before.md12
-rw-r--r--2023/info/sun-close-nav.md6
-rw-r--r--2023/info/sun-open-after.md129
-rw-r--r--2023/info/sun-open-before.md12
-rw-r--r--2023/info/sun-open-nav.md7
-rw-r--r--2023/info/table-after.md252
-rw-r--r--2023/info/table-before.md12
-rw-r--r--2023/info/table-nav.md7
-rw-r--r--2023/info/taming-after.md7
-rw-r--r--2023/info/taming-before.md18
-rw-r--r--2023/info/taming-nav.md7
-rw-r--r--2023/info/teaching-after.md1340
-rw-r--r--2023/info/teaching-before.md37
-rw-r--r--2023/info/teaching-nav.md7
-rw-r--r--2023/info/test-after.md991
-rw-r--r--2023/info/test-before.md42
-rw-r--r--2023/info/test-nav.md7
-rw-r--r--2023/info/unentangling-after.md273
-rw-r--r--2023/info/unentangling-before.md12
-rw-r--r--2023/info/unentangling-nav.md7
-rw-r--r--2023/info/uni-after.md971
-rw-r--r--2023/info/uni-before.md35
-rw-r--r--2023/info/uni-nav.md7
-rw-r--r--2023/info/voice-after.md1473
-rw-r--r--2023/info/voice-before.md37
-rw-r--r--2023/info/voice-nav.md7
-rw-r--r--2023/info/web-after.md850
-rw-r--r--2023/info/web-before.md32
-rw-r--r--2023/info/web-nav.md7
-rw-r--r--2023/info/windows-after.md1260
-rw-r--r--2023/info/windows-before.md18
-rw-r--r--2023/info/windows-nav.md7
-rw-r--r--2023/info/woof-nav.md7
-rw-r--r--2023/info/world-after.md381
-rw-r--r--2023/info/world-before.md32
-rw-r--r--2023/info/world-nav.md7
-rw-r--r--2023/info/writing-after.md520
-rw-r--r--2023/info/writing-before.md28
-rw-r--r--2023/info/writing-nav.md7
151 files changed, 36008 insertions, 0 deletions
diff --git a/2023/info/adventure-after.md b/2023/info/adventure-after.md
new file mode 100644
index 00000000..4a5d4f30
--- /dev/null
+++ b/2023/info/adventure-after.md
@@ -0,0 +1,129 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="adventure-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-adventure" id="subtitle"]]
+
+[[!template text="""Hi, I'm going to give you a little demo""" start="00:00:00.000" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""of a project that I'm working on""" start="00:00:04.040" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""which is called the `orgdungeon`.""" start="00:00:06.440" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""As you can see here, they are just a bunch of Org files""" start="00:00:09.840" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and also an Emacs Lisp file.""" start="00:00:16.040" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""What I found is that if you have these Org files""" start="00:00:20.560" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then you have an Emacs Lisp file as a source""" start="00:00:26.800" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""to control how to progress from one file to another,""" start="00:00:30.920" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""it will give you a game-like experience.""" start="00:00:36.880" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""It's like the old game Myst.""" start="00:00:40.520" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""It was developed with the technology""" start="00:00:43.480" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""HyperCard for the Macintosh.""" start="00:00:46.120" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Basically, it uses a similar technology,""" start="00:00:48.760" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""so a similar interface to the developer""" start="00:00:53.200" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""who was using that technology to develop the game.""" start="00:00:57.560" video="mainVideo-adventure" id="subtitle"]]
+
+[[!template new="1" text="""Demo""" start="00:01:01.200" video="mainVideo-adventure" id="subtitle"]]
+
+[[!template text="""Concretely, I'm going to give you""" start="00:01:01.200" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""a demo of how the game looks like.""" start="00:01:03.800" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""So, this is a very vanilla Emacs setup.""" start="00:01:08.880" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Then I open up the first Org file.""" start="00:01:14.840" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""The Org file is just a bunch of text,""" start="00:01:18.640" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""but it tells you a story.""" start="00:01:22.840" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""So you wake up somewhere,""" start="00:01:25.520" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then there is a dog-like robot called Emi around you.""" start="00:01:27.360" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""And then it tells you what you should do.""" start="00:01:32.600" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Following the instructions...""" start="00:01:37.760" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""For example, here it tells you""" start="00:01:40.800" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""down there is one thing called &quot;code block,&quot;""" start="00:01:42.720" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then you can evaluate it by pressing `C-c C-c`.""" start="00:01:46.240" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Then we can just go there""" start="00:01:51.360" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then just evaluate the code block.""" start="00:01:53.640" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""So technically it just runs the Emacs Lisp file,""" start="00:01:55.240" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""because you can see here, if you load Emacs Lisp...""" start="00:02:00.240" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""It just evaluates that Emacs Lisp file.""" start="00:02:05.000" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""I can just say `C-c C-c`.""" start="00:02:07.160" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Then for this one, I just say yes,""" start="00:02:09.800" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then it will jump to another file.""" start="00:02:12.320" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""But in the game, I call it the plane.""" start="00:02:16.520" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""So it jumps to another plane.""" start="00:02:18.760" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Yeah, so...""" start="00:02:21.040" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""In the other one, it's just saying that""" start="00:02:24.040" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""there is a function called `emi-escape-10`.""" start="00:02:26.400" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Assuming that you don't have any experience""" start="00:02:29.880" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""how to use Emacs,""" start="00:02:33.480" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""so you have no idea how to do that,""" start="00:02:34.760" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""but down there, it's saying that""" start="00:02:38.760" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""there is a key combination called `C-h f`,""" start="00:02:41.320" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and it will bring up the help system.""" start="00:02:44.320" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Then you can read the help file of `emi-escape-10`.""" start="00:02:48.400" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""So you can just do that. For example, `C-h f`""" start="00:02:52.560" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then `describe-function` `emi-escape-10` here.""" start="00:02:55.740" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""It will show you the help file.""" start="00:03:03.000" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Then it's just saying that you can press `M-x`,""" start="00:03:06.320" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and Meta usually mapped to Alt,""" start="00:03:10.920" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then yeah.""" start="00:03:13.520" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Then you can just close this help file using `C-x 1`.""" start="00:03:15.080" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""I'm just going to do that. And then yeah...""" start="00:03:18.720" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""I'm just try that. `M-x` and then `emi-escape-10`.""" start="00:03:21.400" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""All right.""" start="00:03:31.480" video="mainVideo-adventure" id="subtitle"]]
+
+[[!template new="1" text="""emi-escape-12""" start="00:03:33.360" video="mainVideo-adventure" id="subtitle"]]
+
+[[!template text="""So I will jump to another file.""" start="00:03:33.360" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Or in the game, you jump to another plane.""" start="00:03:36.040" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""And now you know that""" start="00:03:39.360" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""there is a function called `emi-escape-12`.""" start="00:03:40.339" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""And yeah, you can just do that `emi`,""" start="00:03:44.840" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""because you learned it previously, right.""" start="00:03:47.639" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""`emi-escape-12`.""" start="00:03:50.400" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""But this time, it asks you for a password,""" start="00:03:52.080" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""which you probably don't know, right?""" start="00:03:55.120" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""If you just type in anything,""" start="00:03:57.800" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""it will just say incorrect password.""" start="00:03:59.840" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""But yeah, it's part of the learning experience""" start="00:04:02.720" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""because previously you learned""" start="00:04:06.360" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""that you should use the help file,""" start="00:04:07.280" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""help system to read the help file of a function,""" start="00:04:10.320" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""so you can just use the help file""" start="00:04:16.200" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""to look for the help of `emi-escape-12`.""" start="00:04:18.320" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Then, yeah, the help file will say that""" start="00:04:25.840" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""you should enter a password,""" start="00:04:29.520" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and the password is `emi`.""" start="00:04:31.240" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Right. So you can just do that.""" start="00:04:34.160" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Write `emi-escape-12`,""" start="00:04:36.440" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then now you know the password is `emi`. Right.""" start="00:04:42.240" video="mainVideo-adventure" id="subtitle"]]
+
+[[!template new="1" text="""The rest of the game""" start="00:04:47.040" video="mainVideo-adventure" id="subtitle"]]
+
+[[!template text="""So you can progress along these different files,""" start="00:04:47.040" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and then if you...""" start="00:04:51.840" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Okay, it's like a game,""" start="00:04:53.520" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""but at the same time, it also teaches you""" start="00:04:54.640" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""something about how Emacs works.""" start="00:04:57.280" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""For example, like the previous one,""" start="00:05:01.680" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""you know how to use the help file, for example,""" start="00:05:04.600" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""but in the later part, you will learn how to""" start="00:05:07.280" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""evaluate some Emacs Lisp code""" start="00:05:11.520" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and also how to write some Emacs Lisp code""" start="00:05:14.280" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""as well, and then you will learn""" start="00:05:17.160" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""the difference between interactive commands""" start="00:05:19.560" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""and also just ordinary functions, for example.""" start="00:05:23.400" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Now, I just created a few Org files,""" start="00:05:27.240" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""but I'm actively adding more Org files""" start="00:05:31.400" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""so that we can have a complete kind of""" start="00:05:36.440" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""educational experience.""" start="00:05:39.600" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""If you want to follow along [with] this project,""" start="00:05:42.560" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""you can just go to my Github repository.""" start="00:05:45.640" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""I hope you enjoyed this little demo.""" start="00:05:51.360" video="mainVideo-adventure" id="subtitle"]]
+[[!template text="""Thank you.""" start="00:05:56.540" video="mainVideo-adventure" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20adventure%3A%20An%20Org-Mode%20based%20text%20adventure%20game%20for%20learning%20the%20basics%20of%20Emacs%2C%20inside%20Emacs%2C%20written%20in%20Emacs%20Lisp)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/adventure-before.md b/2023/info/adventure-before.md
new file mode 100644
index 00000000..c774f5ff
--- /dev/null
+++ b/2023/info/adventure-before.md
@@ -0,0 +1,18 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 6-min talk; Q&A: Etherpad
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="adventure-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="adventure-mainVideo" data="""
+00:00.000 Introduction
+01:01.200 Demo
+03:33.360 emi-escape-12
+04:47.040 The rest of the game
+
+"""]]<div></div>Duration: 05:58 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main.opus">Download --main.opus (3.3MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main.webm">Download --main.webm (19MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/2oqbPJB8Wm3QSo4HCKAyVn">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/adventure-nav.md b/2023/info/adventure-nav.md
new file mode 100644
index 00000000..95382fff
--- /dev/null
+++ b/2023/info/adventure-nav.md
@@ -0,0 +1,6 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Next by track: <a href="/2023/talks/uni">Authoring and presenting university courses with Emacs and a full libre software stack</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/collab-after.md b/2023/info/collab-after.md
new file mode 100644
index 00000000..de166231
--- /dev/null
+++ b/2023/info/collab-after.md
@@ -0,0 +1,423 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="collab-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-collab" id="subtitle"]]
+
+[[!template text="""[Lukas]: Welcome to our presentation,""" start="00:00:00.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Collaborative Data Processing""" start="00:00:01.875" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and Documenting using org-babel.""" start="00:00:03.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""My name is Lukas Bossert, and I'm""" start="00:00:06.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""from the RWTH Aachen University""" start="00:00:07.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""in the city of Aachen, Germany.""" start="00:00:09.741" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: And my name is Jonathan Hartmann.""" start="00:00:12.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm also from the IT Center here at RWTH Aachen.""" start="00:00:14.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Great.""" start="00:00:18.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And we will show you today how you""" start="00:00:19.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""can use Org Mode for data processing.""" start="00:00:21.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So you see a little workflow what we are going to do.""" start="00:00:25.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""First, we will give you a slight introduction to Org Mode.""" start="00:00:28.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Then we will dive into the part of data preparing.""" start="00:00:31.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""First, you're going to query the data using the language SPARQL.""" start="00:00:34.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Then we're going to clean it using a different language.""" start="00:00:38.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And in the main part of our presentation,""" start="00:00:41.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we're going to do the data processing, first aggregating""" start="00:00:44.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""using Python, later on counting items using Org,""" start="00:00:48.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and even visualizing it using R. At the end,""" start="00:00:52.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we're going to show you how to preserve""" start="00:00:56.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""the data and the document and its documentation,""" start="00:00:58.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""first doing in plain exporting, then adding some metadata,""" start="00:01:01.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and showing you two different ways, first a manual export,""" start="00:01:06.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and also then a batch-processed export.""" start="00:01:09.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""All right.""" start="00:01:13.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Let's dive in to that.""" start="00:01:14.240" video="mainVideo-collab" id="subtitle"]]
+
+[[!template new="1" text="""Org Mode""" start="00:01:16.080" video="mainVideo-collab" id="subtitle"]]
+
+[[!template text="""Jonathan, can you give us an introduction about Org Mode?""" start="00:01:16.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Of course.""" start="00:01:19.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So in case anyone isn't familiar with it,""" start="00:01:20.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Org Mode, in the words of Carsten Dominik,""" start="00:01:23.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is back to the future for plain text.""" start="00:01:25.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this is just a module available for Emacs,""" start="00:01:28.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""plain-text base.""" start="00:01:31.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It's been around since 2003, which""" start="00:01:32.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""makes it about 20 years old.""" start="00:01:34.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And it's extensible and fully customizable.""" start="00:01:36.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And especially, it's very convenient, very good""" start="00:01:40.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""for scientific text production and organization.""" start="00:01:44.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So for example, you can do project management, agenda,""" start="00:01:46.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""diary, journaling, personal knowledge management,""" start="00:01:49.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""presentation.""" start="00:01:52.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Even this is written in Org Mode.""" start="00:01:53.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It's an Org Mode presentation.""" start="00:01:55.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""You can do single source publishing,""" start="00:01:57.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which we will do later on, and also""" start="00:01:59.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""literate programming, which is the core of our talk.""" start="00:02:01.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""OK.""" start="00:02:06.480" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: So let me stop this presentation here.""" start="00:02:07.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So what you see here is the plain text underneath it.""" start="00:02:10.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this is Org Mode.""" start="00:02:14.720" video="mainVideo-collab" id="subtitle"]]
+
+[[!template new="1" text="""Working together""" start="00:02:18.960" video="mainVideo-collab" id="subtitle"]]
+
+[[!template text="""And Jonathan, since we kind of already""" start="00:02:18.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""did the introduction together, should we""" start="00:02:21.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""also do the working part together?""" start="00:02:26.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Of course.""" start="00:02:28.761" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So you see on the screen there on the right,""" start="00:02:29.701" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that's my screen in Emacs.""" start="00:02:33.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And Lukas, why don't you host a session using CRDT,""" start="00:02:35.061" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and I'll connect to your buffer.""" start="00:02:39.521" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: OK. Great.""" start="00:02:41.201" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I do that.""" start="00:02:42.561" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So what I do, I'm using Doom Emacs.""" start="00:02:43.281" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And I can use the `SPC` and then the `l`""" start="00:02:46.181" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""for the live share/collab part.""" start="00:02:49.308" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I can use the `s` for share current buffer.""" start="00:02:52.141" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So when I do this, I'm getting asked for some settings.""" start="00:02:58.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm going with the default settings here.""" start="00:03:01.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So default port, no password, and my display name.""" start="00:03:04.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And now Emacs is connecting.""" start="00:03:08.341" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And once it's connected, which just takes a couple of seconds,""" start="00:03:11.941" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I can get the URL.""" start="00:03:15.180" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm going back to this menu and using `y`""" start="00:03:17.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""for copying the URL of the current session.""" start="00:03:21.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And this is the URL I'm going to send over to you, Jonathan,""" start="00:03:24.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""to pick that up.""" start="00:03:27.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Right.""" start="00:03:29.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""OK.""" start="00:03:29.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And now on my screen, I'm going to do a `SPC l c` for connect.""" start="00:03:30.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And I'm going to paste the URL""" start="00:03:37.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that Lukas just sent me in here.""" start="00:03:38.741" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Default port, no password.""" start="00:03:40.980" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And we're connecting now.""" start="00:03:43.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this takes a second just to get us synced up.""" start="00:03:45.700" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So we can work on the same document at the same time.""" start="00:03:51.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We can follow each other's cursors around.""" start="00:03:54.161" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We can have multiple buffers open and work on them""" start="00:03:56.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""at the same time.""" start="00:03:58.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And so here you see that we are both in the same document.""" start="00:04:01.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""You can see my cursor popping around.""" start="00:04:04.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And you can see we're both editing the same item.""" start="00:04:09.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Great.""" start="00:04:13.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: So we also see who else is currently in our buffer""" start="00:04:14.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""with the user overview.""" start="00:04:18.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So let me just delete that window.""" start="00:04:20.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And that's going to work in our main one.""" start="00:04:23.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So we said first part is about data retrieval.""" start="00:04:26.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So we should give it a headline.""" start="00:04:29.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We said prepare stage.""" start="00:04:37.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So what are we going to do first, Jonathan?""" start="00:04:39.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: So what we're going to do,""" start="00:04:42.320" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""what this whole document is based upon,""" start="00:04:43.941" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is we're going to pull data from Wikidata using a SPARQL query.""" start="00:04:45.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""The data we're going to pull is related to the NFDIs,""" start="00:04:50.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which here in Germany is the National Forschungsdaten""" start="00:04:53.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Infrastructure, which is a sort of collection of universities""" start="00:04:55.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that work together on various research projects.""" start="00:05:00.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And this is emblematic of the kind of data""" start="00:05:03.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we would be interested in working with here.""" start="00:05:05.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm going to paste a--forgive the pre-written code--""" start="00:05:09.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm going to paste some text in here.""" start="00:05:13.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: And while you are talking, I just""" start="00:05:20.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""keep on documenting what we do""" start="00:05:21.408" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""so we can split the work.""" start="00:05:23.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: In here, after a minor technical upset,""" start="00:05:27.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is the raw dataset cell.""" start="00:05:29.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And it's going to use SPARQL,""" start="00:05:32.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which is how we have the syntax highlighting""" start="00:05:34.741" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""in our code here.""" start="00:05:37.175" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It's going to go to the URL endpoint""" start="00:05:37.941" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""query.wikidata.org/sparql ,""" start="00:05:40.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and it's going to return the data as a text CSV,""" start="00:05:43.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and it's going to cache that data""" start="00:05:46.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""so that we don't constantly hammer the API every time""" start="00:05:49.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we run this notebook.""" start="00:05:51.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm going to run that there.""" start="00:05:54.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""You can see down at the bottom of my screen,""" start="00:05:57.361" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we're contacting the host query.wikidata.org .""" start="00:05:58.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: And there's the result.""" start="00:06:05.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Yeah, except I think that for our purposes here,""" start="00:06:07.320" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we're just going to limit this to 50 results.""" start="00:06:11.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Oh, yeah.""" start="00:06:15.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Just so it's a little easier for us to manage.""" start="00:06:16.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm going to run that again.""" start="00:06:18.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""There we go.""" start="00:06:20.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""That looks a little better.""" start="00:06:21.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: I think that's fine.""" start="00:06:22.320" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""50 items is fine.""" start="00:06:23.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So what do we see here, Jonathan?""" start="00:06:25.360" video="mainVideo-collab" id="subtitle"]]
+
+[[!template new="1" text="""Data cleaning""" start="00:06:27.840" video="mainVideo-collab" id="subtitle"]]
+
+[[!template text="""[Jonathan]: Right.""" start="00:06:27.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So the first thing we see when we look at this""" start="00:06:28.320" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is a couple of Q codes at the top,""" start="00:06:31.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which are an artifact of Wikidata.""" start="00:06:33.308" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So these are pages which don't have""" start="00:06:36.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""the label for whichever institution they happen to be.""" start="00:06:39.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""For our purposes here, we're just going to exclude them.""" start="00:06:42.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We could just go on Wikidata and edit them ourselves.""" start="00:06:45.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""But for now, it's a little more interesting""" start="00:06:48.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""if we go and remove them.""" start="00:06:50.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm going to create a new cell.""" start="00:06:52.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Lukas, if you don't mind starting one for data cleaning.""" start="00:06:55.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Oh, yeah.""" start="00:06:58.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Good point.""" start="00:06:58.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Yeah, data cleaning.""" start="00:06:59.480" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""OK.""" start="00:07:02.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""How do you want to do that, Jonathan?""" start="00:07:03.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: I'm going to use a shell command.""" start="00:07:05.500" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So let's see.""" start="00:07:09.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""There we go.""" start="00:07:11.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And so you can see, here is another cell,""" start="00:07:13.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that the cell is now using a shell,""" start="00:07:15.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and that we have this thing `:var input=raw-dataset`,""" start="00:07:20.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which is the name of the cell above""" start="00:07:23.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""where we got our data from Wikidata.""" start="00:07:25.841" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""This is going to run just a simple shell command.""" start="00:07:28.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It's going to take the input and then run `sed` on it""" start="00:07:31.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and exclude any records which have a Q""" start="00:07:33.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""followed by one or more digits afterwards.""" start="00:07:37.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""That should remove those from our data set.""" start="00:07:41.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm going to run that.""" start="00:07:44.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""That seems to have done the trick.""" start="00:07:48.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Great, yeah.""" start="00:07:51.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""That's really good.""" start="00:07:51.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We got rid of all the Q items.""" start="00:07:52.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Very good.""" start="00:07:55.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So we just have two-column table: institutions""" start="00:07:55.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and consortia.""" start="00:07:59.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Very nice.""" start="00:08:02.760" video="mainVideo-collab" id="subtitle"]]
+
+[[!template new="1" text="""Processing""" start="00:08:04.040" video="mainVideo-collab" id="subtitle"]]
+
+[[!template text="""So let's come to our main part, doing some processing.""" start="00:08:04.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Let me give you a headline here, process the data.""" start="00:08:08.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""What do you want to do first?""" start="00:08:13.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: This is not a very complicated data set,""" start="00:08:15.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""but let's just do some simple counts first.""" start="00:08:17.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm going to start with Python,""" start="00:08:19.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and we're just going to do some aggregation with Python.""" start="00:08:22.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Again, I've got some pre-written code here.""" start="00:08:25.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""You can see that we've started a cell using Python.""" start="00:08:30.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""The variable `clean_df` now is equal to `clean-dataset`.""" start="00:08:35.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So we're going to take that data""" start="00:08:37.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we retrieved from the SPARQL query,""" start="00:08:39.708" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we're going to run it through the cleaning cell,""" start="00:08:41.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and then we're going to import it into this cell.""" start="00:08:42.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""This is just going to do some simple Python aggregation.""" start="00:08:45.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We're going to import `pandas`,""" start="00:08:47.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which is the Python data science library,""" start="00:08:49.008" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""create a data frame out of our input,""" start="00:08:51.308" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and then aggregate it, grouping on `wLabel`,""" start="00:08:54.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and getting a count from that and returning it.""" start="00:08:57.480" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So if we execute that cell...""" start="00:08:59.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Nice, we get institutions and a count.""" start="00:09:05.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""But what about not ordering it by the alphabet,""" start="00:09:08.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""but more like ordering by counts?""" start="00:09:14.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Sure.""" start="00:09:17.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So let's do this... `sort_values()`, I think, as the Python.""" start="00:09:18.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""How does that look?""" start="00:09:22.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Better, but I would like to""" start="00:09:24.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""have the highest number first""" start="00:09:27.641" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and then ascending.""" start="00:09:29.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Well, not ascending, descending.""" start="00:09:32.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Right, so we can do `ascending=False`.""" start="00:09:34.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: This is perfect, I'd say.""" start="00:09:39.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Great.""" start="00:09:42.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Very good.""" start="00:09:43.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""OK, that's nice.""" start="00:09:44.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We get a good overview here.""" start="00:09:46.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""But can we also do something else,""" start="00:09:48.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""like counting how many institutions are""" start="00:09:50.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""involved in one consortium?""" start="00:09:56.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And also using this later on in the text?""" start="00:09:57.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Sure, so I'm going to put a new...""" start="00:10:00.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""If you give me another heading down here""" start="00:10:00.881" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""for institutions per consortium...""" start="00:10:05.041" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And here we're going to use awk code just to spice things up""" start="00:10:12.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and add yet another language in here.""" start="00:10:16.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So you can see this is awk.""" start="00:10:18.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We're using standard in instead of defining a variable.""" start="00:10:22.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""But the really interesting thing about this cell""" start="00:10:26.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is that we have this `:var consortium=&quot;NFDI4Memory&quot;`.""" start="00:10:28.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And what this code is doing is""" start="00:10:33.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""it's counting any time it sees""" start="00:10:35.641" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that particular consortium name""" start="00:10:38.041" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and keeping track of that.""" start="00:10:40.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So if we execute this,""" start="00:10:41.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Lukas, why don't you execute this one?""" start="00:10:43.908" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: OK, I'm going to enter it.""" start="00:10:45.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And I get a result, NFDI4Memory,""" start="00:10:49.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""because this is our default value for this variable.""" start="00:10:52.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And we get the count.""" start="00:10:58.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So it's five institutions are involved""" start="00:10:59.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""in the NFDI4memory consortium.""" start="00:11:01.641" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Great, but the very nice thing, what I think,""" start="00:11:04.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is here that we can use this code snippet within our text.""" start="00:11:07.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So, blended in seamlessly.""" start="00:11:12.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Let me give you an example.""" start="00:11:14.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm writing out the text.""" start="00:11:16.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Now we know how many institutions are in...""" start="00:11:18.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Give me an example.""" start="00:11:27.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I would like to know how many institutions are""" start="00:11:29.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""involved in NFDI4Objects, which is a consortium.""" start="00:11:31.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm writing `call_` and using""" start="00:11:35.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""the name of this snippet here, of this cell,""" start="00:11:39.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which is `inst-count(`,""" start="00:11:42.608" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and writing my value, `NFDI4Objects`.""" start="00:11:46.608" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""As soon as I evaluate this using `C-c C-c`,""" start="00:11:51.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I get the result back here.""" start="00:11:58.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I can do this even for more.""" start="00:12:00.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Or in writing, `call_inst-count`, go with `NFDI4Earth`,""" start="00:12:05.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which is another consortium.""" start="00:12:14.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""`C-c C-c`, it's three institutions.""" start="00:12:16.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""This can be used throughout your text,""" start="00:12:20.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and as soon as the data set changes from in the beginning,""" start="00:12:23.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""maybe different results requiring Wikidata,""" start="00:12:26.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""this also will be updated once it's exported.""" start="00:12:30.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Very nice, Jonathan.""" start="00:12:35.080" video="mainVideo-collab" id="subtitle"]]
+
+[[!template new="1" text="""Visualization""" start="00:12:36.040" video="mainVideo-collab" id="subtitle"]]
+
+[[!template text="""But I think we did a lot of analysis""" start="00:12:36.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""on text and counting things.""" start="00:12:38.975" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Can we also do something more visual?""" start="00:12:41.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Show me something.""" start="00:12:43.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Sure.""" start="00:12:45.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So what we can do with this, because we just""" start="00:12:45.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""have two columns here that are sort of related,""" start="00:12:48.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we can build a little network plot out of it.""" start="00:12:51.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So let's make a network visualization.""" start="00:12:53.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We're going to use the `igraph` library from R""" start="00:12:57.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and just plot the edges that we see here.""" start="00:12:59.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""There we go.""" start="00:13:02.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""There's my little heading and space.""" start="00:13:04.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Here is our code.""" start="00:13:11.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Again, just to be fancy and keep using""" start="00:13:13.480" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""different languages in here, we set a variable called""" start="00:13:16.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""`NFDI_edges` equal to `clean-dataset`.""" start="00:13:19.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this, again, is sort of cascading""" start="00:13:21.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""through the original data""" start="00:13:23.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we pulled from the Wikidata endpoint,""" start="00:13:25.741" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""cleaning that data, and now it's being inserted""" start="00:13:28.808" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""into this cell as well.""" start="00:13:30.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""But you see the difference here.""" start="00:13:32.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Instead of exporting a table, what we're saying""" start="00:13:34.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is that there will be a graphics file,""" start="00:13:36.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and it will be called network-plot.png.""" start="00:13:39.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""All right.""" start="00:13:44.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And so Lukas, why don't you execute this one?""" start="00:13:45.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: There you go.""" start="00:13:47.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I can click `C-c C-c`""" start="00:13:48.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and I get a nice plot of the network below our cell.""" start="00:13:52.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this is very nice indeed.""" start="00:13:59.160" video="mainVideo-collab" id="subtitle"]]
+
+[[!template new="1" text="""Preserve""" start="00:14:01.760" video="mainVideo-collab" id="subtitle"]]
+
+[[!template text="""So I think it's about time to wrap it up and to export""" start="00:14:01.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and to preserve the data and the documentation""" start="00:14:05.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we have in our very last step, calling preserve.""" start="00:14:07.960" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I would like to do it in two steps.""" start="00:14:13.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""First, maybe manually exporting it,""" start="00:14:16.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""but then also doing it in a batch process.""" start="00:14:18.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Giving you some insights how to do that manual export.""" start="00:14:22.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""For example, you can do a LaTeX export.""" start="00:14:27.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Let me write down the key combination to do that here.""" start="00:14:30.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So you press `SPC m e l o`.""" start="00:14:34.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Let me show you how this is done.""" start="00:14:44.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm pressing `SPC`.""" start="00:14:49.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm pressing `m`, which is my local leader.""" start="00:14:51.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I'm pressing `e`, which is now the `org-export-dispatch`.""" start="00:14:55.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And now I have different options I can choose from.""" start="00:15:01.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I want to do a LaTeX export because I want to get in PDF.""" start="00:15:03.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm pressing `l`.""" start="00:15:07.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Now I've got different options available.""" start="00:15:08.675" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So I'm pressing `o` for a PDF file and open that.""" start="00:15:11.480" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Let's see now the code.""" start="00:15:17.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Now this is exporting document.""" start="00:15:21.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And what we have here is PDF,""" start="00:15:25.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which contains our workflow in the beginning,""" start="00:15:29.675" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""our bullet points we have here,""" start="00:15:31.975" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and also the code snippet""" start="00:15:35.708" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we use for querying the data.""" start="00:15:37.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And we have the result below that.""" start="00:15:41.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this is our table with all the data sets.""" start="00:15:43.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""But as you can see, this is running out of the page.""" start="00:15:47.000" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this is not very nice using the default settings.""" start="00:15:51.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""But everything is in this PDF.""" start="00:15:55.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""I guess we can now show you a way""" start="00:16:00.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""how to improve this result.""" start="00:16:02.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Right.""" start="00:16:06.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So we have, of course, a version of this""" start="00:16:07.040" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we prepared ahead of time,""" start="00:16:09.400" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which is more or less identical to the one we just made,""" start="00:16:10.775" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""but it has a little more text, a little more explanation,""" start="00:16:14.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""a little more documentation along with the code.""" start="00:16:17.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""You can see we have some metadata up at the top,""" start="00:16:20.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""the title, the authors, a bibliography,""" start="00:16:23.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and most importantly, the `custom-export.setup` file,""" start="00:16:26.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which lists specifically the sort of LaTeX commands""" start="00:16:31.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we're using and the HTML styles that we're going to use.""" start="00:16:36.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And then down at the bottom of this file,""" start="00:16:43.600" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""we have our automatic batch process.""" start="00:16:45.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Here is one more language we're including in here.""" start="00:16:49.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this is Lisp.""" start="00:16:51.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And you can see here we are exporting to HTML, ASCII,""" start="00:16:53.440" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and PDF.""" start="00:16:57.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""The nice thing about this is that this is a document.""" start="00:16:58.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It's a sort of document that we have a couple of""" start="00:17:01.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""that we can have running automatically and building.""" start="00:17:03.308" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It will export a HTML, an ASCII file, and a PDF file""" start="00:17:08.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""every time it's run based off of""" start="00:17:12.920" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""the most recent data available on Wikidata.""" start="00:17:14.675" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So it's self-documenting.""" start="00:17:17.320" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We have, of course, our data retrieval steps,""" start="00:17:19.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""our data cleaning steps, our data preparation steps,""" start="00:17:22.441" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and our preservation steps all listed at the same time.""" start="00:17:25.160" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And then you can see over on the right,""" start="00:17:28.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""there's an example of the HTML file that we get out of this.""" start="00:17:30.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We also get a very nicely formatted PDF file,""" start="00:17:34.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""which doesn't have that little issue""" start="00:17:37.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""with the overflow of the table.""" start="00:17:39.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It's very nicely put together.""" start="00:17:41.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And we even have an ASCII file.""" start="00:17:43.560" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""And I should also point out very quickly,""" start="00:17:46.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""while you have this one up, Lukas, after the awk code,""" start="00:17:47.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""you can see the text for the number of consortia,""" start="00:17:51.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""or the number of institutions per consortia""" start="00:17:56.080" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""is actually printed inline.""" start="00:17:57.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: Yeah, you're very right.""" start="00:18:00.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So this is what we had as code,""" start="00:18:01.800" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""and now this is nicely integrated into our text.""" start="00:18:06.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So we got the consortium and number of institutions.""" start="00:18:10.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""You can't tell a difference between code and text.""" start="00:18:15.280" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: And those are automatically updated.""" start="00:18:19.200" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""So if another institution joins NFDI4Earth,""" start="00:18:20.720" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""then the next time this runs, we update the text right here.""" start="00:18:23.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It's nothing we have to worry about.""" start="00:18:26.320" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""We just pull it directly out of Wikidata.""" start="00:18:28.520" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Lukas]: And for the sake of completeness,""" start="00:18:31.840" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""this is the ASCII file.""" start="00:18:34.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""That's in the export format.""" start="00:18:37.880" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""It contains also everything, code and data.""" start="00:18:42.760" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Yeah, so this is what we wanted to show you,""" start="00:18:48.360" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""how to do some data processing,""" start="00:18:53.240" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""some collaborative work,""" start="00:18:56.640" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""documenting using org-babel.""" start="00:18:58.680" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""Thanks for listening.""" start="00:19:01.120" video="mainVideo-collab" id="subtitle"]]
+[[!template text="""[Jonathan]: Thank you all, have a good day.""" start="00:19:05.720" video="mainVideo-collab" id="subtitle"]]
+
+
+
+Captioner: amine
+
+Questions or comments? Please e-mail [hartman@itc.rwth-aachen.de, bossert@itc.rwth-aachen.de](mailto:hartman@itc.rwth-aachen.de, bossert@itc.rwth-aachen.de?subject=Comment%20for%20EmacsConf%202023%20collab%3A%20Collaborative%20data%20processing%20and%20documenting%20using%20org-babel)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/collab-before.md b/2023/info/collab-before.md
new file mode 100644
index 00000000..22e68600
--- /dev/null
+++ b/2023/info/collab-before.md
@@ -0,0 +1,21 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-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
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="collab-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="collab-mainVideo" data="""
+00:00.000 Introduction
+01:16.080 Org Mode
+02:18.960 Working together
+06:27.840 Data cleaning
+08:04.040 Processing
+12:36.040 Visualization
+14:01.760 Preserve
+
+"""]]<div></div>Duration: 19:16 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--main.webm">Download --main.webm (62MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-collab--collaborative-data-processing-and-documenting-using-orgbabel--jonathan-hartman-lukas-c-bossert--room-noise.webm">Download --room-noise.webm</a></li><li><a href="https://toobnix.org/w/7AAwoawr5MXNSrqiHJQoak">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/collab-nav.md b/2023/info/collab-nav.md
new file mode 100644
index 00000000..55c61f3f
--- /dev/null
+++ b/2023/info/collab-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/nabokov">Why Nabokov would use Org-Mode if he were writing today</a>
+Next by track: <a href="/2023/talks/solo">How I play TTRPGs in Emacs</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/core-after.md b/2023/info/core-after.md
new file mode 100644
index 00000000..13fa508a
--- /dev/null
+++ b/2023/info/core-after.md
@@ -0,0 +1,1565 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="core-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""All right. Hi again, everyone.""" start="00:00:02.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's been a while. Well,""" start="00:00:03.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""actually, it's been like 2 minutes tops.""" start="00:00:04.839" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We were just with John Wheatley,""" start="00:00:07.819" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and now we are with Stefan Krangas.""" start="00:00:09.099" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Hi. Hi. So as we said before,""" start="00:00:11.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Stefan is co-maintainer now of Is it the""" start="00:00:16.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""entire Emacs project? How do you describe""" start="00:00:20.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this? Yeah, co-maintainer of GNU Emacs.""" start="00:00:22.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Right, perfect. So you know what?""" start="00:00:27.439" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Because I'm sure everyone is dying to hear""" start="00:00:29.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""everything you've got to say in your""" start="00:00:32.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""presentation I'm just going to shut up now""" start="00:00:33.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and leave the floor to you.""" start="00:00:36.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Do you need to share your screen or anything?""" start="00:00:37.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""No. Okay great well I'll just cut my webcam""" start="00:00:40.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""off I'll still be in the background so do not""" start="00:00:45.239" video="mainVideo-core" id="subtitle"]]
+[[!template text="""hesitate if you've got any problem I'm still""" start="00:00:47.059" video="mainVideo-core" id="subtitle"]]
+[[!template text="""around And I'll see you just beacon whenever""" start="00:00:48.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you're done. And I'll show up with the""" start="00:00:52.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""questions. All right? Thank you,""" start="00:00:53.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Leo. And thank you, everyone,""" start="00:00:56.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for being here. I'm Stefan Kangas.""" start="00:00:58.739" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So as Leo explained, I am recently appointed""" start="00:01:02.739" video="mainVideo-core" id="subtitle"]]
+[[!template text="""as a co-maintainer of GNU Emacs,""" start="00:01:06.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""which a role that I'm fulfilling currently""" start="00:01:10.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""with Eli Sretsky, who's been co-maintainer""" start="00:01:13.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for quite some time. So I got the question to""" start="00:01:18.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""be a co-maintainer from Richard in August""" start="00:01:23.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this year. And of course,""" start="00:01:26.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""when you get a question like that,""" start="00:01:29.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I couldn't not say yes.""" start="00:01:31.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So here we are. I can't tell you how excited""" start="00:01:34.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I am to have this opportunity to address the""" start="00:01:39.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""community in this way.""" start="00:01:45.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm really humbled, of course,""" start="00:01:47.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to be part of it, and to be able to serve the""" start="00:01:50.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""community in this capacity.""" start="00:01:55.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I've used Emacs, I think many of you might""" start="00:02:00.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""also have used Emacs for quite some time,""" start="00:02:04.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but I'm going on 2 decades as an Emacs user.""" start="00:02:06.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""My involvement in Emacs Lisp development is,""" start="00:02:11.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, almost as long,""" start="00:02:14.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but my core development goes back only 4,""" start="00:02:16.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""5 years. I have to also thank the EmacsConf""" start="00:02:19.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""organizers who are doing,""" start="00:02:27.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, a tremendous job and have done a""" start="00:02:29.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""tremendous job over the years in really""" start="00:02:31.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""building and strengthening what I think is""" start="00:02:34.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this fantastic community of users and""" start="00:02:38.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""developers and people interested in Emacs.""" start="00:02:42.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I actually had the chance to meet up with Eli""" start="00:02:46.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sretzky, as well as another Emacs hacker,""" start="00:02:50.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Andrea Corallo, when I was at the GNU""" start="00:02:53.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""project's 40 years celebration,""" start="00:02:57.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""40 years since the GNU project was announced.""" start="00:03:00.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And it was very inspiring in general to meet""" start="00:03:05.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people. And I think EmacsConf should also,""" start="00:03:09.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, serve to inspire and sort of help""" start="00:03:12.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bring something to the type of work that many""" start="00:03:19.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of us are doing to improve Emacs,""" start="00:03:22.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""whether it's in package development or in""" start="00:03:24.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""core, to bring out the new and exciting ideas""" start="00:03:26.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and get people enthusiastic about Emacs,""" start="00:03:29.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about hacking on Emacs.""" start="00:03:34.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""This is my little attempt to contribute with""" start="00:03:38.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""let's say 2 things. I will first try to""" start="00:03:45.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""present how we do Emacs core development and""" start="00:03:49.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""why we've done some of the choices that we""" start="00:03:54.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have, because We have seen at times that""" start="00:03:58.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps people aren't always clear on this or""" start="00:04:02.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that aspect. So maybe this will be""" start="00:04:06.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""enlightening. I will also try to present some""" start="00:04:08.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""kind of vision for what Emacs could be with""" start="00:04:12.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""your help. Emacs is already very good,""" start="00:04:18.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""as we all know, but we could be even better.""" start="00:04:21.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That's the reality of any type of software""" start="00:04:27.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development. So the overall idea of this talk""" start="00:04:30.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is to tell you, if you're an Emacs list""" start="00:04:35.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""package developer today,""" start="00:04:38.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""why you should become an Emacs core""" start="00:04:40.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""developer, and the sort of steps that you""" start="00:04:44.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""might want to take to do that,""" start="00:04:47.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""or how you can help Emacs core development.""" start="00:04:49.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Even if you're just a user and you found a""" start="00:04:52.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bug, report it. Perhaps you have a feature""" start="00:04:54.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""request that you'd like to discuss.""" start="00:04:57.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think we need more interaction in general""" start="00:04:58.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""between Emacs core developers,""" start="00:05:02.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""typically on emacsdevil.gnu.org,""" start="00:05:05.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the mailing list that we use to coordinate""" start="00:05:08.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""our development efforts,""" start="00:05:12.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""between Emacs devil package developers and""" start="00:05:15.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""users, Because there is so much great stuff""" start="00:05:19.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""really going on in the community.""" start="00:05:22.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I think sometimes the step to core""" start="00:05:25.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development seems big and perhaps even a""" start="00:05:28.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""little bit scary. So I'm hoping to be able to""" start="00:05:32.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""help bridge that gap, even if just a little""" start="00:05:35.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bit. We need more people contributing to""" start="00:05:38.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs itself. And also a small disclaimer""" start="00:05:43.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""here, in this talk I will only be able to""" start="00:05:46.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""speak for myself, not for GNU or the Emacs""" start="00:05:49.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""project, even if it's like a little bit more""" start="00:05:53.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""official, but I will also try to give the""" start="00:05:56.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""view of the project where it makes sense to""" start="00:05:58.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""do so. Keep in mind, I'm only 1 of the""" start="00:06:01.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maintainers, the co-maintainer together with""" start="00:06:04.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Eli, and I can't just make decisions""" start="00:06:06.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""arbitrarily. In a sense,""" start="00:06:09.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm as a co-maintainer and trusted as a""" start="00:06:11.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""steward and trusted by,""" start="00:06:14.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of course, the GNU project,""" start="00:06:15.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but also by the community That we really""" start="00:06:16.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""can't just take decisions,""" start="00:06:22.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, arbitrarily. Even if it sometimes""" start="00:06:24.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps may seem so, or it may feel that way,""" start="00:06:27.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we really have to realize that we can't just""" start="00:06:31.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""push too much of just a personal agenda to""" start="00:06:35.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the extent that it doesn't line up with what""" start="00:06:39.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is best for eMacs going forward,""" start="00:06:41.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and the more overall picture of that.""" start="00:06:47.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So there are limitations that come with the""" start="00:06:50.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""job, if you like. So 1 question I often,""" start="00:06:52.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I actually got this week when I started a new""" start="00:07:00.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""assignment at work, and I got the question""" start="00:07:02.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""when I said I'm involved in Emacs""" start="00:07:06.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development. And then someone asked,""" start="00:07:08.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""oh, is Emacs still developed?""" start="00:07:10.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Isn't it done almost? And I answered to that,""" start="00:07:12.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yes, we are still around.""" start="00:07:16.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We're going on 40 years now as a software""" start="00:07:17.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""project. Not many projects actually can claim""" start="00:07:21.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that type of longevity.""" start="00:07:26.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But Emacs is among those few that can.""" start="00:07:29.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And of course, we have had some very exciting""" start="00:07:33.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""developments in recent versions.""" start="00:07:36.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think John just gave you an update on that.""" start="00:07:38.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But we had just some highlights out of many""" start="00:07:41.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""highlights that you could give,""" start="00:07:46.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""really, we got the TreeSetter support in""" start="00:07:48.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs 29 that we now need to sort of extend""" start="00:07:50.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and develop. We have merged EGLOT,""" start="00:07:54.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""so we have LSP support out of the box,""" start="00:07:56.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think is a huge improvement.""" start="00:07:59.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Native compilation, of course,""" start="00:08:01.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a big feature. I mean,""" start="00:08:02.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that was Andrea's job,""" start="00:08:06.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""really, for performance.""" start="00:08:08.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And it turns out that in many types of""" start="00:08:11.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""workloads and the types of stuff that people""" start="00:08:14.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are doing, it often matters.""" start="00:08:15.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And we're hoping to make that the default,""" start="00:08:18.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps already in Emacs 30.""" start="00:08:21.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So there are things that are happening that""" start="00:08:24.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""fundamentally make Emacs better at a very""" start="00:08:26.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""core level. So, of course,""" start="00:08:32.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""why wouldn't you want to be involved in such""" start="00:08:37.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""an exciting and, I think,""" start="00:08:41.679" video="mainVideo-core" id="subtitle"]]
+[[!template text="""dynamic project? How is Emacs developed?""" start="00:08:43.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Well, this is, I think,""" start="00:08:51.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps to some people,""" start="00:08:53.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a little bit more of a threshold,""" start="00:08:54.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if you like, because I think all of us know""" start="00:08:56.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""really that there is exciting and cool stuff""" start="00:08:59.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that is going on in Emacs and has been going""" start="00:09:02.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""on over the last couple of years and we'll""" start="00:09:06.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""see even more of that,""" start="00:09:08.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, going forward.""" start="00:09:10.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""1 thing is that communication still takes""" start="00:09:12.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""place over a mailing list in 2023.""" start="00:09:16.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we have emacsdevil at gnu.org,""" start="00:09:21.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and that's where we develop Emacs.""" start="00:09:24.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We use, we send patches back and forth,""" start="00:09:26.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we comment on patches.""" start="00:09:30.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And actually this workflow is very good,""" start="00:09:32.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if you're used to it. Because guess what?""" start="00:09:36.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""As Emacs users, we like doing everything we""" start="00:09:39.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""can in Emacs, especially the core tasks that""" start="00:09:42.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we're doing, such as developing Emacs itself.""" start="00:09:45.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Of course, you want to do that fully within""" start="00:09:50.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs. So we hack Emacs Lisp in Emacs,""" start="00:09:52.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we hack C in Emacs, we respond to emails also""" start="00:09:55.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""from Emacs, respond to bug reports,""" start="00:10:00.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""manage bug reports. We do all that stuff""" start="00:10:02.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""very, very smoothly. And it doesn't really""" start="00:10:05.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""matter in a sense, what is the medium?""" start="00:10:07.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It happens to be email.""" start="00:10:10.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Technically it could be anything,""" start="00:10:12.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but email really has that type of staying""" start="00:10:14.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""power where we've been able to use it for a""" start="00:10:16.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""long time. And this is how,""" start="00:10:19.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and we're still able to use it.""" start="00:10:22.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And this is how free software was always""" start="00:10:24.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""developed in the past.""" start="00:10:25.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Only in the last, let's say 10,""" start="00:10:26.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""15 years, We've had more development taking""" start="00:10:28.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""place perhaps on forges like GitHub,""" start="00:10:32.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""GitLab, whatever. But we are 1 of the""" start="00:10:35.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""holdouts. I mean, there are others,""" start="00:10:39.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of course, like the Linux kernel has mailing""" start="00:10:40.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""lists. They're not trying to do that scale""" start="00:10:42.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development on GitHub.""" start="00:10:44.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And this is not just because we're Luddites""" start="00:10:49.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that refuse to change.""" start="00:10:51.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We just have to do it in the old way,""" start="00:10:53.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""because it is the old way,""" start="00:10:55.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and that's the way it should be.""" start="00:10:57.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""No, it's actually because we,""" start="00:10:58.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""as core developers, the core development team""" start="00:11:01.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and the people already involved and doing""" start="00:11:03.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""tremendous, I mean large amounts of work in""" start="00:11:05.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs has very efficient workflows built up""" start="00:11:08.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""based on this. So of course,""" start="00:11:12.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean moving to something else is something""" start="00:11:15.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that we might like to do,""" start="00:11:18.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but we're not yet clear on how to do it""" start="00:11:20.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""exactly and what to move to.""" start="00:11:24.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So these are the types of discussions that""" start="00:11:26.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we're looking at. Can we still support a""" start="00:11:28.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""mailing, an email type workflow while moving""" start="00:11:30.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to something else? That would be 1 of the big""" start="00:11:34.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""ones. I think another thing that trips people""" start="00:11:36.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""up is that we used a bug tracker that,""" start="00:11:38.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, maybe some people,""" start="00:11:40.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I've heard people say it's archaic.""" start="00:11:42.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's called Debugs. I think maybe Debugs gets""" start="00:11:47.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a bit of a bad rap. I think that bugs is a""" start="00:11:49.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""good piece of software.""" start="00:11:52.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It wasn't developed in 2023.""" start="00:11:53.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, that's much as clear.""" start="00:11:55.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's a little bit older,""" start="00:11:57.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but it really is a workhorse of the Debian""" start="00:11:59.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""project, which is obviously a project that's""" start="00:12:01.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""developed in a very different way than Emacs""" start="00:12:03.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is. It's on a completely different scale,""" start="00:12:09.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of course, much bigger,""" start="00:12:11.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""many more developers, and so on.""" start="00:12:12.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I think the developers did a good job for""" start="00:12:15.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the time. But it might be showing its age,""" start="00:12:17.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps, in places. Perhaps,""" start="00:12:20.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""again, it's the email workflow.""" start="00:12:23.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And people see that as a little bit of a""" start="00:12:25.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""threshold. It seems alien.""" start="00:12:27.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's a little bit strange,""" start="00:12:30.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the types of workflows that you have there.""" start="00:12:32.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we are seeing some limitations with that""" start="00:12:35.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""box. And again, how do you report bugs?""" start="00:12:38.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Well, in a sense, it's easy.""" start="00:12:41.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You send an email to bug-gnu-emacs at gnu.org""" start="00:12:42.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and you copy in whatever you get from,""" start="00:12:47.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, report the EMAX bug or if you have,""" start="00:12:51.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, send mail set up locally,""" start="00:12:53.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just hit control C, control C and it's sent""" start="00:12:55.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to the bug tracker and that's fine.""" start="00:12:58.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But also I have to mention that there is this""" start="00:13:03.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""very good package on GNU Elpas.""" start="00:13:08.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""If you're ever trying to read the Emacs bug""" start="00:13:10.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""tracker or following along in Emacs""" start="00:13:13.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development, I really recommend install the""" start="00:13:16.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""package devbugs from GNU Elpa.""" start="00:13:19.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's so good. And again,""" start="00:13:22.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it's built on GNU, it's all integrated in""" start="00:13:24.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs, it's so much better than using the web""" start="00:13:26.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and so on. And if you really want to get into""" start="00:13:30.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it, you can download the bug tracker archives""" start="00:13:33.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and the mailing list archives,""" start="00:13:38.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and you can put them locally,""" start="00:13:39.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you can have them searchable,""" start="00:13:41.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and you can have whatever experience you""" start="00:13:42.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like. So, I mean, it's really a flexible""" start="00:13:44.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""workflow, but it's a bit strange,""" start="00:13:48.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps, to some people.""" start="00:13:51.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we also think supporting only this""" start="00:13:53.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""workflow might be a little bit too limiting.""" start="00:13:58.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we do want to move over to something like""" start="00:14:00.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""GitLab, perhaps Sourcehat or something""" start="00:14:04.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""similar. We've had a couple of discussions""" start="00:14:06.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about that over the last couple of years.""" start="00:14:10.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think even before that,""" start="00:14:14.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but that's how far back I've been involved,""" start="00:14:15.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and definitely it's come up occasionally.""" start="00:14:18.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think we are less far away than perhaps""" start="00:14:23.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""ever is how I would express that,""" start="00:14:27.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and in the sense that the remaining blockers""" start="00:14:30.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for just making the shift,""" start="00:14:36.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""let's say, are I think,""" start="00:14:38.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, first of all, we're talking about""" start="00:14:40.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""limitations, perhaps in the software,""" start="00:14:42.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""they're well defined, and they're not as""" start="00:14:44.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""amountable. I don't think they have to be in""" start="00:14:46.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""any case. We should be able to make some""" start="00:14:49.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""progress. The main thing that we're lacking""" start="00:14:50.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""now is not more discussion or more people""" start="00:14:54.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""prodding us to just please switch over.""" start="00:15:00.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""No, we're looking for volunteers.""" start="00:15:03.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""If you think that you,""" start="00:15:05.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, have what it takes to sort of come""" start="00:15:08.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in and help us do something like that and""" start="00:15:10.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""work together with us,""" start="00:15:14.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, to see what can be done,""" start="00:15:15.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps some, a few things would need to be""" start="00:15:16.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""changed in GitLab. I don't think anything""" start="00:15:20.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""huge, but maybe there are some patches to be""" start="00:15:23.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""written and sent upstream,""" start="00:15:26.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""or maybe we need to do some local hacks or""" start="00:15:27.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""whatever. If you wanna do that,""" start="00:15:30.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""please contact us, emacsdevil.""" start="00:15:33.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We'll be very happy to talk to you.""" start="00:15:35.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And then we can start making progress.""" start="00:15:38.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So I'm really hoping that that sound like""" start="00:15:40.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""will come into place. But we need to,""" start="00:15:42.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if we do switch over, we need to preserve the""" start="00:15:46.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""good parts of our email-based workflows.""" start="00:15:52.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So there are requirements there so that we""" start="00:15:54.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""can continue to do our job as maintainers,""" start="00:15:57.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if you like. Another thing is that we've""" start="00:16:01.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sometimes seen that there's a bit of a""" start="00:16:04.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""different culture perhaps on mailing lists""" start="00:16:08.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and on Emacs devil than what many people are""" start="00:16:11.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""used to, especially like you've used perhaps,""" start="00:16:15.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""many people might be in university and""" start="00:16:17.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""they've started using Emacs,""" start="00:16:20.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maybe got into a little bit of package""" start="00:16:23.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development and starting to get the ropes of""" start="00:16:25.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that and are very used to working on places""" start="00:16:29.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like GitLab or something like that,""" start="00:16:32.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""then the type of culture and way of""" start="00:16:35.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""communicating that we use in Emacs might be a""" start="00:16:38.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""little bit different. And of course,""" start="00:16:42.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it's different in the sense that mailing""" start="00:16:44.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""lists have always, I mean,""" start="00:16:47.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""let's say hacker culture,""" start="00:16:49.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""whatever you want to call it,""" start="00:16:51.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have always communicated in a particular way""" start="00:16:52.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""using mailing lists. So it's like succinct to""" start="00:16:54.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the point, perhaps I'm skipping a few""" start="00:16:58.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""pleasantries. And the idea is that you should""" start="00:17:00.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just use it in as effective way as possible,""" start="00:17:03.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""so that also the archives are usable.""" start="00:17:08.359" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And the other thing is that generally people""" start="00:17:11.319" video="mainVideo-core" id="subtitle"]]
+[[!template text="""involved in developing free software has to""" start="00:17:13.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""deal with a lot of incoming traffic,""" start="00:17:16.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""emails. They don't have the bandwidth if it's""" start="00:17:19.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""too much noise. You really need to be strict""" start="00:17:25.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to keep the signal to noise ratio high.""" start="00:17:28.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We have some weird terminology on the Emacs""" start="00:17:31.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""devil. People tell us,""" start="00:17:35.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we say sometimes install patches which""" start="00:17:38.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""basically means push to master or merge pull""" start="00:17:40.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""requests because we've used other version""" start="00:17:44.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""control systems in the past where it might""" start="00:17:46.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have made more sense to say install patches.""" start="00:17:48.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And then you sort of, I don't know,""" start="00:17:51.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I say it. Don't ask me why.""" start="00:17:52.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But it feels natural after a while.""" start="00:17:54.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You install a patch. It's clear what you""" start="00:17:56.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""mean. You don't have to worry about which""" start="00:17:57.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""branch it's on. So it's a little bit""" start="00:18:02.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""historical there. So there is some of that""" start="00:18:06.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""culture going on. It might be different.""" start="00:18:10.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We don't use emojis that much.""" start="00:18:11.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That's another thing. There is no like,""" start="00:18:14.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you can click the little like button at the""" start="00:18:16.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bottom of a comment or an email as you could""" start="00:18:20.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""on GitHub. But there are exceptions and it's""" start="00:18:25.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""not like someone will send you angry emails""" start="00:18:27.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if you use an emoji or something like that.""" start="00:18:29.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But it can come off as perhaps Because people""" start="00:18:31.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are pressed for time also when replying to""" start="00:18:34.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""all these emails. So it might come off as a""" start="00:18:37.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""little bit short, but that's just how it is.""" start="00:18:39.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think We have heard this comment before""" start="00:18:43.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that mailing lists are scary or Emacs devil""" start="00:18:46.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is scary or core development is scary.""" start="00:18:50.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I've touched a few of these points a""" start="00:18:54.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""little bit already. I think,""" start="00:18:58.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yeah, maybe a little bit.""" start="00:18:59.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""For example, we don't use emojis very short""" start="00:19:02.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in the communication. And we always use""" start="00:19:06.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""correct grammar and spelling.""" start="00:19:10.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We take that seriously because it's important""" start="00:19:13.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for being clear in your written communication""" start="00:19:15.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""when all you have is written communication.""" start="00:19:19.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's really important.""" start="00:19:22.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But it's not like If you come in there and""" start="00:19:26.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you don't know all these cultural rules and""" start="00:19:31.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""all these patterns, then you know you will We""" start="00:19:33.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""won't talk to you No Actually,""" start="00:19:36.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we try to be as welcoming as we can and and""" start="00:19:37.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""be mindful and you know people not Everyone""" start="00:19:41.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""has English as their native language,""" start="00:19:44.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for example. So perhaps someone says""" start="00:19:47.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something, and it might come off as rude,""" start="00:19:49.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but maybe it's just a direct translation.""" start="00:19:51.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we're trying to give a lot of whatever the""" start="00:19:53.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""native language is. So we try to give a lot""" start="00:19:56.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of leeway and just be a little bit,""" start="00:19:59.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, flexible and focus on,""" start="00:20:01.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, the key, key points,""" start="00:20:03.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""which are the technical things,""" start="00:20:04.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the technical decisions,""" start="00:20:06.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""technical arguments, rather than,""" start="00:20:07.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, getting bogged down in a lot of,""" start="00:20:09.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, personal, you know,""" start="00:20:11.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""discussions and flame wars.""" start="00:20:15.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So, I mean, there are these things to be""" start="00:20:19.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""aware of, you know, it's just a little bit""" start="00:20:21.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""different. I don't think it's anything huge.""" start="00:20:23.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I wouldn't be, you know,""" start="00:20:25.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think it would be sad if people felt too""" start="00:20:28.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""intimidated by that. It just is what it is.""" start="00:20:30.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And if you spend some time there,""" start="00:20:32.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you'll see how people generally communicate.""" start="00:20:33.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sometimes, there are a lot of people on""" start="00:20:38.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""EmacsDevil. It's a public mailing list.""" start="00:20:41.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""A lot of people just sign up to follow Emacs""" start="00:20:43.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development. Sometimes they chime in.""" start="00:20:46.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think this is in general a good thing.""" start="00:20:48.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think it should be a public mailing list.""" start="00:20:50.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sometimes this leads to weird situations from""" start="00:20:53.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just a point of view as an Emacs maintainer,""" start="00:21:00.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? I mean, I try to say something and it""" start="00:21:03.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""doesn't always say, oh,""" start="00:21:07.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""he's the maintainer or whatever.""" start="00:21:08.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So when I say something,""" start="00:21:10.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it should carry a little bit more weight than""" start="00:21:11.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""some unknown person from the internet who has""" start="00:21:13.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""an opinion and decided to send it to""" start="00:21:16.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""EmacsDevil. So it's good to be a little bit""" start="00:21:18.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""aware of who is a little bit more involved""" start="00:21:21.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""with the project. I would check out the""" start="00:21:23.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maintainers file. I would check,""" start="00:21:25.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""see in the Git log, do these people actually""" start="00:21:27.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have any anything in core?""" start="00:21:31.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And if not, maybe, you know,""" start="00:21:33.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there, we won't really,""" start="00:21:35.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""even if they express an opinion very""" start="00:21:39.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""strongly, even if they're a little bit rude,""" start="00:21:41.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maybe they're not even involved in Emacs""" start="00:21:42.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development. I mean, often,""" start="00:21:44.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's the case we have some people,""" start="00:21:46.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""unfortunately, at times,""" start="00:21:48.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we have random people from the internet come""" start="00:21:50.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in on the mailing list and they're just a""" start="00:21:52.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""little bit rude, or they say an opinion""" start="00:21:54.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's not exactly helpful.""" start="00:21:57.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think you need to be aware.""" start="00:22:00.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, these things happen in any forum,""" start="00:22:02.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but it happens on EmacsDevO as well.""" start="00:22:04.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So just be a little bit aware of who you're""" start="00:22:07.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""talking to, what people are doing.""" start="00:22:10.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It can help to Check the archives,""" start="00:22:13.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""see who writes what, and so on.""" start="00:22:16.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But it's not something that I think is a huge""" start="00:22:20.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""problem. It is just, again,""" start="00:22:23.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something to be aware of.""" start="00:22:24.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We have the new kind of communication""" start="00:22:25.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""guidelines in place, which basically says""" start="00:22:28.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that you should be nice to people and stay""" start="00:22:30.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""focused on the technical problem,""" start="00:22:33.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""try to see things from another person's point""" start="00:22:36.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of view, this kind of stuff.""" start="00:22:38.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we're really trying to be as inclusive as""" start="00:22:39.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""possible and just stay correct in general.""" start="00:22:42.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And sometimes, I mean,""" start="00:22:46.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""not everyone, it's a public list.""" start="00:22:48.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We moderate it, but not to a huge extent,""" start="00:22:50.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? So sometimes people get away with a""" start="00:22:52.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""little bit of perhaps stretching the""" start="00:22:57.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""boundaries of what might be included in the""" start="00:23:02.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""kind communication guidelines,""" start="00:23:04.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sort of the fences and limitations of that.""" start="00:23:08.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I would just ignore that.""" start="00:23:11.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sometimes it happens that we,""" start="00:23:13.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""as happens in any forum,""" start="00:23:15.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""by the way, you just, we have these very big""" start="00:23:17.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""threads. We start discussing something else.""" start="00:23:19.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Perhaps you send us a patch and it just""" start="00:23:21.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""devolves into us discussing something""" start="00:23:24.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""completely different. And of course I partake""" start="00:23:26.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in that, not better than anyone else,""" start="00:23:28.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but it just happens. I mean,""" start="00:23:30.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it's not your fault. It's just what happens""" start="00:23:32.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sometimes in forums, and don't mind that.""" start="00:23:34.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And it's a little bit easier to do that in""" start="00:23:37.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""emails, because you just change the subject,""" start="00:23:39.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and now it's supposed to be a different""" start="00:23:41.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""thread, but it comes as replies usually to""" start="00:23:43.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you, which wouldn't happen perhaps in a""" start="00:23:45.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""different workflow. So it's something to be""" start="00:23:48.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""aware of as well. Another thing is that,""" start="00:23:49.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of course, in written communication,""" start="00:23:53.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""tone doesn't always come across.""" start="00:23:55.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""If someone sounds negative,""" start="00:23:57.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sometimes it's just them being neutral.""" start="00:23:59.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sometimes you get no replies.""" start="00:24:01.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You send something, you get no replies.""" start="00:24:05.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And this could mean, actually it could mean,""" start="00:24:07.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yeah, what you said was uncontroversial.""" start="00:24:09.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We think it was a good idea.""" start="00:24:11.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""No 1 replied to it because either someone""" start="00:24:13.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""else would reply or just there was no need to""" start="00:24:16.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""reply because, yeah, why not?""" start="00:24:18.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So but if you do send a patch and you don't""" start="00:24:21.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""get an answer, wait. I mean,""" start="00:24:24.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""don't wait 1, 2 days. Maybe we're busy or""" start="00:24:26.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we're sick or whatever.""" start="00:24:29.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Wait 2 weeks. It's fine to just send it""" start="00:24:30.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""again. If you send the patch to EmacsDevil,""" start="00:24:32.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""send it to the bug mailing list,""" start="00:24:35.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""because we lose track of stuff on EmacsDevil.""" start="00:24:37.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That's just the reality of it.""" start="00:24:39.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So if you propose making a change and no 1""" start="00:24:43.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""commented, feel free to ask us again if a""" start="00:24:46.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""patch would be welcome and we will clarify.""" start="00:24:48.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Bug reports, unfortunately,""" start="00:24:53.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if you get no answer, I mean,""" start="00:24:54.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we do have a limited amount of time to work""" start="00:24:56.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""on bugs. If you're looking to get started in""" start="00:24:59.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs development, this is an excellent way""" start="00:25:02.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to start getting involved.""" start="00:25:05.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""What I'd recommend is start looking into""" start="00:25:07.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bugs. I'd install that bug,""" start="00:25:09.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'd see about the mailing workflow and set""" start="00:25:11.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that up a little bit, or not.""" start="00:25:13.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's up to you. You can reply to an email""" start="00:25:16.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""without setting any of that stuff up.""" start="00:25:17.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But just help us try out your bugs,""" start="00:25:20.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""send patches, do that type of stuff.""" start="00:25:22.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, that's an excellent way,""" start="00:25:24.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and extremely welcome.""" start="00:25:26.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We're so happy to see when people pick up bug""" start="00:25:27.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""reports that have been left by the wayside""" start="00:25:30.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and just fix them, send us a patch,""" start="00:25:32.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and we can just apply it.""" start="00:25:36.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So that's really your starting point if you""" start="00:25:37.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""want to get involved in Emacs core""" start="00:25:40.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development. I also want to say that be aware""" start="00:25:44.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that you know Emacs is the editor of the GNU""" start="00:25:50.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""operating system and this makes the project""" start="00:25:54.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""political a little bit whether you like it or""" start="00:25:56.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""not. Luckily the you know the politics are""" start="00:25:58.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""limited enough that we can find broad""" start="00:26:01.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""agreement on it. So we want to promote,""" start="00:26:03.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we want to create free software.""" start="00:26:05.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That's sort of it. That's it.""" start="00:26:08.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And there shouldn't be too much more to it,""" start="00:26:11.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? We want to rid the world of""" start="00:26:13.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""proprietary software as an evil thing.""" start="00:26:15.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Ideally, all software should be free.""" start="00:26:19.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But these are just the goals of the free""" start="00:26:23.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""software movement. So we're very strict with""" start="00:26:25.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""some things. We don't recommend non-free""" start="00:26:27.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""proprietary software. Of course,""" start="00:26:30.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we have no problem mentioning Microsoft""" start="00:26:31.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Windows because everyone knows that there's""" start="00:26:33.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this obscure operating system developed in""" start="00:26:35.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""California that some people insist on using.""" start="00:26:39.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We use, many of us use GNU plus Linux.""" start="00:26:42.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Actually, some core developers happen to use""" start="00:26:45.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""exactly, you know, not GNU plus Linux,""" start="00:26:47.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but that's fine as well,""" start="00:26:50.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? We take a little bit of a pragmatic""" start="00:26:52.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""view, but we don't wanna do,""" start="00:26:54.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""what we don't wanna do is promote like this""" start="00:26:56.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""small, unknown piece of non-free software and""" start="00:26:59.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sort of help the non-free software in that""" start="00:27:04.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""way. That's where we try to draw the line,""" start="00:27:08.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, in just expressing just a few""" start="00:27:12.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""words. So that's 1 thing.""" start="00:27:15.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We're, I think, very pragmatic on this point,""" start="00:27:18.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but we do try to follow the principle.""" start="00:27:21.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We also require copyright assignment.""" start="00:27:25.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think in general,""" start="00:27:27.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the argument is that we require a copyright""" start="00:27:30.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""assignment, because that makes it easier to""" start="00:27:34.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""defend the legal status of the GNU Emacs""" start="00:27:39.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""source code. So if there's ever a legal""" start="00:27:43.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""battle, the idea is that if it's only 1""" start="00:27:45.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""copyright holder and you have a GPL""" start="00:27:48.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""violation, i.e. Someone might change Emacs""" start="00:27:50.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and then distribute it as proprietary""" start="00:27:54.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""software or something nasty like that,""" start="00:27:56.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""then we have an easier way of defending it in""" start="00:27:58.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""court if there is only 1 copyright holder.""" start="00:28:00.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we assigned copyright to the Free Software""" start="00:28:02.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Foundation. And I think there,""" start="00:28:04.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, sometimes people oppose this for""" start="00:28:09.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""various reasons, you know,""" start="00:28:12.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people see it as, you know,""" start="00:28:13.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maybe some people might say,""" start="00:28:15.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, it's ideological,""" start="00:28:16.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, who goes, you know,""" start="00:28:18.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the FSF goes too far with this.""" start="00:28:19.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And, and, I mean, that's fine.""" start="00:28:21.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You that's, that's an opinion.""" start="00:28:23.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And the there, then other people are more""" start="00:28:25.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""practical, you know, it's just,""" start="00:28:28.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's a hassle, basically,""" start="00:28:30.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we don't want to sign these papers.""" start="00:28:31.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I'm not really here to tell anyone that""" start="00:28:33.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""they're wrong. I've expressed my views on""" start="00:28:35.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this in the past. But just for now,""" start="00:28:37.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm just very practical for the purposes of""" start="00:28:40.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this talk. So I signed the papers.""" start="00:28:43.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's Maybe it didn't take me many minutes.""" start="00:28:46.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And in most cases, it shouldn't really.""" start="00:28:49.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And it's something that I found worth doing,""" start="00:28:52.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""because that way I could focus on continuing""" start="00:28:55.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to improve Emacs instead of discussing the""" start="00:28:58.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""finer points of copyright law.""" start="00:29:01.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You could write patches and stuff,""" start="00:29:03.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that kind of thing. So,""" start="00:29:05.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, this is something that trips people""" start="00:29:06.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""up and, you know, it's fine that people have""" start="00:29:08.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""different opinions on it and so on,""" start="00:29:11.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but I think for now that's just something to""" start="00:29:14.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""be aware of. So that's,""" start="00:29:19.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, I mean, there's much more that could""" start="00:29:23.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""be said. Ideally, I would like to have a""" start="00:29:26.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""practical part to this talk as well.""" start="00:29:27.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I wanted to say something about the""" start="00:29:32.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""packages in Emacs. Because as we know,""" start="00:29:34.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, Emacs is the, I can't remember what""" start="00:29:37.159" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it says, it's like a visual,""" start="00:29:40.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there's in the manual it says,""" start="00:29:42.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""oh, Emacs is an advanced text editor.""" start="00:29:43.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's visual, which, I mean,""" start="00:29:46.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it's not ed, the whole Unix ed,""" start="00:29:47.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""so that's cool. It's also customizable,""" start="00:29:50.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? So that's always been a thing.""" start="00:29:53.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And what makes Emacs so amazing.""" start="00:29:57.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And some people described it as,""" start="00:30:00.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I can't remember who said that there has been""" start="00:30:01.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a Cambrian explosion of packages in Emacs.""" start="00:30:03.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think that's true.""" start="00:30:09.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, if you look at something like Melpa,""" start="00:30:10.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think they have over 5,000""" start="00:30:12.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""packages now. It's like truly impressive,""" start="00:30:13.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just an immense amount of work and immense""" start="00:30:16.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""amount of packages. And really,""" start="00:30:18.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this shows the strength,""" start="00:30:22.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, of the Emacs community,""" start="00:30:24.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of Emacs itself as an idea.""" start="00:30:26.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think it's also just tremendous work""" start="00:30:29.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's been done by the maintainers.""" start="00:30:31.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And they do get a lot of recognition for""" start="00:30:33.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that. And rightly so, in my opinion.""" start="00:30:36.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's done so much, I think,""" start="00:30:39.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for our community. The other package archive""" start="00:30:41.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that we have is GNU-ELPA.""" start="00:30:44.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And that's been enabled since when packages""" start="00:30:46.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""first got introduced back in,""" start="00:30:49.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, Emacs, was it 23?""" start="00:30:51.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And probably, I mean, the main thing why a""" start="00:30:55.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""package goes onto GNU Elpa is,""" start="00:30:59.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, it should be installable out of the""" start="00:31:01.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""box. So, I mean, that's a big benefit in a""" start="00:31:04.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sense. It's also a requirement for GNU Alpa""" start="00:31:07.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that the copyright, again,""" start="00:31:10.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just as GNU Emacs, the copyright is assigned""" start="00:31:12.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to the Free Software Foundation.""" start="00:31:15.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And some very hugely popular packages,""" start="00:31:17.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like YaSnippet, for example,""" start="00:31:20.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is on GNU Alpa. And we were discussing this""" start="00:31:21.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just 2 months back. And Joe Tavora,""" start="00:31:25.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I can't say his name, G-O-A-O,""" start="00:31:30.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Tavora. He made the point that he's never""" start="00:31:33.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""seen a problem in any of his packages with""" start="00:31:36.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""copyright assignment in particular.""" start="00:31:40.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's never been a problem to get people to be""" start="00:31:42.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""involved in the development of those packages""" start="00:31:44.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just because of the copyright assignment""" start="00:31:46.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""requirements. So I mean,""" start="00:31:49.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's his perspective on that.""" start="00:31:51.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think it was worth relating his""" start="00:31:54.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""experience here. So we also have this new""" start="00:32:00.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""package archive called non-GNU-alpha,""" start="00:32:06.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""which is now enabled by default as well.""" start="00:32:08.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think for practical purposes,""" start="00:32:12.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you could get into it a little bit more,""" start="00:32:14.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, why we created non-NUELPA,""" start="00:32:16.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and perhaps that's something we can discuss""" start="00:32:19.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in the Q&A section. For practical purposes,""" start="00:32:23.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the main thing to be aware of is,""" start="00:32:26.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yes, we don't promote non-free software on""" start="00:32:28.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there, And we also don't have the copyright""" start="00:32:30.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""assignment requirement.""" start="00:32:36.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think this is probably for new packages.""" start="00:32:41.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's generally better if they go to GNU Elpa,""" start="00:32:43.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if there is any type of idea or ambition""" start="00:32:48.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that, you know, at some point it would be""" start="00:32:51.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""good or it might be good to eventually have""" start="00:32:53.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""some type of functionality like this shipped""" start="00:32:56.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""with Emacs itself. So I think this is""" start="00:32:58.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something that perhaps package authors could""" start="00:33:01.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""also be aware of, that occasionally we do""" start="00:33:04.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bring in functionality from GNU Elpa into""" start="00:33:07.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""core Emacs because we feel that it should be""" start="00:33:09.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""better integrated with Emacs itself.""" start="00:33:12.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So if I could give any type of""" start="00:33:16.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""recommendation, of course,""" start="00:33:18.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you do. These are your packages,""" start="00:33:19.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? In an ideal world,""" start="00:33:22.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we would only use this for legacy packages""" start="00:33:25.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""where people contributed in the past,""" start="00:33:28.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but you didn't worry about the copyright""" start="00:33:30.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""assignment. But where possible,""" start="00:33:32.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think there is benefit in putting it on GNU""" start="00:33:34.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Elpa. And I wanted to end a little bit on a""" start="00:33:37.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""more, you know, the more opinionated perhaps""" start="00:33:42.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""part of my talk and not just talk about""" start="00:33:45.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""processes. I see that I'm running out of""" start="00:33:47.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""time. So I will say Emacs is hackable.""" start="00:33:49.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think that's a blessing and a curse.""" start="00:33:51.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And if you think about something like,""" start="00:33:54.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the types of choices that you can make,""" start="00:33:59.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""perhaps when you implement something,""" start="00:34:01.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""There are choices, different choices between""" start="00:34:03.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something like common list,""" start="00:34:06.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""which is like bigger, more batteries""" start="00:34:07.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""included, and something like scheme,""" start="00:34:09.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""which is more minimal.""" start="00:34:11.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think we have some of those,""" start="00:34:12.239" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, this kind of tension also in the""" start="00:34:13.679" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs itself. What should be in Emacs core?""" start="00:34:16.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Should we have a lean Emacs core?""" start="00:34:18.159" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Should we have more stuff in Emacs core?""" start="00:34:19.699" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think these are good discussions to""" start="00:34:22.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have. And there are various challenges that""" start="00:34:26.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are associated with each of those choices.""" start="00:34:29.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think what will never change is that Emacs""" start="00:34:32.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is hackable. Emacs is customizable.""" start="00:34:35.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""This is the key strength.""" start="00:34:37.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""This is why we love and use Emacs.""" start="00:34:38.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think fundamentally,""" start="00:34:40.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""whether you do it a lot or not,""" start="00:34:42.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this is what at core is bringing you that""" start="00:34:44.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""amazing user experience.""" start="00:34:47.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""However, the flip side of that sometimes is""" start="00:34:50.739" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that it's so easy to hack Emacs so that we""" start="00:34:53.199" video="mainVideo-core" id="subtitle"]]
+[[!template text="""hack around bugs instead of fixing them.""" start="00:34:56.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We do some tweak and our customers say,""" start="00:34:58.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""okay, this is a little bit broken,""" start="00:35:00.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Let me just fix it. I'll put an advice on""" start="00:35:01.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this function. I'll do this customization.""" start="00:35:03.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Or we accept limitations in Emacs core.""" start="00:35:06.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think it's fine.""" start="00:35:09.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, this will never change.""" start="00:35:12.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That will always be core to what Emacs is,""" start="00:35:13.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? However, I think that the flip side of""" start="00:35:16.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that is that I think sometimes we could be""" start="00:35:20.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""better at just taking those few extra steps""" start="00:35:22.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to also make Emacs better itself and solve""" start="00:35:26.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this for all users. And I think if we can""" start="00:35:29.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""build a little bit more of a culture like""" start="00:35:31.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that, I mean, we already have that culture to""" start="00:35:33.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a large extent, don't get me wrong,""" start="00:35:35.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we do, but if we can get a little bit more of""" start="00:35:37.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that culture, let's get that into core,""" start="00:35:39.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""let's get that problem fixed,""" start="00:35:41.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that frustration. I can tell you that,""" start="00:35:43.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I just started a new assignment at work,""" start="00:35:47.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I already told you, so I'm going to write a""" start="00:35:48.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""lot of Python, okay? So I need to keep track""" start="00:35:51.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of something called virtual environments,""" start="00:35:54.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and that's just a way to install these""" start="00:35:56.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""dependencies just locally per directory or""" start="00:35:58.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""per repository kind of thing.""" start="00:36:01.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I've used various packages for that.""" start="00:36:03.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""There are like 4 packages,""" start="00:36:05.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""5 packages, maybe. And 1 is called VM,""" start="00:36:07.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and 1 is called VirtualM,""" start="00:36:10.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and 1 is called Python-VM.""" start="00:36:11.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And now I'm using, you know,""" start="00:36:15.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm using a different 1.""" start="00:36:16.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And it's just a little bit,""" start="00:36:18.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""why doesn't this work out of the box in""" start="00:36:20.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs? Why? I don't think there's a really""" start="00:36:22.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""good fundamental good reason why something""" start="00:36:25.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like that doesn't work in Emacs.""" start="00:36:28.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So I think that's really,""" start="00:36:30.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, I'm sure there are other things like""" start="00:36:32.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that, other fundamental features.""" start="00:36:35.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Why is it that for the last 20 years,""" start="00:36:37.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we've shipped Emacs with no PHP support out""" start="00:36:39.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of the box? I mean, I'm not a PHP programmer.""" start="00:36:43.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I don't really have a lot of love for PHP,""" start="00:36:47.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""let's say. To me, it's a very funny-looking""" start="00:36:51.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""language, but okay, still it's been very""" start="00:36:57.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""popular. Why haven't we supported it?""" start="00:37:00.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, it's just strange.""" start="00:37:02.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You install Emacs on some machine,""" start="00:37:03.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you open a PHP file, you get fundamental""" start="00:37:05.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""mode. It's not the best user experience,""" start="00:37:07.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in my opinion. So I think there are some""" start="00:37:09.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""things where we really could do a little bit""" start="00:37:12.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""better. And I'm seeing this all the time.""" start="00:37:15.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Just this week, this new assignment was""" start="00:37:20.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""interesting. There was this Emacs user.""" start="00:37:22.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Turns out we have the exact same hack in both""" start="00:37:24.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of our init files. So we had created the""" start="00:37:26.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""exact same mode for DIRED,""" start="00:37:29.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""actually, to hide dot files.""" start="00:37:32.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You know, dot something is supposed to be""" start="00:37:33.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""hidden on a Unix system.""" start="00:37:36.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So we had DERED hide dot files mode to just""" start="00:37:40.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""hide them. And why isn't that in DERED?""" start="00:37:43.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Or should it be in DERED?""" start="00:37:47.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Should it be a package on the new Elpa?""" start="00:37:48.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Where should it be? Why is it just local""" start="00:37:51.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""hack? Should it be on a wiki somewhere?""" start="00:37:53.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, sometimes that's the correct answer.""" start="00:37:54.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sometimes the correct answer is,""" start="00:37:56.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yes, it should be a package.""" start="00:37:59.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sometimes the correct answer is,""" start="00:38:00.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yes, it should really be in core.""" start="00:38:02.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So what I want to promote is more like,""" start="00:38:04.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""let's just take a step back and just ask""" start="00:38:06.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yourself, what's the best solution if we look""" start="00:38:08.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""at the overall picture?""" start="00:38:11.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Should I hack this into my configuration?""" start="00:38:12.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""In many cases, yes, that's the right thing to""" start="00:38:14.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""do. We don't want to proliferate just random""" start="00:38:16.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""solutions all over Emacs for no reason.""" start="00:38:19.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But sometimes we want to fix it once and for""" start="00:38:22.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""all. We want to do that in core.""" start="00:38:24.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So you could send stuff like that to us as""" start="00:38:27.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""patches or as packages.""" start="00:38:30.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And we can discuss a little bit about where""" start="00:38:31.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""should we solve this? What's the right level""" start="00:38:34.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of abstraction? I'm seeing that I'm running""" start="00:38:37.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""out of time. I had an Emacs wish list.""" start="00:38:41.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Maybe we can take more of that in the Q&A.""" start="00:38:43.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I want to say, like,""" start="00:38:47.170" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in VS Code, you just start VS Code.""" start="00:38:49.226" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You open a Python file,""" start="00:38:50.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and you get, like, hey,""" start="00:38:51.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are you trying to use Python?""" start="00:38:53.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Click here, install Python.""" start="00:38:54.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You get all the nice things out of the box.""" start="00:38:56.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And my argument is, why can't we have more of""" start="00:38:59.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that in Emacs? I don't think it's necessarily""" start="00:39:01.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""hard, but it does take a little bit of work.""" start="00:39:04.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""The challenges here are more social,""" start="00:39:06.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, than technical.""" start="00:39:09.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I think it's worth doing,""" start="00:39:10.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""because it's not just Python.""" start="00:39:12.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's just There are always these small things""" start="00:39:14.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""where it just really should work,""" start="00:39:16.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and that would be a much better experience.""" start="00:39:18.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And then you could customize not that thing""" start="00:39:20.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that should just work,""" start="00:39:23.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but you could customize more fun and""" start="00:39:24.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""exploratory things instead of people""" start="00:39:27.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""reinventing the wheel over and over again.""" start="00:39:29.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So I'm very excited about what's happening in""" start="00:39:31.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs. I think we should be proud of what""" start="00:39:33.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we've accomplished. It's so many things to""" start="00:39:35.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""many different people,""" start="00:39:37.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""an environment for hacking,""" start="00:39:38.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just a productivity system.""" start="00:39:40.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Other sees us as a different way of looking""" start="00:39:41.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""at computing, you know,""" start="00:39:44.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the embodiment of the ideal of the Lisp""" start="00:39:45.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""machine if you want to talk big words and""" start="00:39:47.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""stuff like that. And of course,""" start="00:39:49.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs are all those things and so many more.""" start="00:39:50.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And that's what makes Emacs so amazing.""" start="00:39:53.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And in some sense, we should be care that""" start="00:39:56.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people are satisfied with using lesser text""" start="00:40:00.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""editors. How could they be happy running""" start="00:40:03.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that? I mean, I'm sure it's fine,""" start="00:40:05.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but it sure as hell isn't Emacs.""" start="00:40:07.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So don't we owe it to the world and to them""" start="00:40:09.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and to ourselves to make a great Emacs.""" start="00:40:12.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That will be my ending words.""" start="00:40:14.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I hope to see you all in the Q&A.""" start="00:40:16.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Thank you all. And thank you so much,""" start="00:40:18.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Stefan. That was a wonderful presentation.""" start="00:40:22.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I just want to give you the opportunity.""" start="00:40:24.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You said that you perhaps had,""" start="00:40:27.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Not the practical stuff,""" start="00:40:30.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but you wanted to do a demo or something like""" start="00:40:31.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""this? What did you mention exactly?""" start="00:40:33.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, we didn't have time really.""" start="00:40:36.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yes, I'm not sure. I didn't prepare anything""" start="00:40:38.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""so that we can do it live.""" start="00:40:42.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But maybe for next time,""" start="00:40:43.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I will do a demo. Don't hold me to it.""" start="00:40:44.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Or someone else could.""" start="00:40:49.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That would be really amazing.""" start="00:40:51.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Right. Well, thank you,""" start="00:40:53.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Stéphane. You've been already into so much""" start="00:40:54.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""detail of so many... So much of the intricacy""" start="00:40:56.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of the maintenance. And as someone who's been""" start="00:41:01.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""95% of the time developing for Melpa,""" start="00:41:05.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I feel like this talk was very geared to a""" start="00:41:08.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""lot of us who tend to experiment in this""" start="00:41:11.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Cambrian stage of Emacs evolution,""" start="00:41:13.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""where we get to deploy a lot of creativity""" start="00:41:16.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""whilst also feeling pretty agile in a way we""" start="00:41:20.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""come up with solutions to problems.""" start="00:41:24.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But you've won me over with your discussion""" start="00:41:25.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about potentially moving some of this stuff""" start="00:41:29.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to core. And I think this particularly""" start="00:41:31.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""resonated at the end with this tension that""" start="00:41:33.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you feel about problems that you encounter.""" start="00:41:36.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Do you fix them in Melpa?""" start="00:41:39.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Do you fix them in core?""" start="00:41:40.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Is it not something that is supposed to be an""" start="00:41:42.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""option? I love this tension and it's""" start="00:41:43.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something that we've been exploring for the""" start="00:41:46.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""last 3 edition of Emacs Cons.""" start="00:41:48.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's really what is to be the interaction""" start="00:41:49.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""between this pool of very clever developers""" start="00:41:52.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""who are on Melpa but who are perhaps a little""" start="00:41:55.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bit afraid of joining Core and the wonderful""" start="00:41:58.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""job that you do that, yes,""" start="00:42:00.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""seems archaic from the outside,""" start="00:42:02.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but as you've been at length today in your""" start="00:42:05.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""presentation, is actually just a better way""" start="00:42:07.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to work, a very pragmatic way to get a lot of""" start="00:42:09.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""work done. So, thank you so much for your""" start="00:42:11.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""presentation. Thank you,""" start="00:42:13.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Leo. So, we have about 12 minutes now to go""" start="00:42:15.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""through as many questions as possible.""" start="00:42:20.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You have obviously had a lot of questions""" start="00:42:22.950" video="mainVideo-core" id="subtitle"]]
+[[!template text="""throughout your presentation.""" start="00:42:26.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Do you have access to the pad,""" start="00:42:27.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""or do you want me to share the question and""" start="00:42:28.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""feed them to you? Yes,""" start="00:42:30.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""could you start with sharing them?""" start="00:42:32.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'll see if I can get it on my screen.""" start="00:42:34.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sure, I'll do that. Please let me know if my""" start="00:42:36.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""microphone is clipping because my OBS setup""" start="00:42:39.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sometimes is a little bit janky.""" start="00:42:42.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I'm going to try to read the questions""" start="00:42:44.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for now. It's tipping,""" start="00:42:46.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I can hear you okay. Okay,""" start="00:42:48.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""so bear with the clicking,""" start="00:42:51.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we'll switch as soon as possible to Stefan""" start="00:42:54.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""reading the question, but I'll read the first""" start="00:42:56.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""1. Can you tell us some about your,""" start="00:42:58.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""can you tell us some more I assume,""" start="00:43:02.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about your background with Emacs development""" start="00:43:04.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and programming in general,""" start="00:43:06.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""your professional work possibly?""" start="00:43:07.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, sure. Okay, I studied computer science""" start="00:43:11.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""at university. I started programming on a""" start="00:43:15.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Commodore 64. I started with BASIC and then I""" start="00:43:19.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""did a couple of versions of BASIC as a kid.""" start="00:43:23.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But then really things took off when I""" start="00:43:27.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""started using GNU Linux.""" start="00:43:31.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I can't remember which year,""" start="00:43:34.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maybe it was early 2000,""" start="00:43:35.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something like that, late.""" start="00:43:38.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""No, it must've been before that actually,""" start="00:43:39.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""because I remember I was 14.""" start="00:43:42.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, okay, so let's say 1999,""" start="00:43:44.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""1998, somewhere there around.""" start="00:43:46.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Then I started with Perl,""" start="00:43:48.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and I did Perl for a good long while.""" start="00:43:50.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I learned C++, I learned C,""" start="00:43:52.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I did all kinds of stuff,""" start="00:43:55.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and then I went to university,""" start="00:43:56.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""computer science, and I've been working,""" start="00:43:59.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, in various roles.""" start="00:44:01.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Right now, I'm coding Python.""" start="00:44:04.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Up until last Friday, I was writing firmware""" start="00:44:06.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in C for a small microcontroller,""" start="00:44:09.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""which is pretty different than writing""" start="00:44:12.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Python, that's for sure.""" start="00:44:15.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So yeah, so that's a little bit about me.""" start="00:44:17.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I got interested in free software,""" start="00:44:19.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, also at a very young age.""" start="00:44:22.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So, I mean, I've been following these,""" start="00:44:24.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, ideological discussions and""" start="00:44:26.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""debates, read all this stuff by Richard""" start="00:44:29.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Stallman and so on and so forth.""" start="00:44:31.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But yeah, that's it. Great,""" start="00:44:33.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""thank you. I'll move on to the next question.""" start="00:44:37.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You'll have to listen to me because if I""" start="00:44:41.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""start sharing my screen again,""" start="00:44:42.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we're going to get some clicks.""" start="00:44:45.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So the question. Do you think that 1 day""" start="00:44:48.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there will be a native I'll start again,""" start="00:44:50.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sorry. Do you think that 1 day there will be""" start="00:44:53.930" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a native... I'll start again,""" start="00:44:54.079" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sorry. Do you think that 1 day there will be""" start="00:44:54.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a native graphical web browser in Emacs or is""" start="00:44:56.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it kind of against its philosophy and""" start="00:44:59.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""architecture? So will we stick just with EWW""" start="00:45:00.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and EAF or similar workaround tricks?""" start="00:45:04.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So if, I don't know if people have seen,""" start="00:45:08.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there is a talk by, I think,""" start="00:45:11.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Perry Metzger, is that the name?""" start="00:45:13.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sorry if I got the name wrong.""" start="00:45:15.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Perry Metzger, I think.""" start="00:45:17.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's like, he marks a text editor for the""" start="00:45:18.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""next 40 years. He makes an excellent point""" start="00:45:20.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there that 1 of the things that we need to do""" start="00:45:22.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is really get a proper HTML rendering in""" start="00:45:24.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs. It's like a dream at this point.""" start="00:45:27.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""No 1 is actively working on something like""" start="00:45:30.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that. I think that, you know,""" start="00:45:32.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there, first of all, you'd need to rewrite""" start="00:45:34.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the display engine. So that's a big job.""" start="00:45:36.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It is. I'm not saying,""" start="00:45:39.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, it can't be done,""" start="00:45:41.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but you need to start there.""" start="00:45:43.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Right? Second of all, you need to think""" start="00:45:44.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about, you know, with all the Emacs Lisp code""" start="00:45:47.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""out there, is really assuming,""" start="00:45:50.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, 1 paradigm, which is that you have""" start="00:45:52.090" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a square, and basically you have columns and""" start="00:45:54.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you have rows, and everything is in there,""" start="00:45:57.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""even images, is basically in a column,""" start="00:45:59.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, in a column on a row somewhere.""" start="00:46:02.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Whereas, you know, when you just start doing""" start="00:46:05.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the more web stuff and web rendering,""" start="00:46:07.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you already have like a seaplane.""" start="00:46:10.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You have different types of geometries that""" start="00:46:12.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are possible. And what does it mean to go to""" start="00:46:14.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the logical next line in that kind of sense?""" start="00:46:16.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean these types of things I'm not saying""" start="00:46:19.370" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it can't be done. I'm saying there are there""" start="00:46:21.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are definitely some challenges there It would""" start="00:46:23.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""be amazing I mean, but we need someone with""" start="00:46:27.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, the inclination and talent I think""" start="00:46:30.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to work on that's a job posting if I've ever""" start="00:46:33.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""had 1. So good luck to whoever's willing to""" start="00:46:37.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""apply for this 1. I think it's a tough 1.""" start="00:46:40.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It is, yes. Go on. Okay,""" start="00:46:43.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""do you happen to have the questions in front""" start="00:46:46.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of you? Can I just read them to you so that""" start="00:46:48.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you can also have a feedback in front of you?""" start="00:46:50.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yes, I have the pad here.""" start="00:46:54.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Okay, cool. So I'll read the next question""" start="00:46:57.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and this way I don't have to worry too much""" start="00:46:58.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about me butchering every word in the""" start="00:47:00.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sentence. So, Emacs development and""" start="00:47:02.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""communication still is very much focused on""" start="00:47:04.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""email mailing lists. I like this,""" start="00:47:06.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but what do you think about introducing other""" start="00:47:08.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""channels for talking to users,""" start="00:47:10.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like the Emacs project community could set up""" start="00:47:12.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a master on instance of its own,""" start="00:47:15.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for instance? I think from the point of view""" start="00:47:17.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of the Emacs core team,""" start="00:47:20.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we don't really have a lot of resources or""" start="00:47:21.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people inclined to be working on stuff like""" start="00:47:23.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that. But I mean, there is so much going on.""" start="00:47:25.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs is a very, you know,""" start="00:47:27.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's a big community, frankly,""" start="00:47:30.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? So people working on emacs.com,""" start="00:47:32.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there are people in the IRC channel,""" start="00:47:34.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the emacs IRC channel,""" start="00:47:37.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""there's the emacs subreddit.""" start="00:47:39.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And I mean, people are doing an incredible""" start="00:47:40.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""job. And I think if people wanna do more""" start="00:47:43.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""stuff like that, I mean,""" start="00:47:45.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Don't wait for Argo, just go for it.""" start="00:47:46.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Great. Moving on to the next question.""" start="00:47:52.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sorry, I'm not commenting anymore because we""" start="00:47:54.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have so many questions and I'd love for you""" start="00:47:56.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to answer as many people as possible because""" start="00:47:58.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we have about 6 minutes technically,""" start="00:48:00.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but we can go perhaps a little bit over.""" start="00:48:02.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""If you have the time, Stefan,""" start="00:48:05.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""though. Yeah. Okay, great.""" start="00:48:06.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""What are some features or packages you'd like""" start="00:48:09.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to see developed by the community?""" start="00:48:11.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We've already talked about the native HTTP""" start="00:48:12.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""display, but do you have any others?""" start="00:48:15.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So, I mean, developed by the community,""" start="00:48:19.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it depends what you mean.""" start="00:48:22.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So do you mean sending stuff that people""" start="00:48:23.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""could be working on in general?""" start="00:48:27.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think for now, like let's say the roadmap,""" start="00:48:30.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'll just give some of the things that I""" start="00:48:33.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""think should happen right now and that I""" start="00:48:35.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""would love for people to send patches for.""" start="00:48:36.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That's what I'm gonna be answering because""" start="00:48:39.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's what I think I can answer.""" start="00:48:41.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Tree-sitter is a new thing,""" start="00:48:43.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? Improving and working on new modes""" start="00:48:45.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for, you know, TreeSitter,""" start="00:48:48.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it's not very hard. I think many people get""" start="00:48:50.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""into it and make sure to integrate them in""" start="00:48:52.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs core. I think that would be,""" start="00:48:55.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, on my wishlist.""" start="00:48:58.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""The other thing that is that we've asked for""" start="00:49:00.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""someone perhaps with a little bit more""" start="00:49:01.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""experience, I think, but working on""" start="00:49:03.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""refactoring capabilities in Emacs and a more""" start="00:49:05.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""general framework, I think,""" start="00:49:09.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for that. There are probably many more ideas""" start="00:49:11.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that I could give people,""" start="00:49:13.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but those would be the 2 big ones,""" start="00:49:15.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, that are also very uncontroversial.""" start="00:49:17.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's funny because for me,""" start="00:49:22.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I don't think refactoring would count as a""" start="00:49:24.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""feature, but it's so vital to allowing""" start="00:49:26.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""further features to be developed.""" start="00:49:30.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Otherwise, I remember the way Org Mode used""" start="00:49:31.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to be before we had Org Element and stuff""" start="00:49:34.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like this. It was really complicated to write""" start="00:49:36.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""any kind of parsing stuff for it.""" start="00:49:38.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And now that we've got it,""" start="00:49:41.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it just opened up a world of possibility""" start="00:49:42.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""where parsing an Org Mode file is just made""" start="00:49:44.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""so much easier. So I think that's a wonderful""" start="00:49:46.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""answer because it goes,""" start="00:49:48.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it's multi-layered as you would expect from""" start="00:49:49.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something that concerns the whole of Emacs.""" start="00:49:52.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Moving on to the next question.""" start="00:49:55.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""What is the hardest decision being made""" start="00:49:57.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""within Emacs dev for the last 3 years.""" start="00:49:59.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm not sure, is it the decision in the last""" start="00:50:02.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""3 years or I'll let you interpret the""" start="00:50:04.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""question however you want.""" start="00:50:07.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Okay, well, I'll say this.""" start="00:50:09.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I started in August and I haven't had any""" start="00:50:11.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""really hard decisions so far.""" start="00:50:14.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So good news. Maybe Eli will have more for""" start="00:50:16.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the last 3 years. Keep it simple.""" start="00:50:20.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Thanks. Cool. Next question.""" start="00:50:25.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Any plans to integrate XWM into core?""" start="00:50:28.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs is a really good Winters manager.""" start="00:50:31.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That's super cool. I think EXWM is cool.""" start="00:50:34.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think they need to upgrade to Wayland""" start="00:50:38.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""somehow and that's not clear yet,""" start="00:50:40.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but you know, we don't have any current plans""" start="00:50:41.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to integrate it, no. Right,""" start="00:50:44.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Next question. Do you think it is a good idea""" start="00:50:49.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to choose Org Mode for writing documentation""" start="00:50:51.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""instead of tech info? I think that whatever""" start="00:50:53.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we do, it should be the people that are""" start="00:50:57.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""working on the documentation that should make""" start="00:50:59.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that choice. Currently we have,""" start="00:51:01.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, Modus themes and Org Mode itself is""" start="00:51:03.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""writing their documentation in Org Mode,""" start="00:51:05.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's fine by me. It has some drawbacks,""" start="00:51:08.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it has some benefits, but most documentation""" start="00:51:10.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is still in tech info.""" start="00:51:13.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Maybe we'd need to replace that at some""" start="00:51:15.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""point, I don't know. But for now,""" start="00:51:17.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's what people know and use.""" start="00:51:19.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And if you find that as a barrier to""" start="00:51:22.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""contribute to Emacs, I mean,""" start="00:51:24.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just really write it as plain text.""" start="00:51:25.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We'll be happy to help you with the markup.""" start="00:51:27.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's a little bit, you know,""" start="00:51:29.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""finicky and stuff like that.""" start="00:51:30.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Great. Thanks for that.""" start="00:51:33.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Next question. What do you plan to work on in""" start="00:51:35.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs Core in the future?""" start="00:51:38.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm a little bit hesitant to reply to that.""" start="00:51:40.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Of course I have ideas.""" start="00:51:42.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Of course there are projects that I'm working""" start="00:51:43.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""on. However, if I say it here,""" start="00:51:45.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I feel like, you know,""" start="00:51:47.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""then you'll hold me to it later and come ask,""" start="00:51:48.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""where is that feature?""" start="00:51:51.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So I'll just say there is plenty of stuff""" start="00:51:52.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that I'm working on, and if you want to know""" start="00:51:55.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""some of the stuff that I have been working""" start="00:51:57.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""on, check the Git log.""" start="00:51:58.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think that's just really as much as I want""" start="00:52:00.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to say about that right now.""" start="00:52:02.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You've added folks to just look at the path""" start="00:52:05.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""with the changelog and that's all you need.""" start="00:52:07.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""All right, moving on to the next question.""" start="00:52:11.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""What do you use Emacs for in your life other""" start="00:52:14.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""than working on Emacs itself?""" start="00:52:16.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Oh shit. So the big thing is programming,""" start="00:52:18.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? Now I work as a programmer.""" start="00:52:21.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But in general, I use org mode heavily.""" start="00:52:27.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I use it for all my writing.""" start="00:52:29.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I use it to write, prepare this talk.""" start="00:52:30.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I use it as a productivity system.""" start="00:52:33.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I use it for emails. I use it as an RSS""" start="00:52:35.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""reader. I do most of my computing.""" start="00:52:41.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I also have Firefox. So it's like Emacs and""" start="00:52:44.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Firefox for some reason.""" start="00:52:47.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I do read documentation in Emacs as well in""" start="00:52:48.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you, but yeah. Great. I'm still,""" start="00:52:51.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I do very much the same thing with you.""" start="00:52:59.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Like You've described exactly what I do.""" start="00:53:00.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I work as a programmer,""" start="00:53:02.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I use Augment for a lot of stuff,""" start="00:53:02.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and I think that describes a whole lot of""" start="00:53:04.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people currently watching the stream.""" start="00:53:06.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Moving on to the next question.""" start="00:53:09.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""What could we do in order to make Emacs more""" start="00:53:10.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""attractive for younger users?""" start="00:53:12.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""This is an amazing question and I feel wholly""" start="00:53:14.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""unprepared to answer this.""" start="00:53:18.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Probably more introductory material aimed at""" start="00:53:21.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that age group. What do you mean by younger""" start="00:53:24.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""users? You know what would be really cool if""" start="00:53:26.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you had an Emacs for kids project?""" start="00:53:28.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That would be amazing.""" start="00:53:31.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm not sure if that's what people are""" start="00:53:32.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""thinking about, but yeah,""" start="00:53:34.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that's about what I can say for now.""" start="00:53:37.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Good question. It is a very good question,""" start="00:53:40.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like it comes back always to a key topic in""" start="00:53:43.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""EmacsConf, which is, how do we get more""" start="00:53:45.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people to join us? Because it's a wonderful""" start="00:53:47.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""community. And how do we onboard people who""" start="00:53:49.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are not programmers or people who are younger""" start="00:53:51.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""than the average Joe coming in those""" start="00:53:54.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""meetings? There's this Excellent article by""" start="00:53:57.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Paul Graham, I think, where he was describing""" start="00:54:01.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""how they used Emacs as the sort of customer""" start="00:54:06.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""service system. They built the customer""" start="00:54:09.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""service system for the early days of Amazon""" start="00:54:11.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in Emacs Lisp. And then they switched and all""" start="00:54:14.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the employees were sad.""" start="00:54:17.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So definitely there's more stuff that could""" start="00:54:18.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""be done in Emacs and be done better in Emacs.""" start="00:54:21.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So for sure, if people want to explore more""" start="00:54:25.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""stuff like that, that's amazing.""" start="00:54:27.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah. And for people who weren't around""" start="00:54:29.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""earlier today, we've had a presentation about""" start="00:54:32.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""how to get computer science students to use""" start="00:54:33.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs and trying to provide as much""" start="00:54:36.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""information and as much tutorial as needed""" start="00:54:41.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for them to understand what is the philosophy""" start="00:54:43.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""behind Emacs and how it influences the way""" start="00:54:45.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you work and so forth.""" start="00:54:48.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So you might want to revisit this discussion.""" start="00:54:49.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And we also have plenty of talks talking""" start="00:54:51.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about this issue. And I can just add that I""" start="00:54:53.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""think it's very important for us as a""" start="00:54:57.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""community to just be enthusiastic to get more""" start="00:55:00.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people involved. Because I mean,""" start="00:55:03.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""look, there's this meme where it's like,""" start="00:55:04.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I use Arch Linux, by the way,""" start="00:55:06.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I use Arch, by the way.""" start="00:55:08.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And for some reason, people using Arch keep""" start="00:55:10.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""telling you that they're using Arch.""" start="00:55:12.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That's fine. Use whatever you want.""" start="00:55:14.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's free software, I don't care.""" start="00:55:16.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think if you look at Vim users,""" start="00:55:20.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""they're very almost militant,""" start="00:55:21.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""oh, we're Vim, and Vim is the thing.""" start="00:55:23.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And Emacs users sometimes,""" start="00:55:25.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and it's fine. We take a bit of a more""" start="00:55:27.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""laid-back approach. We're like,""" start="00:55:29.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yeah, I use Emacs, you use Vim,""" start="00:55:31.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""whatever. And that's fine.""" start="00:55:32.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, that's the correct approach,""" start="00:55:35.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think. You should respect what people want""" start="00:55:36.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to use. I don't care that people use VS Code""" start="00:55:38.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""or whatever. I'm not going to use that""" start="00:55:40.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""because it's too limiting.""" start="00:55:42.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's not really a workable environment.""" start="00:55:43.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I think it's OK to be enthusiastic.""" start="00:55:46.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think it's okay to talk about that type of""" start="00:55:48.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""enthusiasm and anything that can help""" start="00:55:51.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""increase the enthusiasm around Emacs can only""" start="00:55:54.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""help the longevity of Emacs.""" start="00:55:56.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I agree and that's also 1 of the key""" start="00:56:02.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""objectives of EmacsConf.""" start="00:56:04.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's about bringing a lot of amazing people""" start="00:56:05.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to come talk, like you,""" start="00:56:07.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about stuff that is very dear to you.""" start="00:56:09.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And it's very tangible how much you care,""" start="00:56:11.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""all of you, about what you're presenting.""" start="00:56:14.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And it's amazing to put all of you people on""" start="00:56:15.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just 48 hours talking about all of this and""" start="00:56:18.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""then creating so much content for people to""" start="00:56:20.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""watch. And I think it's really helping the""" start="00:56:22.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""enthusiasm to live on and to gather a little""" start="00:56:24.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""more snow as it comes down.""" start="00:56:28.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, I watch you Max Conf every year.""" start="00:56:29.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think it's a lot of fun.""" start="00:56:31.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Thank you. I'll take the compliment for""" start="00:56:34.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""everyone else in the team.""" start="00:56:37.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We're going to go a little bit longer with""" start="00:56:39.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the Q&A because we still have a lot of""" start="00:56:41.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""questions and if Stéphane is still willing to""" start="00:56:42.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""answer, I'm still willing to not go too bad""" start="00:56:44.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to hear a lot more of it.""" start="00:56:48.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, for me it's fine.""" start="00:56:49.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I have time. Great. So I think I've done this""" start="00:56:50.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""question. So, all right.""" start="00:56:55.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""How are we going to make sure that a cool""" start="00:56:58.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""idea is going to pass it through for the next""" start="00:57:00.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""generation, let's say 20 years later,""" start="00:57:01.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the generation still have the good knowledge""" start="00:57:04.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we have today. Yeah, so I mean,""" start="00:57:05.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""if you think about what does EMAX need to""" start="00:57:09.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have staying power, so in general,""" start="00:57:12.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""they say, you know, if if when you start a""" start="00:57:15.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""company, if you have a company for 1 year,""" start="00:57:17.020" video="mainVideo-core" id="subtitle"]]
+[[!template text="""then in all likelihood,""" start="00:57:19.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you're going to have it for 2 years because,""" start="00:57:20.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, it's just so if you've had Emacs""" start="00:57:21.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for 4 years, I'm saying that we're going to""" start="00:57:23.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have Emacs for the next 4 years as well.""" start="00:57:25.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Just based on that, I'm not sure the logic""" start="00:57:27.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""holds up, but you know,""" start="00:57:30.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""how does Emacs stay relevant?""" start="00:57:32.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think is the question.""" start="00:57:34.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Well, I think we need to continue working on""" start="00:57:35.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""all the types of exploratory work that people""" start="00:57:38.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""are doing in the community.""" start="00:57:41.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think there is fundamental stuff that needs""" start="00:57:43.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to be done. I mean, if people want to work""" start="00:57:45.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""on, you know, web rendering and Emacs,""" start="00:57:47.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maybe that's the next,""" start="00:57:49.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, revolutionary step that we need""" start="00:57:50.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that could, you know, really showcase what""" start="00:57:53.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs, you know, as, you know,""" start="00:57:55.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""an idea, even if not Emacs as a software""" start="00:57:57.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""could be and, you know,""" start="00:58:00.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Because there is huge potential in the idea""" start="00:58:01.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""as such. So maybe that's something.""" start="00:58:05.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I mean, from the point of view of core""" start="00:58:07.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development, I think we need to just continue""" start="00:58:09.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""working on the fundamental technologies.""" start="00:58:11.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""1 thing that I would like to eventually see""" start="00:58:15.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""is a better garbage collector.""" start="00:58:17.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We've talked about that for a long time,""" start="00:58:19.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but I mean, we need someone to do the job""" start="00:58:22.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""really. It's not very easy.""" start="00:58:25.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's very hard, actually.""" start="00:58:27.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So just continues working on stuff like that,""" start="00:58:31.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""continue with the exploration,""" start="00:58:34.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""continue using and being excited about Emacs.""" start="00:58:35.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think that's the best guarantee that we""" start="00:58:40.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""have. Yeah, and perhaps to echo something""" start="00:58:43.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that you said earlier,""" start="00:58:45.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the tools that you're using,""" start="00:58:46.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like the emails, they've been around forever,""" start="00:58:47.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""they will be around forever.""" start="00:58:49.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""This pragmatic stance on the tools that""" start="00:58:51.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you're using, they might look stayed from the""" start="00:58:53.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""outside, but ultimately they are what permits""" start="00:58:56.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a sense of longevity to any kind of project""" start="00:58:59.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you embark upon. Also,""" start="00:59:03.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""in a sense, I think that the expectations""" start="00:59:05.460" video="mainVideo-core" id="subtitle"]]
+[[!template text="""might be changing in the sense that,""" start="00:59:07.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, when I started using GNU Linux,""" start="00:59:09.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know what the first thing I did was,""" start="00:59:12.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""because I couldn't get Xorg to run.""" start="00:59:15.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So the first thing you had to do was you had""" start="00:59:16.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to compile your own Linux kernel.""" start="00:59:19.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So you sit there and make manuconfig and""" start="00:59:20.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you'll like, try to read it and you've never""" start="00:59:22.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""done anything like this before.""" start="00:59:24.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You know, I was just a kid.""" start="00:59:26.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I had never been at this kind of,""" start="00:59:27.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, whatever. So I had to start with""" start="00:59:29.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that. And then you have to write the X or""" start="00:59:31.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""configuration file. And I had the patience""" start="00:59:34.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""for that. But nowadays,""" start="00:59:36.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people have different expectations.""" start="00:59:37.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You just install something,""" start="00:59:38.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and it works. And we need to keep that in""" start="00:59:40.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""mind as well. So that's why I keep pushing as""" start="00:59:42.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""1 of my big things. We need to build a more""" start="00:59:45.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""cohesive experience out of the box.""" start="00:59:48.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Of course, that can be customizable.""" start="00:59:51.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You shouldn't shoehorn anything in just for""" start="00:59:52.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the sake of it. But you could get some things""" start="00:59:55.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""a little bit more for free.""" start="00:59:58.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And maybe some of us that have our own""" start="01:00:01.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""configs and we've been doing this for you""" start="01:00:03.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""know, 2, 05:10, even 20 years,""" start="01:00:04.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we could also see, you know,""" start="01:00:08.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""from the point of view of a new user that""" start="01:00:09.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""just installs VS Code and then they click,""" start="01:00:11.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""yes I use Python, yes I use that,""" start="01:00:13.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and then it just automatically works.""" start="01:00:15.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""You know what I mean? I mean,""" start="01:00:19.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""then could we get closer to that perhaps a""" start="01:00:20.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""little bit? I think that would also help.""" start="01:00:24.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, I think that's what we call the""" start="01:00:26.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""configuration wizard. And we were talking""" start="01:00:28.700" video="mainVideo-core" id="subtitle"]]
+[[!template text="""about this, I think, a couple of years ago at""" start="01:00:30.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""EmacsConf. I can't remember if it was with""" start="01:00:32.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Adam in the chat. Adam,""" start="01:00:34.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean Alpha Papa, or if it was with Bastien,""" start="01:00:35.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but I remember the idea cropping off.""" start="01:00:38.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Like, it's either you get a tutorial for""" start="01:00:40.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs, a proper tutorial,""" start="01:00:42.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""or you get a wizard, or you get both,""" start="01:00:43.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and then all is right for the world.""" start="01:00:45.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But definitely cool ideas being evoked.""" start="01:00:47.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm gonna say I need to decree the time when""" start="01:00:50.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we finish because for me it is 11.15""" start="01:00:52.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""p.m. And I think my co-organizers are also""" start="01:00:55.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""willing to end the day and go rest because""" start="01:00:59.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we've got another day to go tomorrow.""" start="01:01:01.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So how about we take 3 minutes and 30 seconds""" start="01:01:03.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""to try to answer a little bit more succinctly""" start="01:01:06.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the questions we've got left.""" start="01:01:08.560" video="mainVideo-core" id="subtitle"]]
+[[!template text="""How does that sound, Stefan?""" start="01:01:09.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sounds great. Cool, so I'll start reading the""" start="01:01:11.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""questions then that we've got left.""" start="01:01:15.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So this 1 we've got. If you're willing to""" start="01:01:18.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""discuss it, what do you think about the""" start="01:01:20.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""recent controversy about use of CLLib in""" start="01:01:22.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs call code? Am I willing to discuss""" start="01:01:24.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that? I have said my opinion on Emacs,""" start="01:01:29.980" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Devel, I think. And I think I understand,""" start="01:01:36.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, the viewpoints of both sides in that""" start="01:01:40.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""discussion. It is true that some things,""" start="01:01:44.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, we have to think about that.""" start="01:01:46.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""There is a real problem,""" start="01:01:49.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think, when we have 3 different APIs for""" start="01:01:50.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""doing the same thing in Emacs.""" start="01:01:53.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And can we make that a little bit better?""" start="01:01:55.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, perhaps we could,""" start="01:01:57.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""right? So that's about as much as I'd like to""" start="01:01:59.760" video="mainVideo-core" id="subtitle"]]
+[[!template text="""say. Fair enough. I would have also accepted""" start="01:02:04.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that CL loops are ugly to write and they""" start="01:02:06.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""don't feel very lispy.""" start="01:02:09.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But I'll take your answer as well.""" start="01:02:10.320" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, some people think that.""" start="01:02:13.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I understand that position as well.""" start="01:02:15.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Right. Okay, next question.""" start="01:02:19.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""When we find a bug in our Emacs,""" start="01:02:21.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""do we need to try to replicate it on our side""" start="01:02:23.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""version, on our SID version,""" start="01:02:25.200" video="mainVideo-core" id="subtitle"]]
+[[!template text="""sorry, then update all the usual list package""" start="01:02:26.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we use, and if we succeed to replicate the""" start="01:02:29.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bug in this version, only then go to""" start="01:02:31.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""development version 30 and do the same.""" start="01:02:33.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Then only ask for assistance in reporting the""" start="01:02:35.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bug we found. So I believe when they""" start="01:02:37.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""encounter a bug, are people supposed to go to""" start="01:02:40.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""master to pull main and just to make sure""" start="01:02:43.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that they are on the latest version.""" start="01:02:47.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Is this something that you require?""" start="01:02:48.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We don't require that,""" start="01:02:50.660" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but we do try to encourage you to reproduce""" start="01:02:51.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""it on master if we think that it matters.""" start="01:02:54.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, so if you can, that's even better.""" start="01:02:57.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But if the bug is there in Emacs 29,""" start="01:03:01.620" video="mainVideo-core" id="subtitle"]]
+[[!template text="""maybe we want to fix it in Emacs 29.2.""" start="01:03:03.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So the latest point release is also fine.""" start="01:03:06.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Bugs in Emacs 28 at this point,""" start="01:03:10.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""like the previous major version,""" start="01:03:12.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""we might ask you to try to reproduce it on""" start="01:03:15.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs 29 because we're not planning more""" start="01:03:17.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""releases of old major versions.""" start="01:03:19.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So that's the fundamental reason for that.""" start="01:03:21.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Great. Thank you for your answer.""" start="01:03:24.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""All right. Moving on to the next question.""" start="01:03:25.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""On branching off sub-threads,""" start="01:03:27.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I note that they are less visible compared to""" start="01:03:29.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""starting a new thread in practice.""" start="01:03:31.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I am wondering if it is just my impression or""" start="01:03:33.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""something devs also observe.""" start="01:03:35.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, it's true. That's correct.""" start="01:03:37.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I don't know what to do about it.""" start="01:03:41.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""If you want more visibility,""" start="01:03:42.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I guess just start a new thread.""" start="01:03:44.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I don't know. I can only agree,""" start="01:03:47.080" video="mainVideo-core" id="subtitle"]]
+[[!template text="""really. I concur. That's true.""" start="01:03:48.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Okay. Next question. What about rewriting""" start="01:03:51.720" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Emacs in Rust? Use Guile instead of Elisp.""" start="01:03:54.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Multi-threaded Emacs. Make Emacs prettier and""" start="01:03:57.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""shiny. And of course, same defaults.""" start="01:03:59.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Just kidding. We are spoiled children because""" start="01:04:02.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you and Eli, Lars, and etc do an impressive""" start="01:04:04.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""work. I live in Emacs since 2001.""" start="01:04:08.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Thanks. That was a good 1.""" start="01:04:11.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Sane defaults. Okay, Well,""" start="01:04:14.220" video="mainVideo-core" id="subtitle"]]
+[[!template text="""thank you. Thanks for that comment.""" start="01:04:18.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""That made me chuckle. Next question by the""" start="01:04:20.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""same person, I assume.""" start="01:04:23.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""The only downside I see with copyright""" start="01:04:24.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""assignment is that 1 has to disclose their""" start="01:04:26.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""real identity. Would it be a possibility to""" start="01:04:28.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""assign a copyright under a nickname?""" start="01:04:31.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, you don't have to say a real name.""" start="01:04:33.160" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Just register some pseudonym.""" start="01:04:34.840" video="mainVideo-core" id="subtitle"]]
+[[!template text="""The FSF does need your real name,""" start="01:04:37.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but that's kept private only.""" start="01:04:39.440" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So feel free to reach out to assign at""" start="01:04:41.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""gnu.org and ask more about that.""" start="01:04:45.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Right. All right, next question.""" start="01:04:49.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Do you think it is possible to reach an""" start="01:04:51.820" video="mainVideo-core" id="subtitle"]]
+[[!template text="""agreement on sane defaults for better""" start="01:04:53.400" video="mainVideo-core" id="subtitle"]]
+[[!template text="""out-of-the-box experience?""" start="01:04:55.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Yeah, so your sane is not my sane""" start="01:04:57.800" video="mainVideo-core" id="subtitle"]]
+[[!template text="""necessarily. So that's the fundamental""" start="01:05:00.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""problem that we're discussing here.""" start="01:05:01.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I think it's a social,""" start="01:05:02.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""not a technical problem.""" start="01:05:03.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We do change defaults sometimes,""" start="01:05:05.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but I mean, there is also some staying power.""" start="01:05:07.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So it's understandable that,""" start="01:05:09.880" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, it's, we can't just change them""" start="01:05:12.260" video="mainVideo-core" id="subtitle"]]
+[[!template text="""willy nilly and then flip flop between,""" start="01:05:13.940" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, 1 or the other kind of thing.""" start="01:05:15.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So it does take a little bit more time.""" start="01:05:18.340" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But yeah, sure, we can.""" start="01:05:20.060" video="mainVideo-core" id="subtitle"]]
+[[!template text="""We do change defaults at times.""" start="01:05:23.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""But it's perhaps more slower than what some""" start="01:05:26.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""people would prefer, for sure.""" start="01:05:29.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So that's, yeah. Right,""" start="01:05:31.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""all right. We have 2 more questions.""" start="01:05:36.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""So will XWidgets have a future?""" start="01:05:37.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Seeing the new bugs popping up in the latest""" start="01:05:40.120" video="mainVideo-core" id="subtitle"]]
+[[!template text="""XWidget dev. Not sure if there was the rest""" start="01:05:42.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""of the question, But on XWidgets,""" start="01:05:45.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""can you tell us a little more?""" start="01:05:46.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I'm not really following now.""" start="01:05:48.740" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I mean, I'm not seeing a lot of development""" start="01:05:50.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""on XWidgets currently.""" start="01:05:52.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Some people have done work in fixing up a few""" start="01:05:54.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""bugs, but I think that feature really needs""" start="01:05:57.100" video="mainVideo-core" id="subtitle"]]
+[[!template text="""more love. So I think we need,""" start="01:06:00.380" video="mainVideo-core" id="subtitle"]]
+[[!template text="""you know, help is welcome,""" start="01:06:02.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""patch is welcome. That's what I can say about""" start="01:06:03.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""that. All right, and our final question of""" start="01:06:05.920" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the day. Have you voted for Emacs as the""" start="01:06:11.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""software of the year on the Tuxes by Jupyter""" start="01:06:13.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Broadcasting? I did because Emacs 29 is""" start="01:06:15.140" video="mainVideo-core" id="subtitle"]]
+[[!template text="""great. Thank you. Okay,""" start="01:06:17.480" video="mainVideo-core" id="subtitle"]]
+[[!template text="""well, good job voting.""" start="01:06:19.300" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I didn't know, I don't know what Tuxy is on""" start="01:06:20.580" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Jupyter broadcasting, but look it up and go""" start="01:06:22.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""vote. So I wish I could tell you,""" start="01:06:25.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""I assume with Tux, it might be something""" start="01:06:28.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""related to Linux, but that's as much as I can""" start="01:06:29.500" video="mainVideo-core" id="subtitle"]]
+[[!template text="""say. All right, well, Stefan,""" start="01:06:32.900" video="mainVideo-core" id="subtitle"]]
+[[!template text="""thank you so much for taking the time not""" start="01:06:34.960" video="mainVideo-core" id="subtitle"]]
+[[!template text="""only to do a wonderful presentation,""" start="01:06:36.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""but also for answering all the questions of""" start="01:06:38.000" video="mainVideo-core" id="subtitle"]]
+[[!template text="""the community. Do you have anything else to""" start="01:06:39.640" video="mainVideo-core" id="subtitle"]]
+[[!template text="""add? Just really thanks for all the questions""" start="01:06:41.240" video="mainVideo-core" id="subtitle"]]
+[[!template text="""and thanks for staying.""" start="01:06:45.360" video="mainVideo-core" id="subtitle"]]
+[[!template text="""It's been a long day, a long conference,""" start="01:06:47.780" video="mainVideo-core" id="subtitle"]]
+[[!template text="""so thanks for staying and listening to my""" start="01:06:49.600" video="mainVideo-core" id="subtitle"]]
+[[!template text="""talk as well. Really appreciate it.""" start="01:06:51.180" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Appreciate the good work you guys are doing""" start="01:06:52.540" video="mainVideo-core" id="subtitle"]]
+[[!template text="""behind the scenes, organizing,""" start="01:06:54.280" video="mainVideo-core" id="subtitle"]]
+[[!template text="""setting everything up.""" start="01:06:55.520" video="mainVideo-core" id="subtitle"]]
+[[!template text="""And really humbled to be a part of this""" start="01:06:57.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""community. So thank you all.""" start="01:07:00.420" video="mainVideo-core" id="subtitle"]]
+[[!template text="""Well I can assure you that no 1 either in the""" start="01:07:02.680" video="mainVideo-core" id="subtitle"]]
+[[!template text="""organization team or the people watching now""" start="01:07:05.860" video="mainVideo-core" id="subtitle"]]
+[[!template text="""felt like it was tiring to stay and listen to""" start="01:07:08.040" video="mainVideo-core" id="subtitle"]]
+[[!template text="""your answers. So thank you so much Stefan.""" start="01:07:10.900" video="mainVideo-core" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20core%3A%20Emacs%20core%20development%3A%20how%20it%20works)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/core-before.md b/2023/info/core-before.md
new file mode 100644
index 00000000..dfa57577
--- /dev/null
+++ b/2023/info/core-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 68-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="core-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 1:07:13 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--main.json">Download --main.json (2.4MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--main.webm">Download --main.webm (211MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-core--emacs-core-development-how-it-works--stefan-kangas--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/m4XmrmE9Geat54AKT1RQaH">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/core-nav.md b/2023/info/core-nav.md
new file mode 100644
index 00000000..57508c7e
--- /dev/null
+++ b/2023/info/core-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/devel">Emacs development updates</a>
+Next by track: <a href="/2023/talks/hyperamp">Top 10 ways Hyperbole amps up Emacs</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/cubing-after.md b/2023/info/cubing-after.md
new file mode 100644
index 00000000..dae3e345
--- /dev/null
+++ b/2023/info/cubing-after.md
@@ -0,0 +1,310 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="cubing-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""Hello, everyone, and welcome to Speedcubing in Emacs.""" start="00:00:00.000" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""First of all, a little bit about myself.""" start="00:00:08.360" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""My name is Vasilij Schneidermann. Online, I go by wasamasa.""" start="00:00:10.120" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I'm 31 years old. I work in information security,""" start="00:00:13.680" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and I do consulting and hacking""" start="00:00:18.040" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and stuff like figuring out""" start="00:00:20.480" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""how to break into other people's computers""" start="00:00:22.480" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and how to secure their systems basically.""" start="00:00:25.280" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""You can reach me by email.""" start="00:00:29.360" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I do have a self-hosted code repository thingy going on.""" start="00:00:31.440" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I have a blog, and you can find me""" start="00:00:36.640" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""in some other places online, like IRC for example.""" start="00:00:40.400" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So about the talk itself,""" start="00:00:45.920" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I used to be into the Rubik's cube when I was in school.""" start="00:00:48.680" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I forgot about it, though,""" start="00:00:52.840" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""because these cubes were not very good.""" start="00:00:54.040" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Recently I did find some cheap looking cube at a shop.""" start="00:00:56.280" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Did not pay terribly much for it.""" start="00:01:02.280" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""It was so, so much better than my old cube,""" start="00:01:04.120" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""it was unreal.""" start="00:01:07.040" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""This motivated me to get back into""" start="00:01:08.640" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""this really weird kind of hobby.""" start="00:01:11.480" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For this, you need to be good at producing""" start="00:01:13.560" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""a truly random scramble""" start="00:01:18.000" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and timing your attempts to get any better at it.""" start="00:01:19.400" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""There is, of course, existing software""" start="00:01:22.320" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""to do the scrambling for you and the recording""" start="00:01:23.720" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and the timekeeping and such,""" start="00:01:26.240" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but all the good options seem to be either web or mobile,""" start="00:01:28.080" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""for example the cstimer software""" start="00:01:31.240" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""or the twisty-timer app on Android.""" start="00:01:33.240" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Cubing in Emacs""" start="00:01:35.400" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""To my surprise, I did not find a single decent option""" start="00:01:35.400" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""inside Emacs, so this is basically a case study""" start="00:01:39.320" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""how to do better. For this, I wanted to make use of""" start="00:01:41.960" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""all the cool new Emacs features that appeared,""" start="00:01:45.000" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""like the SVG library; Transient,""" start="00:01:47.800" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""the library used for the Magit-style interfaces;""" start="00:01:50.880" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and the recently added sqlite-mode.""" start="00:01:53.600" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And most importantly it was about having fun.""" start="00:01:56.440" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Prior art""" start="00:02:01.160" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""So here's a full list of prior art,""" start="00:02:01.160" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I will not go into detail about this,""" start="00:02:02.760" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but basically we have things solving""" start="00:02:04.280" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""very different parts of this,""" start="00:02:06.240" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but not all of it. For example: we have several,""" start="00:02:08.040" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""we have a timer. We have several solvers.""" start="00:02:10.760" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""We have some scramblers.""" start="00:02:14.240" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""We have some whole-cube simulators, including a 3D one.""" start="00:02:16.040" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""We have something for making it easier""" start="00:02:19.360" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""to enter your algorithms in the notation.""" start="00:02:20.760" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""But nothing that does all of those things in one package,""" start="00:02:23.120" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""which kind of surprised me.""" start="00:02:25.920" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So I present the `wca-prep` package.""" start="00:02:28.120" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""The name""" start="00:02:32.040" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""So the name, I found it difficult""" start="00:02:32.040" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""to come up with a good name and so I looked""" start="00:02:35.560" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and I saw, well there's this World Cube Association""" start="00:02:39.960" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that holds these competitions where you compete.""" start="00:02:42.560" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""They do this for the Rubik's cube""" start="00:02:46.040" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but also a few others,""" start="00:02:47.760" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""so there's like a standardized list""" start="00:02:48.920" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""of events they have for this.""" start="00:02:50.800" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""There is a standard notation for this""" start="00:02:52.640" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and rules and everything.""" start="00:02:55.160" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And the goal of my package is basically""" start="00:02:56.520" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""to help prepare myself for such a competition""" start="00:02:58.200" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and in fact a week ago I went to my first one""" start="00:03:01.280" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""which was wild, but pretty cool.""" start="00:03:03.680" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So for this reason I chose this name wca-prep,""" start="00:03:06.720" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""because it helps me prepare for this kind of competition""" start="00:03:10.920" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and this limited the scope significantly,""" start="00:03:13.640" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""What's in wca-prep""" start="00:03:16.520" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""I have a scrambler, visualization of the scramble,""" start="00:03:16.520" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""timer, and statistics.""" start="00:03:19.000" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I excluded pretty much everything else I've seen.""" start="00:03:23.320" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For this reason, I only tried to focus on""" start="00:03:25.560" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""some very basic puzzles I can solve comfortably,""" start="00:03:28.789" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and did not want to do anything else""" start="00:03:32.200" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that may complicate things significantly.""" start="00:03:34.840" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""No other kinds of puzzles, no simulation, no solving,""" start="00:03:36.440" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""no exotic events, and no specialized scrambles""" start="00:03:40.480" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that are only good for practicing specific algorithms.""" start="00:03:43.920" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Demo""" start="00:03:49.240" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""So at this point the organizer should hopefully show""" start="00:03:49.240" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""a small video I've prepared, a one minute video showing how""" start="00:03:54.200" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I actually use this to solve a cube and to time my solve.""" start="00:03:58.000" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Challenges: Representing the cube""" start="00:05:15.240" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""Okay, so building this thing, there were several challenges.""" start="00:05:15.240" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""The first one was how do I even represent""" start="00:05:18.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""the state of a Rubik's cube.""" start="00:05:20.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For this there are many possible representations,""" start="00:05:22.469" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""no obvious best solution.""" start="00:05:25.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I did not, well, what helped me was that""" start="00:05:27.709" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I did not have to programmatically solve this thing,""" start="00:05:29.629" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""so I picked the easiest possible representation""" start="00:05:31.989" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""which is just an array of every single facelet.""" start="00:05:35.189" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For a 3x3 cube you have 9 facelets on one side,""" start="00:05:38.269" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""so times 6 sides you would have 54 elements in this array.""" start="00:05:42.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So with this representation, it's very simple,""" start="00:05:47.269" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but it's kind of weird to do scrambles with this.""" start="00:05:49.709" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""But otherwise, it worked very, very well.""" start="00:05:52.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""In the future, I plan to learn some group theory,""" start="00:05:54.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""pick a better representation""" start="00:05:57.269" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and do this in a much, much more elegant way""" start="00:05:58.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""without compromising speed too much.""" start="00:06:01.189" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Yes. Once I had the representation,""" start="00:06:07.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""the scrambling itself should not be too hard.""" start="00:06:10.709" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For this, it's important to consider that basically""" start="00:06:13.629" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""if you do a face turn""" start="00:06:17.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""you end up swapping some facelets with other facelets,""" start="00:06:19.149" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that's the easiest way to think about this.""" start="00:06:22.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""To determine which one goes into which one's position,""" start="00:06:26.029" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""it was pretty confusing to figure this out.""" start="00:06:29.269" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For this I went through a few papers,""" start="00:06:32.471" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and I found one which suggested""" start="00:06:34.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""to just build a cube out of paper,""" start="00:06:36.029" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""number every facelet, and turn it""" start="00:06:37.949" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and keep track of which facelet moved into which position.""" start="00:06:40.029" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And programmatically, the `cl-rotatef` macro""" start="00:06:44.349" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""was very, very useful for doing this kind of""" start="00:06:47.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""in-place swapping you need for this operation.""" start="00:06:49.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So in the future, group theory would hopefully""" start="00:06:51.629" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""make this a bit less awkward.""" start="00:06:54.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Here's a photo of this paper cube I made""" start="00:06:57.989" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""along with a real cube. As you can see""" start="00:07:00.109" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""mathematically speaking, they are the same thing,""" start="00:07:03.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""they just look very, very different.""" start="00:07:07.349" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Scrambling""" start="00:07:09.269" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""So the scramble algorithm itself,""" start="00:07:09.269" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I pondered how this would even be done. In the competitions,""" start="00:07:14.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""They do this in a very, very elaborate way.""" start="00:07:19.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""They generate a random cube,""" start="00:07:21.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""they try to solve it, and if it's solvable""" start="00:07:22.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""they use these solution moves""" start="00:07:25.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""to turn into a scramble basically.""" start="00:07:28.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And they also make sure to canonicalize the moves,""" start="00:07:30.829" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""so if you have subsequent moves that can be simplified,""" start="00:07:34.949" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""they do simplify these as much as possible.""" start="00:07:38.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For example,""" start="00:07:40.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""if you have two subsequent rotations in one direction,""" start="00:07:41.229" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""it's turned into a different kind of rotation,""" start="00:07:43.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""so 90 and 90 equals 180.""" start="00:07:46.669" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And the other Elisp scramblers I looked at,""" start="00:07:49.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""they generate random moves.""" start="00:07:53.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Some of them do canonicalize. Not all of them.""" start="00:07:55.109" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""This one tries to do the best low-fi thing,""" start="00:07:57.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that is, generating random moves,""" start="00:08:00.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""canonicalizing and repeating""" start="00:08:02.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""until enough have been generated.""" start="00:08:04.029" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Visualization""" start="00:08:09.549" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""For the visualization I had to figure out""" start="00:08:09.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""something else too complicated.""" start="00:08:13.149" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For this, I tried to figure out""" start="00:08:14.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""where every facelift would end up in the puzzle view""" start="00:08:17.229" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""when you would unfold it.""" start="00:08:19.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And for this, I did not consider the facelet orientation.""" start="00:08:21.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""This may be important later for some other puzzles""" start="00:08:25.669" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""where you can end up with very twisted faces,""" start="00:08:29.269" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but for simple cubes, it's not a problem.""" start="00:08:31.149" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""My initial prototype used colored text,""" start="00:08:33.029" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but later, I used the SVG library.""" start="00:08:36.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""It turned out to be easy enough to use, actually.""" start="00:08:38.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Currently, I have hard-coded face-color mappings,""" start="00:08:41.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but I plan to replace this so that theming is possible.""" start="00:08:46.109" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""For example, if you happen to have a cube""" start="00:08:49.109" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that does not have the same color mappings as I do,""" start="00:08:51.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""then you should be able to fix this.""" start="00:08:54.690" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""UI with Transient""" start="00:08:56.469" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""Next challenge was to build""" start="00:08:56.469" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""a beautiful intuitive UI with Transient.""" start="00:09:01.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""The reason why I chose this is""" start="00:09:03.949" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""because it would be self-documenting and Magit-style,""" start="00:09:06.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and everyone knows how Magit works basically.""" start="00:09:10.349" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Since Transient has become part of Emacs,""" start="00:09:12.349" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""there is really no reason to not try it out.""" start="00:09:15.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""The problem was documentation is difficult to understand.""" start="00:09:17.229" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""It's very abstract and high level,""" start="00:09:21.669" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and it's hard to figure out. &quot;Okay,""" start="00:09:23.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I want to do something,""" start="00:09:25.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""how am I supposed to do this?&quot;""" start="00:09:26.789" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I did find transient-showcase, which has lots of examples,""" start="00:09:28.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but they don't really feel finished""" start="00:09:33.349" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and not realistic enough.""" start="00:09:35.629" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""When I tried to use the package,""" start="00:09:39.069" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I got plenty of unhelpful error messages""" start="00:09:40.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""when using it incorrectly.""" start="00:09:42.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I did manage to figure it out,""" start="00:09:44.109" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but I plan to find more actual examples of it,""" start="00:09:45.949" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""to have an executable reference basically""" start="00:09:50.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and try to improve my use of it.""" start="00:09:53.429" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Book-keeping with SQLite""" start="00:09:55.629" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""For the book-keeping, I used SQLite.""" start="00:09:55.629" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""This is a very recent addition to Emacs,""" start="00:10:01.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""it only appeared in the current major version.""" start="00:10:04.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""It's still very early days.""" start="00:10:07.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I found some oddities, one of them turned out to be""" start="00:10:09.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""a bug in the transaction macro.""" start="00:10:13.029" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Like basically, if you do an SQL transaction""" start="00:10:14.829" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and an error happens, then every helper I found""" start="00:10:17.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""does a rollback on an error.""" start="00:10:20.189" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""But this one did not. It actually committed on an error,""" start="00:10:20.949" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and this was very weird to figure out.""" start="00:10:26.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I reported a bug. Eli was nice enough to send me a patch.""" start="00:10:29.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""We did some patch review,""" start="00:10:34.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and he ended up fixing it properly.""" start="00:10:35.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So yes, there's still a lot to be done there, and yeah,""" start="00:10:37.989" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""the API is very basic.""" start="00:10:45.669" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""You don't have convenience helpers""" start="00:10:46.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""like fetch the first row or fetch the first value""" start="00:10:48.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""or anything, but they're easy enough to write yourself.""" start="00:10:51.309" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And the biggest challenge with this bookkeeping part""" start="00:10:54.430" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""was figuring out a decent schema,""" start="00:10:56.370" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""like how to organize data correctly""" start="00:10:58.029" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""so that it would not be awkward to manipulate.""" start="00:11:00.149" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And with this, you can finally build a package""" start="00:11:02.349" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that remembers its state properly""" start="00:11:05.749" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and don't have to run into foot guns""" start="00:11:07.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""with Lisp-style serialization, deserialization.""" start="00:11:10.469" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:11:12.629" video="mainVideo-cubing" id="subtitle"]]
+
+[[!template text="""So yes, that concludes it so far.""" start="00:11:12.629" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So what did I learn from this exercise?""" start="00:11:18.189" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Well, there are still plenty of packages""" start="00:11:22.189" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""for Emacs to be written.""" start="00:11:24.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""If you think everything you can think of""" start="00:11:25.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""or you need has already been written, well, guess what?""" start="00:11:28.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""No.""" start="00:11:31.349" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""These are still plenty of specialized things""" start="00:11:31.789" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""that could need your help.""" start="00:11:34.045" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""These cubes do not require advanced mathematics,""" start="00:11:36.789" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""contrary to what you may think.""" start="00:11:39.789" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Yes, you can apply advanced mathematics to them""" start="00:11:41.149" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""if you want to, but you don't have to.""" start="00:11:44.709" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""What surprised me about this is basically group theory.""" start="00:11:47.469" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I've heard of it before.""" start="00:11:50.989" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""It seemed to be a meme, basically,""" start="00:11:52.069" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""because it has been like mostly Haskell people""" start="00:11:53.829" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""being very excited about this""" start="00:11:56.469" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and it seemed kind of, like, divorced from reality, basically.""" start="00:11:58.189" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""But this puzzle, it actually proves that yes,""" start="00:12:02.509" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""it has its use.""" start="00:12:05.949" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""It definitely has.""" start="00:12:06.949" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""You just have to find the right problem matching it,""" start="00:12:08.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and yeah.""" start="00:12:11.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So yeah, once I understand it better,""" start="00:12:13.469" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""the topic, I expect to write better code.""" start="00:12:15.389" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""These new Emacs features, they work well enough.""" start="00:12:18.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""There are some rough edges.""" start="00:12:24.469" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""They definitely need more testing.""" start="00:12:25.909" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So please, please, everyone,""" start="00:12:27.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""if you write Elisp, please try SQLite or Transient""" start="00:12:30.669" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""or anything else that looks cool and shiny.""" start="00:12:34.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Report bugs.""" start="00:12:36.709" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Find ways to improve them, anything. And yeah,""" start="00:12:38.469" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I'm sure that if we do this,""" start="00:12:41.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""then Emacs will continue to get even better.""" start="00:12:44.869" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""So yeah, what's next for this package?""" start="00:12:47.669" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Well, I could... There are lots of obvious UI improvements""" start="00:12:51.789" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""and testing to be done.""" start="00:12:55.989" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I basically want to reach feature parity""" start="00:12:57.349" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""with the twisty-timer app, which this is very much inspired by.""" start="00:12:59.709" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I want nice-looking stats like graphical ones""" start="00:13:02.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""instead of just a simple list of times.""" start="00:13:06.669" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And I want support for more puzzles, of course,""" start="00:13:08.789" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""not just the simple cubes,""" start="00:13:11.229" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""but as I progress learning these puzzles,""" start="00:13:12.549" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""I want to have Emacs supporting me for this.""" start="00:13:14.589" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""But generally, it's a very open-ended package.""" start="00:13:18.069" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""And this concludes the talk.""" start="00:13:22.429" video="mainVideo-cubing" id="subtitle"]]
+[[!template text="""Thank you very much.""" start="00:13:26.629" video="mainVideo-cubing" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+Questions or comments? Please e-mail [mail@vasilij.de](mailto:mail@vasilij.de?subject=Comment%20for%20EmacsConf%202023%20cubing%3A%20Speedcubing%20in%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/cubing-before.md b/2023/info/cubing-before.md
new file mode 100644
index 00000000..c1dbf0c3
--- /dev/null
+++ b/2023/info/cubing-before.md
@@ -0,0 +1,26 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 14-min talk; Q&A: IRC
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="cubing-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="cubing-mainVideo" data="""
+00:00.000 Introduction
+01:35.400 Cubing in Emacs
+02:01.160 Prior art
+02:32.040 The name
+03:16.520 What's in wca-prep
+03:49.240 Demo
+05:15.340 Challenges: Representing the cube
+07:09.220 Scrambling
+08:09.500 Visualization
+08:56.420 UI with Transient
+09:55.580 Book-keeping with SQLite
+11:12.580 Conclusion
+
+"""]]<div></div>Duration: 13:35 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--alternative.webm">Download --alternative.webm (16MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--main.opus">Download --main.opus (8.6MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--presentation.webm">Download --presentation.webm (16MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann--solve-demo.webm">Download --solve-demo.webm (11MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-cubing--speedcubing-in-emacs--vasilij-wasamasa-schneidermann.pdf">Download .pdf</a></li><li><a href="https://toobnix.org/w/2DYX2o8kB1Rv8Mqaj7H1Dx">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/cubing-nav.md b/2023/info/cubing-nav.md
new file mode 100644
index 00000000..3f0e5db3
--- /dev/null
+++ b/2023/info/cubing-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/poltys">The browser in a buffer</a>
+Next by track: <a href="/2023/talks/emms">Emacs MultiMedia System (EMMS)</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/devel-after.md b/2023/info/devel-after.md
new file mode 100644
index 00000000..297fbe3d
--- /dev/null
+++ b/2023/info/devel-after.md
@@ -0,0 +1,561 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="devel-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""2 seconds. All right. I think we are live.""" start="00:00:02.419" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Yes. So, hi again, everyone.""" start="00:00:08.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I have the pleasure to welcome John Wiegley""" start="00:00:10.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""in person to this EmacsConf.""" start="00:00:13.620" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Hi, John. Hello there.""" start="00:00:15.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""How are you doing, Leo?""" start="00:00:17.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I am doing fantastic, and even more now that""" start="00:00:18.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I am in a room with you because we've been,""" start="00:00:21.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""we were reminiscing with Sacha.""" start="00:00:24.279" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So you had been there in person in 2013 And""" start="00:00:25.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""since we started doing those online,""" start="00:00:30.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Juan, since 2019, I think you've always been""" start="00:00:32.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""online, right? Usually it's a pre-recorded""" start="00:00:35.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""video. I think this will be the first 1 I do""" start="00:00:38.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""live in a long time. You're right.""" start="00:00:40.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm saying we are online right now,""" start="00:00:42.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but I just meant pre-recorded video.""" start="00:00:44.239" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So it's good to have you almost in person or""" start="00:00:45.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""at least live and we are excited to hear""" start="00:00:48.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""about some of the Emacs news.""" start="00:00:50.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So the floor is yours.""" start="00:00:52.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""All right, well welcome everybody.""" start="00:00:55.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""This is the yearly state of the Emacs union,""" start="00:00:57.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I guess, about how Emacs development is""" start="00:01:00.239" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""going. Just to note, I am not currently a""" start="00:01:02.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""maintainer of Emacs. So what I do to get""" start="00:01:05.379" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""these notes is I call up my friend,""" start="00:01:07.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Eli Zaretsky, 1 of the current Emacs""" start="00:01:09.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""maintainers, and he and I sit down for an""" start="00:01:12.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""hour, and he just gives me his dump of what's""" start="00:01:13.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""been going on. So I'm sort of just the""" start="00:01:17.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""messenger here. But thanks to Eli for these""" start="00:01:19.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""notes and all of the efforts that he""" start="00:01:22.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""contributes. So what he's been telling me is""" start="00:01:24.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that this Emacs 29 release that we had""" start="00:01:27.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""recently looks to have been very,""" start="00:01:30.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""very successful, which is some good news,""" start="00:01:31.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""because there were a lot of new features,""" start="00:01:33.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and some of those features were actually""" start="00:01:35.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""quite radical. So far,""" start="00:01:37.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it's been quite a success,""" start="00:01:39.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""no serious problems with it,""" start="00:01:40.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and we have Emacs 29.2""" start="00:01:42.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""will be released very soon.""" start="00:01:45.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""They are thinking now about starting the""" start="00:01:47.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Emacs 30 release cycle soon after 29.2""" start="00:01:50.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""is released, where the release branch,""" start="00:01:53.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""which is called Emacs-30 usually,""" start="00:01:55.880" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""will be cut and then development will become""" start="00:01:59.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""frozen with only bug fixes going into that""" start="00:02:01.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""branch. That may take quite some time until""" start="00:02:03.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it actually comes to fruition as a release,""" start="00:02:07.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but at least it means that the release is""" start="00:02:09.639" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""going to start taking shape in that branch""" start="00:02:11.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""soon. So, for now, Emacs 30 looks like maybe""" start="00:02:13.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it's going to be a little less interesting""" start="00:02:17.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""than Emacs 29 was, meaning not a huge number""" start="00:02:19.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""of changing features. But there are still""" start="00:02:23.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""some new things going in.""" start="00:02:25.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So 1 of them is that Emacs 30 is going to""" start="00:02:26.980" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""have Android support. So you will be able to""" start="00:02:29.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""run Emacs 30 on your Android devices.""" start="00:02:32.300" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So if you've ever wanted to have native Emacs""" start="00:02:35.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""on a tablet, which I know I've always wanted,""" start="00:02:37.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that will become possible with Emacs 30.""" start="00:02:40.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""There's also going to be much better support""" start="00:02:43.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""for touchscreen devices,""" start="00:02:45.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""coincidentally, both laptops and tablets.""" start="00:02:47.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So that'll enhance that Android support.""" start="00:02:50.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""There will be some recently gained support""" start="00:02:54.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""for LLDB in GUD.dl. So if you're on a Mac OS""" start="00:02:57.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""machine or a machine that uses just LLVM as""" start="00:03:01.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""part of the compilation process,""" start="00:03:05.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""then you probably are familiar with LLDB as""" start="00:03:07.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the command line debugger.""" start="00:03:10.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And that support for using LLDB through a GUD""" start="00:03:11.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""will become possible in Emacs 30.""" start="00:03:15.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm looking forward to this actually quite a""" start="00:03:17.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""bit as well. C Perl mode is being deprecated,""" start="00:03:19.000" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and all future work now is only being put""" start="00:03:23.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""towards C Perl mode. Another 1 is that there""" start="00:03:25.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""are going to be some new major modes based on""" start="00:03:30.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""TreeSitter. They will be for the languages""" start="00:03:33.000" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Lua, Elixir, and HTML.""" start="00:03:35.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And if you're not familiar,""" start="00:03:38.800" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I think TreeSitter was introduced in Emacs""" start="00:03:40.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""29. It's a library that allows you to specify""" start="00:03:42.620" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the grammar of a programming language as a""" start="00:03:47.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""BNF file, and I think using JavaScript,""" start="00:03:49.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and then with that file as input to Emacs,""" start="00:03:53.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it is then able to do syntax highlighting,""" start="00:03:56.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""syntax discovery, all of those things within""" start="00:04:00.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Emacs without having to use elisp and regexps""" start="00:04:03.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""to discover the structure of the language.""" start="00:04:06.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""It defers the structure gathering to""" start="00:04:08.300" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""TreeSitter and then uses that information to""" start="00:04:10.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""navigate the language.""" start="00:04:13.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So, As time goes on, you'll see more and more""" start="00:04:15.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""languages taking on TreeSetter support.""" start="00:04:17.300" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So the next 3 coming up,""" start="00:04:19.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Lua, Elixir, and HTML.""" start="00:04:21.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And then the last feature for Emacs 30 is""" start="00:04:24.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that the byte compiler will now detect and""" start="00:04:26.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""warn about many more questionable constructs.""" start="00:04:29.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Things like empty macro bodies,""" start="00:04:33.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""missing lexical constructs,""" start="00:04:35.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""or say, condition case without any handlers.""" start="00:04:37.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Just silly stuff that might litter the code,""" start="00:04:40.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but now you'll get a warning about it from""" start="00:04:43.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the byte compiler to help you clean up the""" start="00:04:45.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""code and get rid of those potential sites of""" start="00:04:46.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""error. So this is the main thing that will be""" start="00:04:49.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""worked on for Emacs 30 and what's looked like""" start="00:04:52.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""shaping up for the release.""" start="00:04:55.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And also, he wanted me to announce that""" start="00:04:56.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Stefan Kongas is now a new co-maintainer.""" start="00:04:58.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And Stefan is, I believe,""" start="00:05:01.980" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""here with us in the conference and he'll be""" start="00:05:03.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""able, I hope, to help me answer any questions""" start="00:05:05.500" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""about future Emacs development because I'm""" start="00:05:08.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""not in the heat of it and don't have all""" start="00:05:10.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""those answers at the moment.""" start="00:05:12.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So That is all there is as far as a""" start="00:05:14.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""development update for now.""" start="00:05:17.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And I am available to take any questions.""" start="00:05:19.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""All right. Thank you so much,""" start="00:05:24.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Sean, for being the messenger of all this""" start="00:05:26.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""good news. I mean, you did start by saying""" start="00:05:29.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""this would not be as exciting,""" start="00:05:31.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""perhaps, as prior releases of Emacs,""" start="00:05:33.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but you then proceeded to say a lot of stuff""" start="00:05:36.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that it felt very exciting to me.""" start="00:05:38.980" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So good, good. Glad to hear that.""" start="00:05:40.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Right. So we do have questions coming in""" start="00:05:44.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""already and again people the link is on IRC""" start="00:05:47.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and also on the talks page if you want to""" start="00:05:50.380" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""start asking questions.""" start="00:05:52.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So John what I'm going to do I'm going to""" start="00:05:53.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""read you the questions and then you can""" start="00:05:54.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""answer them. Is that okay with you?""" start="00:05:56.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Absolutely. So starting with the first""" start="00:05:58.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""question which changes in recent Emacs""" start="00:06:01.620" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""releases are you enjoying using?""" start="00:06:04.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I have really liked the visual line mode.""" start="00:06:08.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm not sure how recent that is.""" start="00:06:13.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Some of these features I only discovered""" start="00:06:15.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""quite late, the new display line number""" start="00:06:16.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""functionality, where it's much,""" start="00:06:19.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""much, much faster, and of course,""" start="00:06:21.380" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""native compilation. Native compilation has""" start="00:06:23.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""been quite brilliant for some of the larger""" start="00:06:25.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""packages that I use. I do a lot of stuff in""" start="00:06:27.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Emacs. I use GNU's, I use E-Shell,""" start="00:06:29.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I use Org Mode quite a lot.""" start="00:06:31.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So native compilation has brought the user""" start="00:06:33.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""experience much closer to a modern app than""" start="00:06:36.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""some of the lagging and slowness that I might""" start="00:06:39.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""have experienced in the past.""" start="00:06:42.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Definitely. Moving on to the next question.""" start="00:06:44.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""What do you think the future in the area of""" start="00:06:47.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""artificial intelligence from the developer""" start="00:06:49.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""point of view? Could you say that 1 more""" start="00:06:51.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""time? Your voice broke up a little bit.""" start="00:06:53.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Oh, sorry. What do you think the future in""" start="00:06:54.876" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the area of artificial intelligence from the""" start="00:06:55.025" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""developer point of view?""" start="00:06:55.141" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Could you say that 1 more time?""" start="00:06:55.208" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Your voice broke up a little bit.""" start="00:06:55.324" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Oh, sorry. What do you think the future in""" start="00:06:55.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the area of artificial intelligence from the""" start="00:06:58.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""developer point of view?""" start="00:07:00.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""It's also a shaky question,""" start="00:07:01.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I think, but you get the point.""" start="00:07:02.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I do use chat-gpt-shell inside of Emacs quite""" start="00:07:04.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""a bit, actually, when doing development in""" start="00:07:09.220" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""other languages. Just the other day,""" start="00:07:10.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I was working on my Ledger accounting""" start="00:07:12.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""program, and I haven't done a lot of C++ in""" start="00:07:15.220" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""recent years. So I had forgotten how to""" start="00:07:18.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""exactly compare 2 strings only up to the""" start="00:07:21.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""length of the shortest string.""" start="00:07:23.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I know I could have cranked that out just""" start="00:07:25.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""writing it C style, but I didn't remember""" start="00:07:26.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""what the current state of the art is for C++""" start="00:07:28.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and the STL. So I just asked chatGPT.""" start="00:07:30.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I asked the exact question that I just said""" start="00:07:33.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""to you and sure enough it popped out the""" start="00:07:36.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""one-liner that was exactly what I needed.""" start="00:07:38.220" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So I think in terms of developer assistance,""" start="00:07:40.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""not having to keep all of standard libraries""" start="00:07:42.800" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""or common idioms in memory.""" start="00:07:45.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I don't know if other people are familiar""" start="00:07:47.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""with Rosetta Stone projects.""" start="00:07:49.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""They're projects where you have say a hundred""" start="00:07:51.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""different languages and there's a particular""" start="00:07:53.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""question, say, how do I read a file and copy""" start="00:07:55.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it to another location?""" start="00:07:58.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And then it has an instance of doing that""" start="00:07:59.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""activity for every 1 of those languages.""" start="00:08:01.880" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""That's a great database,""" start="00:08:04.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and I've used them quite a bit in the past""" start="00:08:05.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""for remembering how to do certain things,""" start="00:08:07.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""say, converting a string to UTF-8.""" start="00:08:09.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I think that AI does a great job of""" start="00:08:13.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""completely replacing the need for databases""" start="00:08:15.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""like that because you can just ask how do I""" start="00:08:17.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""copy a convert a string to UTF-8.""" start="00:08:19.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Yeah exactly and you know especially with""" start="00:08:23.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""languages which are tried well tried you know""" start="00:08:27.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it's very easy to get an answer that is""" start="00:08:30.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""correct. But sometimes what I find bothersome""" start="00:08:32.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""with this type of coding,""" start="00:08:34.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I think it's AI-aided coding,""" start="00:08:37.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but it's still coding,""" start="00:08:39.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""is that, especially with C languages,""" start="00:08:41.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""sometimes you're going to end up with""" start="00:08:43.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""undefined behaviors and stuff like this just""" start="00:08:44.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""because other people have been doing it,""" start="00:08:45.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""not because the algorithm or the model was""" start="00:08:47.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""trained with data that dates back to 10 years""" start="00:08:50.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""ago. At the time, C++ was a little different.""" start="00:08:53.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Anyway, I'm not here to talk,""" start="00:09:00.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""you are here to talk. Moving on to the next""" start="00:09:01.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""question. People already get to hear my voice""" start="00:09:03.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""plenty, whereas yours are much sparser.""" start="00:09:06.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""All right. So, what is the future of Emacs on""" start="00:09:10.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""macOS? I understand that there are too few""" start="00:09:13.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""developers for the platform.""" start="00:09:16.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Is that still true? That's a good question.""" start="00:09:17.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I don't know what the current statistics are.""" start="00:09:21.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I've been a user of Emacs on Mac OS for""" start="00:09:23.620" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""decades now. It feels like the,""" start="00:09:27.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""There's also that Mac port version of Emacs,""" start="00:09:30.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""which builds Emacs more directly using the""" start="00:09:33.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""GUI libraries on the platform.""" start="00:09:35.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""That continues to be updated with every""" start="00:09:38.300" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""single new release that comes out.""" start="00:09:40.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So I'd say that the support may not be as""" start="00:09:42.620" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""great as it is on Linux and other platforms,""" start="00:09:45.220" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but to this day I haven't suffered from being""" start="00:09:47.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""a Mac user. Great. The only thing I remember""" start="00:09:50.500" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""about Emacs on macOS was that emojis made it""" start="00:09:55.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""inside the GUI first before they did it""" start="00:10:00.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""anywhere else. That's the 1 anecdote that I""" start="00:10:03.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""have on MacOS. Right. And historically that""" start="00:10:05.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""feature was removed in order to prevent Mac""" start="00:10:09.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""from having features that Linux did not.""" start="00:10:12.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I didn't want to go into that point.""" start="00:10:15.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I just wanted to mention the beginning of the""" start="00:10:16.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""anecdote and people can find it out.""" start="00:10:18.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""But yes, that's also what it led to.""" start="00:10:19.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Moving on to the next question.""" start="00:10:24.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Why aren't you contributing to Emacs anymore?""" start="00:10:25.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Lack of time, I guess?""" start="00:10:28.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Lack of time, primarily.""" start="00:10:30.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Work has been very consuming.""" start="00:10:32.300" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""There are a lot of other projects and things""" start="00:10:33.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that I like doing. I still find Emacs Lisp""" start="00:10:36.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""very, very fun to write.""" start="00:10:39.000" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Just the other day, I was hacking up some""" start="00:10:40.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""extension macros for myself for org mode.""" start="00:10:43.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""But to have the time needed to sit down and""" start="00:10:45.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""design a whole new mode and work on it.""" start="00:10:48.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I've been spending a lot of my time now in""" start="00:10:51.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""functional languages, especially theorem""" start="00:10:53.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""provers. I just find that so intellectually""" start="00:10:55.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""satisfying and interesting.""" start="00:10:58.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Plus it pays a lot better.""" start="00:11:00.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Never had a paying job as an Emacs list""" start="00:11:01.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""developer. So when it comes to now just being""" start="00:11:03.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""a fun language or a hobby language,""" start="00:11:06.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it is relegated to the time that I have free""" start="00:11:08.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""when it's available. Right.""" start="00:11:10.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Well, the good thing is that it's kind of""" start="00:11:13.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""like riding a bicycle,""" start="00:11:15.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""you know, writing a major mode,""" start="00:11:16.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it comes back relatively quickly and still""" start="00:11:17.980" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""enjoyable. You know, the other day,""" start="00:11:20.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""actually, I took notes on a mode that I""" start="00:11:22.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""wanted to write. There's an app I use on the""" start="00:11:25.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Mac called drafts, and I really love it.""" start="00:11:28.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I use it all the time.""" start="00:11:30.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I wanted to mimic the interface of this app""" start="00:11:31.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""in Emacs. So I could use Emacs as my drafts""" start="00:11:34.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""application rather than this separate 1.""" start="00:11:37.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So I noted down all the different user""" start="00:11:40.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""parameters and how it should function and""" start="00:11:42.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""everything to describe the app to myself as""" start="00:11:44.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""sort of notes to get me started on that work""" start="00:11:47.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""when I did have free time to work on it.""" start="00:11:50.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Somebody out there on the internet just saw""" start="00:11:52.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""these notes, because I keep a lot of my stuff""" start="00:11:54.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""on GitHub. They fed it to chat GPT,""" start="00:11:57.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""going back to your AI question.""" start="00:12:00.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And they actually sent back to me a mode that""" start="00:12:02.220" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""implemented everything that I had said,""" start="00:12:04.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""which was effectively,""" start="00:12:06.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""chat GPT, seeing that what I had described""" start="00:12:08.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""was clear enough for it to derive most of the""" start="00:12:10.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""code that I would have wanted to write.""" start="00:12:14.500" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So maybe, maybe another thing that AI can do""" start="00:12:16.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""is it can increase the value,""" start="00:12:19.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the efficiency of my free time.""" start="00:12:21.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Exactly. I think that's a wonderful point.""" start="00:12:24.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And phrasing it as efficiency of free time is""" start="00:12:27.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""great because you still have the expertise,""" start="00:12:29.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""obviously, that you're mobilizing into the""" start="00:12:31.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""design that you're formulating to charge DPT,""" start="00:12:33.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but then this expertise is turned into""" start="00:12:35.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""something that actually works.""" start="00:12:37.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Perhaps we're all going to become software""" start="00:12:40.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""architects at some point,""" start="00:12:41.780" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and then the busy work of actually coding the""" start="00:12:42.980" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""library and the software will be relegated to""" start="00:12:45.800" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""AI. That's an interesting future where we""" start="00:12:48.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""still, however, need to acquire the skills to""" start="00:12:51.000" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""know what is code, I suppose.""" start="00:12:55.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""But that's an interesting future to think of.""" start="00:12:56.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""A fairly long question.""" start="00:13:00.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So 1 of the tricky things about running Emacs""" start="00:13:02.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""on Android is do you use anything that""" start="00:13:04.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""requires extra packages?""" start="00:13:06.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Example like PDF tools with new PDF or going""" start="00:13:08.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""with a database, playing music or video with""" start="00:13:11.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""MPD or MPV on Bonga, LFeed.""" start="00:13:13.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Do you run Emacs Termex,""" start="00:13:16.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Emacs APK, Emacs in virtual machine?""" start="00:13:18.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""This is also the case on Emacs for Windows to""" start="00:13:20.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""a lesser degree. So summarizing,""" start="00:13:22.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""how do you make Emacs work on Android if you""" start="00:13:24.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""do not have the synergy of stuff that you""" start="00:13:27.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""usually find on Linux systems like MPV and""" start="00:13:30.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""all the fancy applications like this?""" start="00:13:32.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""It's a good question. Since I'm not an""" start="00:13:35.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Android user and I've never tried running""" start="00:13:38.380" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Emacs on Android platforms,""" start="00:13:40.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm not sure what's available out there to""" start="00:13:42.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""plug Emacs into. I mean,""" start="00:13:44.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""effectively, that question comes down to""" start="00:13:46.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""external dependencies and system support.""" start="00:13:48.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""That would be a great question for Stefan or""" start="00:13:50.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""somebody who has tried using Emacs,""" start="00:13:53.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the development version of Emacs on Android.""" start="00:13:56.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Great. We'll put a pin in this for Stéphane""" start="00:14:00.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""afterwards. Great, so moving on to the next""" start="00:14:04.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""question. Will Org Tech someday become the""" start="00:14:07.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""default tech mode in Emacs?""" start="00:14:09.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And if so, when? Will Org what become?""" start="00:14:11.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Org Tech, you know, the LaTeX mode.""" start="00:14:15.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I do not know. It's been a while since I've""" start="00:14:19.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""done LaTeX. It must have been like 4 years,""" start="00:14:24.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but it was a pretty, the major mode for""" start="00:14:26.880" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""editing documents, like the state of the art""" start="00:14:30.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""for editing latex documents in Emacs.""" start="00:14:32.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And apparently it's not default.""" start="00:14:34.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I assume there's latex mode or something that""" start="00:14:36.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""is doing it. So were you saying octech,""" start="00:14:38.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""like A-U-C tech? Oh, did I not pronounce the""" start="00:14:41.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""C? Octech, yes. I thought you said org tech.""" start="00:14:45.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I wasn't familiar with that.""" start="00:14:48.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Octech is the only 1 I've ever used.""" start="00:14:50.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I know there is a built-in LaTeX mode,""" start="00:14:52.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but I've never used it.""" start="00:14:55.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I always just download whatever the latest""" start="00:14:57.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""version of Org Tech is and use that.""" start="00:14:59.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I don't know why it's not a standard package.""" start="00:15:01.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Becoming a standard package has its own costs""" start="00:15:03.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""for the development cycle because it slows""" start="00:15:07.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""down release cycle quite a bit.""" start="00:15:09.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""It's now you have to create PRs that are""" start="00:15:12.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""reviewed by the Emacs Devel mailing list.""" start="00:15:14.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""It is a little more inertia.""" start="00:15:17.620" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Of course, it gets you more distribution""" start="00:15:19.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""because it's a default package now,""" start="00:15:21.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and everybody can be using that.""" start="00:15:24.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""But it's not something every developer""" start="00:15:26.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""decides to do. It took a few years,""" start="00:15:28.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""in fact, to get usePackage into Emacs core.""" start="00:15:31.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And that only happened after it was so stable""" start="00:15:34.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that it really wasn't receiving many changes""" start="00:15:37.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""anymore. Yeah, yeah it's it's the thing when""" start="00:15:39.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""you move into core you lose a lot of your""" start="00:15:44.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""agility in terms of how you're writing the""" start="00:15:46.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""code or how you expand code.""" start="00:15:49.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""That's why you have this vibrant community on""" start="00:15:51.300" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Melpa compared to core but you know it""" start="00:15:54.220" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""doesn't necessarily ought to be this way it""" start="00:15:57.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""could be a little different you know And it""" start="00:15:59.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""feels like there's this repetition between""" start="00:16:02.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""repartition, sorry, between people developing""" start="00:16:04.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""for the core of Emacs and people developing""" start="00:16:06.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""on Melpa, but at the end of the day those 2""" start="00:16:08.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""groups are constantly talking to 1 another""" start="00:16:10.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and taking cues from 1 another as well.""" start="00:16:13.180" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So that's great. And there's of course...""" start="00:16:15.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""May I jump in about this particular question""" start="00:16:18.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""because I think I mean You know,""" start="00:16:21.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Org Mode doesn't really have any problems""" start="00:16:25.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""with releases Correct.""" start="00:16:27.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Just because it's distributed with Emacs so""" start="00:16:29.380" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""there is a difference between being in the""" start="00:16:32.860" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""core proper and being distributed with Emacs.""" start="00:16:35.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And for something like use packages,""" start="00:16:38.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it's really necessary to be in the core.""" start="00:16:40.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""But for something like major mode,""" start="00:16:42.600" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it's a bit easier. That's a very very good""" start="00:16:45.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""point. Yeah, I'd forgotten about that""" start="00:16:48.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""distinction. Org mode does advance pretty""" start="00:16:50.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""rapidly and then it makes releases into the""" start="00:16:53.000" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""core distribution. Gianni,""" start="00:16:55.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I believe you also wanted to say something""" start="00:16:59.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""before someone started jumped in with a""" start="00:17:01.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""question do you happen to remember okay""" start="00:17:03.840" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that's fine I lost her to lost to their time""" start="00:17:08.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'll be moving on to the next question then""" start="00:17:12.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and by the way feel free to interrupt us you""" start="00:17:15.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""know The whole point of this discussion is""" start="00:17:17.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""for you to ask questions to John Wheatley.""" start="00:17:19.619" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So whether it be via the other pad or via""" start="00:17:21.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""BBB, choose your weapon.""" start="00:17:23.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""All right, moving on to the next question in""" start="00:17:27.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the meantime. And we have about 7 minutes""" start="00:17:28.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""left of Q&A and then we'll be moving on to""" start="00:17:30.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Stéphane. So, do you use other IDEs for""" start="00:17:32.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""theorem proving work, notably VS Code for""" start="00:17:35.780" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Lean? Which languages and provers can or do""" start="00:17:38.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""you use Emacs for? I've only used Emacs.""" start="00:17:42.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I've used Emacs for working with ACL 2,""" start="00:17:46.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Coq, Agda, and Lean, and I really love""" start="00:17:49.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Proof-General. Coq is my favorite language to""" start="00:17:53.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""be working in. Agda has really great support""" start="00:17:55.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""as well, has a very nice Emacs mode.""" start="00:17:57.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm only just now starting to get into Lean""" start="00:17:59.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""4. So I have everything installed,""" start="00:18:02.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but I haven't really started coding in""" start="00:18:05.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""earnest. I'm still reading a lot of the""" start="00:18:07.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""tutorials and learning a bit about the""" start="00:18:08.800" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""language. There was a while there where I""" start="00:18:10.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""used a IDE for ACL 2 that was outside of""" start="00:18:13.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Emacs, only because it was the same IDE all""" start="00:18:17.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""my co-workers were using and it was easier to""" start="00:18:19.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""share tips and tricks with them.""" start="00:18:22.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""But yeah, no, I found Emacs to be a great""" start="00:18:24.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""home for doing theorem proving.""" start="00:18:28.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Right. Next question. Can we see that AI""" start="00:18:32.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""generated draft? You know what you mentioned""" start="00:18:36.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""before about the draft that you then fed into""" start="00:18:40.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""ChargPT? Do you happen to have this draft""" start="00:18:43.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""anywhere? Let me see if it's still on GitHub.""" start="00:18:45.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Just take me 1 second to take a look here.""" start="00:18:51.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Take your time. The problem is I don't quite""" start="00:18:55.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""remember where I made the note.""" start="00:18:59.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""But no, I don't see it on GitHub,""" start="00:19:04.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""so I don't have it readily at hand.""" start="00:19:07.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Well, that's fine. We'll be able to...""" start="00:19:10.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Well, if you happen to find it,""" start="00:19:13.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""we'll make sure to add it on the pad and then""" start="00:19:15.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""on the talks page. And I think we would all""" start="00:19:17.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""be interested to see what this design""" start="00:19:20.940" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""document that actually made something work""" start="00:19:22.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""afterwards in JudgeDPT with Elisp.""" start="00:19:27.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm very interested to see what it would do""" start="00:19:28.980" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""because I tend to be very interested about""" start="00:19:30.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""this type of stuff I had generated but I""" start="00:19:32.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""never thought about doing it with Elisp""" start="00:19:34.780" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""because somehow it feels like 2 different""" start="00:19:37.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""worlds, like Elisp is kind of from the past,""" start="00:19:39.000" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""don't going me wrong, I love it and I use it""" start="00:19:41.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""every day But it's 2 different parts of my""" start="00:19:44.140" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""brain that I didn't think about linking.""" start="00:19:46.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So I'd be very excited to see this as well.""" start="00:19:48.820" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Moving on to the next question.""" start="00:19:53.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Oh, go on, please. I did find it.""" start="00:19:54.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm gonna have to give it to you as a link""" start="00:19:57.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""here. Sure, you can do it on the blue button""" start="00:20:01.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and I'll put it on the pad.""" start="00:20:03.380" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I put it into the public chat for Bibi.""" start="00:20:10.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Yes. So if anyone is interested,""" start="00:20:12.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm putting it right in the answer to the""" start="00:20:15.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""question right here on my screen.""" start="00:20:18.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So feel free to click on it and explore it.""" start="00:20:20.200" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm kind of curious, so I'm gonna...""" start="00:20:22.120" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Can I click it on stream and can we look at""" start="00:20:23.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""it a little bit together?""" start="00:20:25.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Sure, sure. I haven't tried running it,""" start="00:20:26.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I can't say for its fitness,""" start="00:20:29.020" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but it's definitely enough of the groundwork""" start="00:20:31.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""done that it's absolutely an assistance.""" start="00:20:34.400" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Right. Okay, so it's loading up right now?""" start="00:20:38.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""You can see my webcam,""" start="00:20:41.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""right? I can see your browser attempting to""" start="00:20:42.620" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""load. There we go. Okay,""" start="00:20:45.680" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""cool. So I'm not sure what GitHub is doing.""" start="00:20:47.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Let me give it a little more room.""" start="00:20:50.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""The reactive setup is not working too well.""" start="00:20:51.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Oh, I see. You're viewing the...""" start="00:20:57.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I see. Can I see the file then?""" start="00:20:59.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I should be able to see the file.""" start="00:21:02.220" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I think he just mentions the code in that""" start="00:21:06.460" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""comment. So if there's a way to view only the""" start="00:21:09.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""comment it would make it clear.""" start="00:21:11.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Right. Okay. I'm loading the file separately.""" start="00:21:14.897" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""I'm checking the time.""" start="00:21:17.320" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""We have about 3 minutes left and I think we""" start="00:21:18.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""have a question. In the meantime,""" start="00:21:21.340" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""whilst I show this, I'm gonna launch another""" start="00:21:22.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""question, which was about Drafts.""" start="00:21:25.760" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""You are carrying, you're talking about""" start="00:21:29.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Drafts, but does that mean you're not using""" start="00:21:30.740" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""org anymore? Oh, no, I use org all the time.""" start="00:21:32.480" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""In fact, the way that I've configured drafts""" start="00:21:35.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""is that after I type the thing in the note""" start="00:21:38.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""into drafts, I hit a key and it creates an""" start="00:21:40.580" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""org mode capture item for it.""" start="00:21:43.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""The reason why I use Drafts instead of Emacs""" start="00:21:45.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""is because it's always available.""" start="00:21:48.560" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""If Emacs is currently doing some job for me,""" start="00:21:51.100" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""say I'm running some long-running subshell""" start="00:21:53.960" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and the UI is frozen up whatnot,""" start="00:21:57.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Drafts is always 100% of the time instantly""" start="00:21:59.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""available. So that's why I tend to then lean""" start="00:22:02.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""on it a bit, but all of the destination of""" start="00:22:04.900" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that data is still Org Mode and everything""" start="00:22:07.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that I do gets tracked through Org Mode.""" start="00:22:10.240" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""That's also why I wanted to implement the UI""" start="00:22:13.080" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""scheme of drafts in Emacs so that I could""" start="00:22:16.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""drop the use of this external application.""" start="00:22:18.800" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And then, I mean, I would still have the""" start="00:22:21.540" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""problem of sometimes Emacs being unavailable,""" start="00:22:23.160" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but I would pay that price in order to have""" start="00:22:26.060" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""that good UI of drafts inside Emacs.""" start="00:22:30.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Great. I think we have,""" start="00:22:34.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""we might be too tight on time.""" start="00:22:38.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""We only have about 2 minutes and I need to""" start="00:22:39.720" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""jump room to go into Stephane's room as well.""" start="00:22:41.640" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So John, where I get to thank you so much for""" start="00:22:44.440" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""taking the time to answer our questions,""" start="00:22:47.380" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""but also doing a little bit of reporting on""" start="00:22:53.260" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""the state of Emacs. And now we'll get to""" start="00:22:55.040" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""continue this with Stéphane.""" start="00:22:58.380" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""So do you have any last words for everyone,""" start="00:22:59.280" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""John? No, no. I look forward to hearing""" start="00:23:01.300" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Stéphane speak. Okay, great.""" start="00:23:03.660" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""And we'll look forward,""" start="00:23:06.420" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""potentially, to having you again next year,""" start="00:23:07.360" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""potentially still doing news like this,""" start="00:23:10.520" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""and, fingers crossed, maybe having you live""" start="00:23:12.980" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""again. Maybe, maybe let's see what happens.""" start="00:23:15.920" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""All right, John. Thank you so much.""" start="00:23:19.700" video="mainVideo-devel" id="subtitle"]]
+[[!template text="""Bye bye. Bye bye.""" start="00:23:20.860" video="mainVideo-devel" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20devel%3A%20Emacs%20development%20updates)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/devel-before.md b/2023/info/devel-before.md
new file mode 100644
index 00000000..5429f360
--- /dev/null
+++ b/2023/info/devel-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 24-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="devel-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-devel--emacs-development-updates--john-wiegley--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 23:22 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--main.opus">Download --main.opus (7.8MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--main.webm">Download --main.webm (38MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-devel--emacs-development-updates--john-wiegley--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/57HSebb9a9JZynh2B3ehze">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/devel-nav.md b/2023/info/devel-nav.md
new file mode 100644
index 00000000..451e821f
--- /dev/null
+++ b/2023/info/devel-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/unentangling">(Un)entangling projects and repos</a>
+Next by track: <a href="/2023/talks/core">Emacs core development: how it works</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/doc-after.md b/2023/info/doc-after.md
new file mode 100644
index 00000000..7df3351e
--- /dev/null
+++ b/2023/info/doc-after.md
@@ -0,0 +1,1189 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="doc-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Hello, everyone.""" start="00:00:00.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This talk is on literate documentation""" start="00:00:04.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with Emacs and org-mode.""" start="00:00:07.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I'm going to take just a moment here""" start="00:00:10.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to unpack what I just said.""" start="00:00:12.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Emacs, as most of us probably already know,""" start="00:00:14.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is a powerful text editor and list programming environment""" start="00:00:17.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""from the 1970s.""" start="00:00:21.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Chances are, if you're attending this talk,""" start="00:00:23.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you already know a bit about Emacs.""" start="00:00:25.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""org-mode is an Emacs major mode and authoring tool""" start="00:00:28.820" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that helps you write documents in a plain text markup""" start="00:00:32.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""language called Org.""" start="00:00:36.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""These Org documents can be exported""" start="00:00:37.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to a number of different document formats,""" start="00:00:40.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""like HTML, PDF, ODT, Markdown, and more.""" start="00:00:42.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""org-mode has a lot of features.""" start="00:00:48.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It can be an outliner, a to-do list manager,""" start="00:00:51.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""an agenda, organizer, and much more.""" start="00:00:54.240" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Org Babel and literate programming""" start="00:00:57.760" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Today, we're going to be demonstrating""" start="00:00:57.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""what I consider to be org-mode's killer feature called""" start="00:00:59.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Org Babel.""" start="00:01:03.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Babel allows you to take human language prose,""" start="00:01:04.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""computer language source code blocks, and their outputs""" start="00:01:07.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and weave them together seamlessly""" start="00:01:11.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to form a cohesive document.""" start="00:01:13.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It is seriously cool.""" start="00:01:16.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Literate documentation is a play on the term""" start="00:01:19.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""literate programming, popularized by Donald Knuth""" start="00:01:21.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in the early 1980s.""" start="00:01:25.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Knuth's literate programming idea""" start="00:01:27.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""was that computer programs could be""" start="00:01:29.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""expressed in a natural language and be""" start="00:01:31.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""human-readable documents rather than written exclusively""" start="00:01:34.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""for machines to read.""" start="00:01:38.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""In a traditional program, you might""" start="00:01:40.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""have a bunch of machine-readable source code""" start="00:01:43.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and a handful of human-readable comments,""" start="00:01:45.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which attempt to describe what the program is doing.""" start="00:01:48.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Literate programming flips this on its head.""" start="00:01:51.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""A literate program is a document that""" start="00:01:54.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""describes how the program works with machine-readable source""" start="00:01:56.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""code blocks inside of it.""" start="00:02:01.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""These source code blocks are later""" start="00:02:02.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""tangled out of the document and submitted to the machine""" start="00:02:04.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""either to be compiled or interpreted and ultimately run.""" start="00:02:08.440" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""This presentation""" start="00:02:14.080" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Throughout this presentation, you'll""" start="00:02:14.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""see my browser window here on the left side of the screen.""" start="00:02:15.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And on the right side, I've got a terminal session""" start="00:02:19.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""running tmux.""" start="00:02:22.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This allows us to have a virtual terminal window connected""" start="00:02:23.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to two separate Linux machines, one running Ubuntu Server 2204""" start="00:02:28.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and another running Fedora Server 38.""" start="00:02:35.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I've specifically chosen these two distributions for my demo""" start="00:02:39.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because they are representative of the two dominant flavors""" start="00:02:43.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of GNU Linux, Debian and RedHat.""" start="00:02:46.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""In both cases, these are bare-bones server additions""" start="00:02:49.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with the stock packages installed.""" start="00:02:53.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I've manually installed a few packages like Git, emacs-noex""" start="00:02:55.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to get the terminal version of emacs, and tmux.""" start="00:03:00.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""But otherwise, these Linux installs""" start="00:03:04.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""are what you'd get right out of the box.""" start="00:03:06.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""For this demo, I've created a literate org-mode document""" start="00:03:08.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that describes how to build GNU Emacs from its source code""" start="00:03:12.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on both Debian and RedHat-based systems.""" start="00:03:16.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""While both operating systems are very similar,""" start="00:03:19.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""they differ substantially on which packages""" start="00:03:22.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""are installed out of the box, how optional packages are""" start="00:03:25.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""named, searched, and installed, and of course,""" start="00:03:29.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the distributions have different names,""" start="00:03:32.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""like Ubuntu or Fedora.""" start="00:03:34.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I chose building Emacs from source""" start="00:03:36.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""as a topic for this demonstration""" start="00:03:39.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because while the process is largely""" start="00:03:41.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the same on both RedHat and Debian,""" start="00:03:43.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""there are a lot of minor little differences""" start="00:03:46.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that need to be accounted for, which really prohibits you""" start="00:03:49.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""from hard coding names of packages and package management""" start="00:03:52.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""tools and distributions into your document.""" start="00:03:57.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I suppose you could create two versions of the same document,""" start="00:04:01.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""one specifically for RedHat and one specifically for Debian,""" start="00:04:05.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but that would be really tedious to maintain.""" start="00:04:09.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Like if, for example, you updated some prose""" start="00:04:13.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in one document, you'd have to remember""" start="00:04:16.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to do it in the other one too.""" start="00:04:18.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And if you weren't careful, the two documents""" start="00:04:20.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""could drift out of sync.""" start="00:04:22.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""In this demo, I'll show you techniques""" start="00:04:25.260" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""for creating dynamic, literate documents that""" start="00:04:27.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""can change based on parameters and constants embedded""" start="00:04:30.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""into the non-exported regions of the document.""" start="00:04:34.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I'll show how with a single org-mode source document,""" start="00:04:38.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you can press a couple of keys to configure""" start="00:04:41.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it to export a RedHat-specific version of my building""" start="00:04:44.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Emacs from source essay or a Debian-specific version.""" start="00:04:48.720" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Getting started""" start="00:04:53.480" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""All right, let's get started.""" start="00:04:53.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll begin by firing up a new terminal Emacs session""" start="00:04:55.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on my Ubuntu machine.""" start="00:04:58.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now, I installed Emacs on this machine using apt-get.""" start="00:05:00.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And doing that, you get version 27.1,""" start="00:05:04.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is, hey, only two major versions""" start="00:05:07.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""behind the current version of Emacs.""" start="00:05:10.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This is another reason why I thought""" start="00:05:13.011" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""writing a guide on how to build Emacs from source code""" start="00:05:15.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""might be a good idea.""" start="00:05:18.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""You can get a much newer version of Emacs on Ubuntu""" start="00:05:19.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""if you install it via Snap, but, uh, Snaps.""" start="00:05:22.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Don't get me started.""" start="00:05:25.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now, I wanted to use a completely vanilla""" start="00:05:28.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""terminal mode install of Emacs for this demonstration""" start="00:05:30.922" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because my personal Emacs config has a ton of packages""" start="00:05:34.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""installed and is heavily modified.""" start="00:05:38.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I want folks to be able to follow along""" start="00:05:41.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with a bog-standard, out-of-the-box Emacs config.""" start="00:05:43.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The Emacs config on this Ubuntu machine""" start="00:05:47.580" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""has just two settings.""" start="00:05:49.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I require org-tempo because my fingers are hardwired""" start="00:05:51.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to use some of the handy shortcuts that it provides.""" start="00:05:55.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And I also turn off the menu bar""" start="00:05:58.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because I just can't stand to look at it.""" start="00:06:00.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's begin by opening a file called buildemacs.org,""" start="00:06:03.140" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which will be the source code""" start="00:06:07.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""for our literate org-mode document.""" start="00:06:08.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now, in preparation for this talk,""" start="00:06:11.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I've already written this document,""" start="00:06:12.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we'll take a look at the finished product""" start="00:06:14.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""here in a bit, but let's first take a look""" start="00:06:17.980" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""at how we might approach this task.""" start="00:06:19.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll start at the top of the document""" start="00:06:22.409" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""by filling out some export keywords.""" start="00:06:24.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""These keywords are something that every backend exporter,""" start="00:06:27.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""be it LaTeX or plain text or ODT or whatever, understands,""" start="00:06:30.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and they're essentially document metadata.""" start="00:06:35.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""As you can see, I'm typing `#+`""" start="00:06:38.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""followed by a couple characters""" start="00:06:42.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then `M-TAB` to auto-complete.""" start="00:06:43.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If you hit #+ by itself and then M-TAB,""" start="00:06:45.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you can see all the possible completions.""" start="00:06:50.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And as you can see, there's a lot.""" start="00:06:53.120" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""README""" start="00:06:55.780" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""The next thing we're gonna do is make a README section""" start="00:06:55.780" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""at the top of this document.""" start="00:06:58.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This section is intended for folks""" start="00:06:59.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""who are looking at the org-mode document,""" start="00:07:02.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""trying to figure out what it's for.""" start="00:07:04.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We don't want to actually export the section heading,""" start="00:07:06.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""so we're gonna tag it with the :noexport: tag.""" start="00:07:09.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then here, we just write something quick""" start="00:07:13.860" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to let folks know that this document""" start="00:07:15.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""can potentially execute code""" start="00:07:17.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and just a little something about what the document is for.""" start="00:07:19.800" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Writing a code block""" start="00:07:23.500" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Okay, so now that we've written some text,""" start="00:07:23.500" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""let's try our hand at writing a code block.""" start="00:07:26.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I'm getting pretty sick of looking at""" start="00:07:29.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the default Emacs theme.""" start="00:07:31.289" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All that blue and purple in the document""" start="00:07:32.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""makes it look bruised.""" start="00:07:35.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's make an Emacs Lisp code block""" start="00:07:37.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that switches the theme""" start="00:07:40.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to one of my favorite built-in themes, Leuven.""" start="00:07:41.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Leuven was created by my man, Fabrice Niessen,""" start="00:07:44.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""who I personally have learned a ton of org-mode stuff about""" start="00:07:48.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""just by studying his work.""" start="00:07:52.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now, if we cruise back up to the code block,""" start="00:07:54.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we should be able to hit `C-c C-c`,""" start="00:07:56.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and have it execute.""" start="00:07:58.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And there you have it, a high-contrast color theme""" start="00:08:00.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that was designed to look great in org-mode.""" start="00:08:03.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So that's great and all,""" start="00:08:06.980" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but there are a couple of things I don't like.""" start="00:08:08.080" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text=""":results none""" start="00:08:10.460" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""First of all, we don't need to see a #+RESULTS block here,""" start="00:08:10.460" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and that's because we're not really interested""" start="00:08:13.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in what the Emacs Lisp function `load-theme` returns.""" start="00:08:15.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I mean, it's great it returned t and all to indicate success,""" start="00:08:18.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we just don't need to see it.""" start="00:08:22.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We can slap a `:results none` header arg""" start="00:08:23.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on the code block to keep things nice and clean.""" start="00:08:26.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""There are a lot of different header args,""" start="00:08:30.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and I often confuse and misremember them.""" start="00:08:32.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So I'll always refer back to the org-mode manual""" start="00:08:35.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""when working with them.""" start="00:08:38.920" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Confirmation""" start="00:08:40.320" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""The second thing I don't like is that""" start="00:08:40.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""when we hit C-c C-c to execute the block,""" start="00:08:42.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Emacs prompted us if we really wanted to run the block.""" start="00:08:46.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Emacs Lisp is Emacs' mother tongue,""" start="00:08:49.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and I don't wanna be hassled when speaking""" start="00:08:52.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""my native language.""" start="00:08:53.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""There's a variable that controls this""" start="00:08:55.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""called `org-confirm-babel-evaluate`.""" start="00:08:57.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And this can be either set to t or nil""" start="00:09:00.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to either always confirm or never confirm.""" start="00:09:03.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If however, you provided a lambda, an anonymous function,""" start="00:09:06.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Org will call your function with the name of the language""" start="00:09:10.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and the source block that it's about to run.""" start="00:09:14.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And your function can make the decision""" start="00:09:16.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""about if Emacs should ask you for confirmation or not.""" start="00:09:19.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""What I'm doing here is setting `org-confirm-babel-evaluate`""" start="00:09:24.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""as a &quot;file local variable&quot;.""" start="00:09:27.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This means whenever the file is opened by Emacs,""" start="00:09:30.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it'll set this variable to be a lambda that returns nil,""" start="00:09:33.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""meaning don't confirm, on Elisp code blocks.""" start="00:09:38.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""As you can see, the variable is currently set""" start="00:09:42.860" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to its default value of t, meaning always confirm.""" start="00:09:45.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now if we save the buffer, exit Emacs,""" start="00:09:50.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and pop back in again,""" start="00:09:53.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""`org-confirm-babel-evaluate` should be set how we like it.""" start="00:09:55.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We were however prompted for confirmation""" start="00:10:00.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on setting the file-local variable,""" start="00:10:02.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which controls if we're prompted""" start="00:10:04.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""for Elisp source code block evaluation.""" start="00:10:06.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I feel like there's a Yo Dawg joke here somewhere.""" start="00:10:09.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""When we were prompted, we hit the exclamation mark,""" start="00:10:12.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which automatically marks this variable as being safe.""" start="00:10:15.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So you won't be bothered the next time you open this file.""" start="00:10:18.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This variable is called `safe-local-variable-values`""" start="00:10:21.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and if we pop over to our .emacs file,""" start="00:10:26.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you can see that Emacs' customize tooling""" start="00:10:29.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""helpfully updated this variable in our config file for us.""" start="00:10:32.520" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Running blocks automatically""" start="00:10:36.960" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Now that's great and all,""" start="00:10:36.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but I really don't like having to hit `C-c C-c`""" start="00:10:38.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on that source block every time I open this document""" start="00:10:42.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""just to bring up the Leuven theme.""" start="00:10:45.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's have this source block run automatically""" start="00:10:47.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""every time the document is opened.""" start="00:10:50.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now I know what you're thinking.""" start="00:10:53.180" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Shouldn't you just put all of this configuration stuff""" start="00:10:55.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in your .emacs file and keep it out of the document?""" start="00:10:57.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Well, that's what I've done with my personal Emacs config,""" start="00:11:01.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but we want this document to be able to be used by folks""" start="00:11:04.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with a completely vanilla Emacs setup,""" start="00:11:08.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or even a completely tricked out Emacs setup,""" start="00:11:11.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""so we can't assume anything.""" start="00:11:13.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The idea is if the Emacs user who opens the document""" start="00:11:16.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""agrees to setting all of the variables""" start="00:11:19.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and running all of the code within,""" start="00:11:22.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""they'll be able to export the document""" start="00:11:24.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""as well as run all of the code blocks inside of it""" start="00:11:26.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""just as we intended.""" start="00:11:28.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And the differences in base Emacs configuration""" start="00:11:30.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""will be completely minimized.""" start="00:11:33.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now it's worth pointing out that the file-local variables""" start="00:11:35.980" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we're setting here are local, in this case, buffer-local.""" start="00:11:39.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The configuration we use in this document""" start="00:11:43.024" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""won't override someone's carefully constructed""" start="00:11:45.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""org-mode setup.""" start="00:11:48.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The first thing we're gonna wanna do""" start="00:11:49.500" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in order to make this block execute""" start="00:11:51.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""when the document is loaded is to give it a name.""" start="00:11:53.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It's always a good idea to give every source block""" start="00:11:55.989" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you create in your document a unique name,""" start="00:11:58.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""even if you don't refer to it elsewhere.""" start="00:12:01.338" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I do this because when I'm debugging my documents,""" start="00:12:03.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Emacs will prompt me about running a block.""" start="00:12:07.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If the block has a name, Emacs mentions it,""" start="00:12:10.020" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and I know there's a problem with the result caching""" start="00:12:12.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or something with the &quot;foo&quot; block.""" start="00:12:15.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""But if the block doesn't have a name,""" start="00:12:17.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it can be really hard to figure out""" start="00:12:20.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which block Emacs is complaining about.""" start="00:12:22.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So I always name my blocks.""" start="00:12:24.580" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now we're gonna add another file local variable,""" start="00:12:27.460" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but this one is special.""" start="00:12:30.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If your &quot;variable&quot;""" start="00:12:32.116" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""just happens to be named &quot;eval&quot;,""" start="00:12:34.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it means that Emacs should evaluate""" start="00:12:36.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the Lisp expression that follows.""" start="00:12:38.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Here we'll use the progn function""" start="00:12:40.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to sequentially run two elisp functions""" start="00:12:43.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and return the value of the last one executed.""" start="00:12:46.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The first function is `org-babel-goto-named-source-block`,""" start="00:12:48.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which jumps us to the startup block.""" start="00:12:53.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The second one is `org-babel-execute-src-block`,""" start="00:12:55.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which executes the current source block.""" start="00:12:59.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""That should get the job done.""" start="00:13:02.093" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now all we have to do is save the document,""" start="00:13:03.631" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""exit Emacs, jump back in,""" start="00:13:05.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and once we've confirmed that we're willing""" start="00:13:08.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to run the new &quot;eval&quot; line in our file local variables,""" start="00:13:10.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we're good to go.""" start="00:13:14.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now if we want to add new configuration stuff""" start="00:13:15.860" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to the document, we can just add it to the startup block""" start="00:13:18.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and not have to muck about with confirmations""" start="00:13:21.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or adding new file-local variables or whatever.""" start="00:13:24.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And just like before, we'll let Emacs' customize system""" start="00:13:28.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""save this decision to our .emacs file.""" start="00:13:31.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now that all that business with confirmations,""" start="00:13:34.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""file-local variables, and the startup block""" start="00:13:37.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""are out of the way,""" start="00:13:40.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can get on with writing our introduction.""" start="00:13:41.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll create a new top level headline called introduction""" start="00:13:44.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and explain to the reader of the exported document""" start="00:13:47.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""what this is all about.""" start="00:13:51.440" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Export options""" start="00:13:53.000" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Now as you can see, we've actually hard-coded""" start="00:13:53.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the name of the Linux distro in our prose.""" start="00:13:55.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I promised you a single document that could be""" start="00:13:58.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""for either RedHat or Debian distros,""" start="00:14:00.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""so we can't have this.""" start="00:14:03.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Astute members in the audience have probably been uneasy""" start="00:14:05.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""ever since I hard coded the name &quot;Debian&quot;""" start="00:14:08.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in the README section above.""" start="00:14:11.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""One way of solving this problem is by using exclude tags.""" start="00:14:13.860" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's add the `#+EXCLUDE_TAGS` export keyword to our document.""" start="00:14:17.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This keyword tells the exporter,""" start="00:14:21.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""&quot;Hey, if you see a headline tagged with any of these tags,""" start="00:14:24.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""don't export it.&quot;""" start="00:14:27.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""By default, the tag `:noexport:` is excluded.""" start="00:14:29.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And if you'll notice, we tagged our README section""" start="00:14:33.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with that tag, so it doesn't show up""" start="00:14:36.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in the exported document.""" start="00:14:38.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll keep this tag in the list,""" start="00:14:40.340" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but we'll also add the tag `:redhat:` as a tag to exclude.""" start="00:14:42.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now it's just a matter of creating two introduction""" start="00:14:47.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""sections, one for Debian, one for RedHat.""" start="00:14:50.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And if you want the RedHat version of the document,""" start="00:14:53.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you can just modify the `#+EXCLUDE_TAGS` line""" start="00:14:56.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""at the top of the document.""" start="00:14:59.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Awesome, right?""" start="00:15:00.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Right?""" start="00:15:02.340" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""OK, this is not that great.""" start="00:15:03.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Well, it does work.""" start="00:15:05.545" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And you can see if we export the document,""" start="00:15:07.388" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we'll get something that only references Debian,""" start="00:15:10.082" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and the `:noexport:` and `:redhat:`""" start="00:15:12.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""tagged headlines are omitted.""" start="00:15:15.189" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This strategy would work great""" start="00:15:17.451" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""when the RedHat- and Debian-specific sections""" start="00:15:19.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""are substantially different, but that's not""" start="00:15:22.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the case with the introduction.""" start="00:15:24.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We definitely don't want to have to maintain""" start="00:15:26.199" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""two distinct introductions.""" start="00:15:28.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I also noticed that the export tags are included""" start="00:15:30.825" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in the exported document.""" start="00:15:34.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""That's a terrible default. We'll fix that,""" start="00:15:36.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we'll also ensure that my email address appears""" start="00:15:38.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""at the top of the document.""" start="00:15:42.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's also take this opportunity to get rid""" start="00:15:43.372" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of the table of contents.""" start="00:15:45.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We don't need it.""" start="00:15:47.355" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""These are all export option settings""" start="00:15:48.868" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and can be modified using the options keyword""" start="00:15:51.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""at the top of the doc.""" start="00:15:53.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The manual is really your friend here,""" start="00:15:55.509" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""as there are a ton of export options.""" start="00:15:57.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now when we export the document again,""" start="00:16:00.980" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it should look a lot better.""" start="00:16:03.120" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Substituting constants""" start="00:16:05.700" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Now that we've cleaned up the look of the exported document,""" start="00:16:05.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we'll take a look at a better way""" start="00:16:09.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of solving the problem with the introduction.""" start="00:16:10.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Thinking like a programmer for a moment,""" start="00:16:13.378" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""what I really want here is a way of specifying a constant.""" start="00:16:15.519" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Rather than hard-coding the name &quot;Debian&quot; or &quot;RedHat&quot;""" start="00:16:19.735" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or whatever into my document,""" start="00:16:22.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I want to substitute that text with a symbolic constant,""" start="00:16:24.570" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""named something like &quot;distro&quot;, that can dynamically change""" start="00:16:28.235" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to &quot;Debian&quot; or &quot;RedHat&quot; or &quot;Slackware&quot; or whatever,""" start="00:16:31.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""depending on how the document is configured.""" start="00:16:36.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""In the past, I've come up with some pretty cumbersome ways""" start="00:16:38.690" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of doing this, but eventually I stumbled upon the idea""" start="00:16:41.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of using Org-mode properties""" start="00:16:44.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""as a way of storing these constants.""" start="00:16:46.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Like it says in the docs, properties are key-value pairs""" start="00:16:49.410" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that are associated with an entry""" start="00:16:53.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and they live in a collapsible properties drawer.""" start="00:16:55.170" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's do a bit of cleanup on our document""" start="00:16:58.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we'll put things into sections.""" start="00:17:00.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll also add a section for document constants.""" start="00:17:02.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And that's where we'll put the properties drawer""" start="00:17:14.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with the &quot;distro&quot; property.""" start="00:17:19.560" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Getting the properties""" start="00:17:25.740" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Now the question is,""" start="00:17:25.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""how do we reference these properties in the document?""" start="00:17:27.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It turns out there's an Elisp function""" start="00:17:30.100" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""called `org-property-values`, which does what we want.""" start="00:17:32.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If we run it and give it the name of our property,""" start="00:17:35.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it returns a list with the string &quot;Debian&quot; in it.""" start="00:17:38.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It's worth noting that this function is named""" start="00:17:42.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""`org-property-values` with values being plural.""" start="00:17:45.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""In org-mode, there could be a property named &quot;foo&quot;""" start="00:17:49.990" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that has different values depending on which heading level""" start="00:17:52.890" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you're at in the document,""" start="00:17:55.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is why the function returns a list.""" start="00:17:57.610" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""For our purposes though,""" start="00:17:59.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can just pull off the first value in the list with car""" start="00:18:01.290" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we're good to go.""" start="00:18:04.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now we'll make an Emacs Lisp list function called `get_prop`""" start="00:18:05.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that does just that.""" start="00:18:10.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This function takes one argument called `prop`,""" start="00:18:11.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is the property to look up""" start="00:18:14.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we'll give it a default value of &quot;distro&quot;.""" start="00:18:15.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we can hit `C-c C-c` on the block""" start="00:18:18.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to verify that it works.""" start="00:18:20.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now we just have to make an inline call""" start="00:18:23.150" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to our `get_prop` function""" start="00:18:25.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""within the prose of the introduction section.""" start="00:18:26.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And that should get us much closer""" start="00:18:29.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to not hard coding distro names into our document.""" start="00:18:31.660" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""But before we do that,""" start="00:18:35.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I need to clean up something that's been bothering me.""" start="00:18:36.870" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""By default, Emacs' `fill-column` variable""" start="00:18:39.850" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is set to 70 characters,""" start="00:18:42.910" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which may have been appropriate for 1970,""" start="00:18:44.990" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but it's not great for 2023.""" start="00:18:47.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll just cruise up to our startup block""" start="00:18:51.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and set the variable there.""" start="00:18:53.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll hit `C-c C-c`,""" start="00:18:56.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and now our document will wrap at 100 columns,""" start="00:18:58.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which for our purposes, I think is much more reasonable.""" start="00:19:02.290" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The org-mode syntax for making an inline function call""" start="00:19:05.830" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""within the prose of your document is `call_`,""" start="00:19:09.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""followed by the name of the function,""" start="00:19:13.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""some optional header arguments,""" start="00:19:15.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then the function arguments.""" start="00:19:17.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now, when we export the document,""" start="00:19:19.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we see that it's replaced our previously hard coded &quot;Debian&quot;""" start="00:19:21.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with the value from the property. Huzzah!""" start="00:19:26.050" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now this is close to, but not exactly what we want.""" start="00:19:29.410" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""You can see that &quot;Debian&quot; is surrounded by a backtick""" start="00:19:32.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and a single quote,""" start="00:19:36.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is the plain text exporters way""" start="00:19:37.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of showing you verbatim text.""" start="00:19:40.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""In more sophisticated document backends,""" start="00:19:43.030" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""verbatim text is rendered in monospace.""" start="00:19:45.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We can fix that by adding a &quot;:results raw&quot; header argument""" start="00:19:49.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to the inline call.""" start="00:19:54.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now, when we export the document,""" start="00:19:56.460" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it looks like what we'd expect.""" start="00:19:58.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now this is getting better, but it's still not great.""" start="00:20:00.290" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Macros""" start="00:20:03.060" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""The `call_` syntax is pretty cumbersome,""" start="00:20:03.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and it's a lot to type every time we want""" start="00:20:05.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to reference a constant""" start="00:20:08.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and not have it be marked up as verbatim.""" start="00:20:09.850" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This is where org-mode macros come to our rescue.""" start="00:20:13.220" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If we head to the top of the document,""" start="00:20:17.170" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can create a couple of macros""" start="00:20:19.470" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""using the `#+MACRO:` export keyword.""" start="00:20:21.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll define two macros with short names.""" start="00:20:24.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""One named &quot;p&quot; for &quot;property&quot;,""" start="00:20:27.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and the other one named &quot;pr&quot; for &quot;property raw&quot;.""" start="00:20:30.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Org-mode macros are expanded when the document is exported,""" start="00:20:34.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and any positional arguments provided""" start="00:20:39.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""are referenced by their number.""" start="00:20:41.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now in the introduction,""" start="00:20:43.860" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can use the macro replacement syntax,""" start="00:20:45.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is three curly braces,""" start="00:20:47.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""followed by the macro name and any arguments,""" start="00:20:49.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then three ending curly braces.""" start="00:20:52.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""You see why I kept the macro name short.""" start="00:20:55.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""That's six curly braces in total we're typing,""" start="00:20:58.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which still takes up a fair amount of space.""" start="00:21:01.280" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Properties in practice""" start="00:21:05.240" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Now let's take a look at how we might use""" start="00:21:05.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""these properties in practice.""" start="00:21:07.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Debian and RedHat distros differ""" start="00:21:09.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on how they install packages.""" start="00:21:11.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we're gonna want an &quot;install&quot; property,""" start="00:21:12.930" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""where in Debian we use `sudo apt-get install -qq`,""" start="00:21:16.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and on RedHat we'll use something like""" start="00:21:24.580" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""`sudo dnf install -y`.""" start="00:21:26.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now development packages""" start="00:21:33.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""also have a different naming convention.""" start="00:21:35.330" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""For example, the `ncurses` library on Debian""" start="00:21:38.050" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is called `libncurses-dev`,""" start="00:21:40.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""where on RedHat it's called `ncurses-devel`.""" start="00:21:43.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""There are likely going to be""" start="00:21:48.260" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""many more little differences like this""" start="00:21:49.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that we'll need to solve with properties.""" start="00:21:52.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now I already don't like where this is going.""" start="00:21:55.340" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Switching between the Debian and RedHat""" start="00:21:58.610" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""versions of the document is gonna mean""" start="00:22:00.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""commenting and uncommenting out""" start="00:22:03.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""a bunch of different properties,""" start="00:22:05.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is pretty janky.""" start="00:22:06.990" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Using a prefix""" start="00:22:09.020" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Luckily we can solve this problem""" start="00:22:09.020" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with a little bit of Emacs Lisp.""" start="00:22:11.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll start by modifying our properties,""" start="00:22:14.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""so their property names are prefixed""" start="00:22:16.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""with either `deb_` or `rh_`""" start="00:22:19.141" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to signify which distro the property applies to.`""" start="00:22:23.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll also create a single property called &quot;prefix&quot;,""" start="00:22:27.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which will be prepended to the property name""" start="00:22:31.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""by the `get_prop` function""" start="00:22:34.590" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""if the requested property is not found.""" start="00:22:36.530" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This way, when we want to switch between""" start="00:22:39.510" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the Debian and RedHat versions of the document,""" start="00:22:42.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we just need to change the prefix property.""" start="00:22:45.350" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So now we'll change the Elisp code.""" start="00:22:49.030" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we'll use a let expression with two bound variables.""" start="00:22:51.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The first one is called ret,""" start="00:22:55.210" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which determines if the initial call""" start="00:22:56.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to `org-property-values` succeeds.""" start="00:22:59.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The second variable is called prefix,""" start="00:23:01.950" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is the prefix property.""" start="00:23:04.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If the first call to `org-property-values` succeeds,""" start="00:23:06.220" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we return it as normal.""" start="00:23:09.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If not, we concatenate the property value""" start="00:23:11.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that was passed into the function""" start="00:23:14.250" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""onto the prefix and try again.""" start="00:23:15.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now when we call the `get_prop` function with &quot;distro&quot;""" start="00:23:18.970" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""as the prop argument, it won't be found.""" start="00:23:23.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So the code will slap our prefix tag on the front,""" start="00:23:26.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""making it something like `rh_distro`,""" start="00:23:29.690" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and it will be found and returned.""" start="00:23:33.250" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's see that in action.""" start="00:23:35.330" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All right, now we're talking.""" start="00:23:40.000" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Switching distributions""" start="00:23:42.010" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""This setup is starting to look pretty good,""" start="00:23:42.010" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but there are just a few things""" start="00:23:44.420" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that I want to add before we move on.""" start="00:23:46.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""First of all, I think the document should have a subtitle,""" start="00:23:48.660" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""something that tells you if you're looking at the RedHat""" start="00:23:51.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or the Debian version of the document.""" start="00:23:53.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I also think it would be great""" start="00:23:56.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""if the file name of the exported document""" start="00:23:57.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""reflected the distribution as well.""" start="00:24:00.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I also want to add a quick Debian only section""" start="00:24:05.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to the document that explains how it got its name.""" start="00:24:08.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now let's see what happens when we export the document.""" start="00:24:11.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This did not work out as we wanted.""" start="00:24:17.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""As you can see, the macro we used in the subtitles""" start="00:24:20.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""didn't expand properly,""" start="00:24:23.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and as a result, our subtitle didn't render right.""" start="00:24:24.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Sadly, you can't use macros""" start="00:24:28.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or inline function calls everywhere.""" start="00:24:30.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And one place where they don't work""" start="00:24:32.910" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is inside of certain export keywords.""" start="00:24:34.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we're gonna have to hard code them here.""" start="00:24:37.190" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Another mistake that we made is we forgot to update""" start="00:24:43.220" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the `#+EXCLUDE_TAGS` export keyword,""" start="00:24:46.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because with the RedHat version of the document,""" start="00:24:49.100" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we want to exclude the Debian tag.""" start="00:24:51.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now when we export the document,""" start="00:24:54.510" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""everything should be correct.""" start="00:24:56.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The word RedHat should appear in the subtitle,""" start="00:24:57.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and the Debian fun fact section should not be present.""" start="00:25:00.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now we just need to add a section to the README""" start="00:25:04.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that explains the steps you need to take""" start="00:25:06.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in order to switch the document""" start="00:25:09.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""from RedHat to Debian.""" start="00:25:11.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Okay, let's see here.""" start="00:25:12.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We have to change `#+SUBTITLE`, change the `#+EXCLUDE_TAGS`,""" start="00:25:14.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""change the `#+EXPORT_FILE_NAME`,""" start="00:25:18.310" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and change the `prefix` property.""" start="00:25:20.430" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This is OK, but it's not great.""" start="00:25:23.290" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Emacs Lisp can once again come to our rescue.""" start="00:25:26.290" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""What we'll do is make an Elisp code block""" start="00:25:29.430" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that will invite the user to hit `C-c C-c` on.""" start="00:25:32.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And the code block will essentially make all these changes""" start="00:25:35.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in the document for them.""" start="00:25:39.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This code block, which we'll call `switch_distro`,""" start="00:25:40.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""takes one argument called `os`,""" start="00:25:43.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which by default is set to &quot;Debian&quot;.""" start="00:25:45.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It starts out with a let expression""" start="00:25:48.690" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that defines three bound variables.""" start="00:25:50.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The `debian` variable is a boolean that is true""" start="00:25:53.030" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""if the distro we're switching to is Debian.""" start="00:25:55.970" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Based on the value of this boolean,""" start="00:25:58.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we'll set the `noexport` and `prefix` variables accordingly.""" start="00:26:00.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The `save-excursion` block tells Emacs""" start="00:26:04.170" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that we're going to be moving around in the document""" start="00:26:06.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and to remember to put our point back where we started""" start="00:26:09.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""when the block finishes.""" start="00:26:11.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""After that, we essentially go to the top of the document""" start="00:26:13.430" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and search and replace the subtitle, `exclude_tags`,""" start="00:26:16.250" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""`export_file_name`, and the `prefix`.""" start="00:26:19.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Pretty cool.""" start="00:26:22.500" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's see this in action.""" start="00:26:23.390" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If we hit `C-c C-c` on this block,""" start="00:26:25.030" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we should see the document automatically change a bit.""" start="00:26:27.870" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And now when we export it,""" start="00:26:30.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we get the Debian version of the doc.""" start="00:26:32.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If we want to change it back,""" start="00:26:36.090" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can just head back over to the code block""" start="00:26:37.630" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and change the default value for the os variable""" start="00:26:39.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""from &quot;Debian&quot; to &quot;RedHat&quot; and hit `C-c C-c` again.""" start="00:26:43.150" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And now when we re-export,""" start="00:26:47.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we're looking at the RedHat version of the document.""" start="00:26:49.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Just as an aside, if you ever thought to yourself,""" start="00:26:52.910" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""&quot;I should learn Emacs Lisp someday&quot;""" start="00:26:55.860" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Make it someday soon. You'll be happy you did.""" start="00:26:58.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Not only is it a fun programming language,""" start="00:27:01.290" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but you can do powerful things with it in Emacs,""" start="00:27:03.770" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which I hope is a point that folks take away from this talk.""" start="00:27:06.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All right, that was a lot.""" start="00:27:12.150" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""A tour""" start="00:27:14.150" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Now that we've spent the past 20 minutes or so""" start="00:27:14.150" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""digging into some of the tips and tricks I used""" start="00:27:16.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""when creating my build Emacs from source document,""" start="00:27:19.410" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we'll say goodbye to this document we've been working on""" start="00:27:22.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we'll start a tour""" start="00:27:26.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of the actual literate document I wrote.""" start="00:27:27.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""A document that I'll demonstrate actually downloading""" start="00:27:29.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and building a new Emacs when I export it""" start="00:27:33.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on both my Ubuntu and RedHat virtual machines.""" start="00:27:35.660" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I'll also show you how org-mode can generate""" start="00:27:38.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""slick professional looking PDF files""" start="00:27:41.690" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""through the power of LaTeX.""" start="00:27:44.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll start here at the orgdemo2 directory,""" start="00:27:46.580" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which I've cloned from GitLab.""" start="00:27:49.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This repository has all the source materials for this talk.""" start="00:27:51.230" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The buildemacs.org file is where most of the good stuff is.""" start="00:27:55.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So that's where we'll start.""" start="00:27:59.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""There's a lot of file-local variables""" start="00:28:01.480" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that we'll need to confirm.""" start="00:28:03.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we'll do that too.""" start="00:28:04.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So the first thing we're gonna do""" start="00:28:06.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is hit `C-u TAB` twice,""" start="00:28:07.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which will give us a top-level overview""" start="00:28:10.780" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of all of our headings.""" start="00:28:13.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""As you can see, we've got a lot""" start="00:28:15.140" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of the same familiar export keywords we had before.""" start="00:28:16.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""`#+TITLE`, `#+SUBTITLE`, `#+AUTHOR`, `#+EMAIL`,""" start="00:28:20.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""plus a few we haven't seen before.""" start="00:28:23.100" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""For example, I've squirreled away""" start="00:28:25.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""a lot of the `#+LATEX_HEADER` export keywords""" start="00:28:27.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in this file called latex.setup.""" start="00:28:30.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And I did this just so they don't clutter up the document.""" start="00:28:33.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Much of the LaTeX magic""" start="00:28:36.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that makes the exported document look good""" start="00:28:38.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is in these headers.""" start="00:28:40.910" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""LaTeX commands begin with a backslash.""" start="00:28:42.590" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And a common one we use a lot here is `\usepackage`.""" start="00:28:45.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This lets us bring in packages like geometry,""" start="00:28:49.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""svg for the cool SeaGL SVG logo,""" start="00:28:52.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""`fancyhdr` and fancy verbatim [`fancyvrb`]""" start="00:28:56.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to keep things looking pretty fancy.""" start="00:28:58.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Using a scalable vector image format""" start="00:29:00.690" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""makes it possible for us to do really cool things""" start="00:29:03.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""like having a scaled-down version of the SeaGL logo""" start="00:29:05.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""appear in the fancy footer below.""" start="00:29:09.270" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I also include some macros in a separate file""" start="00:29:11.980" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""just to help keep things tidy in the main document.""" start="00:29:15.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Here I've got the familiar macros""" start="00:29:18.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we've seen before for `get_prop`.""" start="00:29:20.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""But here I use different permutations""" start="00:29:23.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""depending on if I want results raw""" start="00:29:25.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or raw verbatim or just verbatim.""" start="00:29:28.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I also have a couple of macros here at the top of the file""" start="00:29:31.870" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that are for pulling strings out of results blocks""" start="00:29:35.070" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then trimming them""" start="00:29:40.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""so there's no white space on either side.""" start="00:29:41.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Like in the version of the document""" start="00:29:44.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we worked on at the start of this talk,""" start="00:29:46.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the real document also has a README section""" start="00:29:48.430" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""marked with the `:noexport:` tag.""" start="00:29:51.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It also has a section about choosing""" start="00:29:53.470" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which version of the document to export""" start="00:29:55.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and a code block on how to switch between them.""" start="00:29:57.910" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""It's also got a lot of helpful information in it""" start="00:30:00.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""like what OS and Emacs versions""" start="00:30:03.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the document has been tested to &quot;run&quot; on,""" start="00:30:05.820" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""a section on the LaTeX prerequisites""" start="00:30:09.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and the section on executing""" start="00:30:12.330" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the document's various code blocks.""" start="00:30:14.080" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""TeX and LaTeX""" start="00:30:16.200" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""The latter two sections we'll take a look at now.""" start="00:30:16.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Out of the box on Fedora and Ubuntu server distros,""" start="00:30:19.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the TeX typesetting system""" start="00:30:22.580" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""also by noted computer scientist Donald Knuth""" start="00:30:24.710" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is not installed.""" start="00:30:27.670" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we'll need to install some packages.""" start="00:30:28.860" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Starting out we'll need the `texlive` package""" start="00:30:31.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which gets you a fully featured TeX setup.""" start="00:30:34.450" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This also gets you LaTeX""" start="00:30:37.460" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which can be viewed as a distribution of TeX macros.""" start="00:30:39.290" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""You'll also need XeTeX.""" start="00:30:42.790" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This gets you Unicode support and lets you use modern fonts.""" start="00:30:44.900" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll also want to install pdfTeX.""" start="00:30:49.780" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This gets us the ability to generate PDFs from TeX sources.""" start="00:30:52.810" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And finally, we're gonna need to install latexmk""" start="00:30:57.210" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which is a Perl script""" start="00:31:01.300" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that knows how to run LaTeX multiple times""" start="00:31:02.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in order to properly deal with intra-document links.""" start="00:31:05.140" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Other prerequisites""" start="00:31:09.250" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""But wait, there's more.""" start="00:31:09.250" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We're also gonna need Inkscape""" start="00:31:11.070" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to rasterize our SeaGL vector logo""" start="00:31:12.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""at different resolutions.""" start="00:31:15.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And we're gonna need the JetBrains Mono font""" start="00:31:17.340" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to make our source code look snazzy.""" start="00:31:20.360" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll also need the Inter font""" start="00:31:23.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to make our prose look snazzy as well.""" start="00:31:24.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I've helpfully added a bash code block in the README""" start="00:31:28.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that you can hit C-c C-c on to install.""" start="00:31:31.300" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This really does lock up Emacs for a few minutes""" start="00:31:35.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and it's sort of annoying.""" start="00:31:38.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""When we export the document and turn off all caching""" start="00:31:40.330" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and it actually builds Emacs for real,""" start="00:31:43.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Emacs can be locked up for tens of minutes.""" start="00:31:45.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""There's a package called ob-async""" start="00:31:48.770" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that I've been meaning to check out that might help here.""" start="00:31:50.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""But since I wanted this document""" start="00:31:54.260" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to work on bog-standard Emacs setups,""" start="00:31:55.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I didn't get around to it.""" start="00:31:58.000" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Caching""" start="00:32:00.060" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Before we get into talking about running the document,""" start="00:32:00.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""let's talk briefly about results caching.""" start="00:32:03.140" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll take a look at the section of the document""" start="00:32:06.450" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""where we talk about Git tags for an example.""" start="00:32:08.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The `num_tags` bash code block determines""" start="00:32:13.140" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""how many tags there are in the Emacs Git repo.""" start="00:32:15.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And when I hit C-c C-c on that block""" start="00:32:19.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""several days ago, when I was first creating the document,""" start="00:32:21.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that number was 183.""" start="00:32:25.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""That result has remained cached in the document since then.""" start="00:32:28.020" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And you can see a snippet of the SHA1 hash""" start="00:32:32.170" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of the contents of the source block below.""" start="00:32:34.900" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""You can see where I referenced the result""" start="00:32:38.390" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""using the `sr` for string raw macro in the prose below,""" start="00:32:40.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and how it gets rendered in the exported PDF document.""" start="00:32:44.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All the source blocks in the exported sections""" start="00:32:50.510" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""of the document include cached results like this.""" start="00:32:52.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If I export the document now, it won't take that long to do""" start="00:32:56.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because while there are a ton of code blocks""" start="00:33:01.390" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in the exported sections, they're all cached.""" start="00:33:03.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now let's get back to the section of the README""" start="00:33:09.070" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that explains how to execute the code in the document.""" start="00:33:11.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Here I explain that if you want to build Emacs""" start="00:33:14.910" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on your computer using this document,""" start="00:33:17.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you've got a couple of options.""" start="00:33:20.190" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The first option is to manually invalidate the caches""" start="00:33:22.020" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and take C-c C-c on every code block""" start="00:33:25.650" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in the main document.""" start="00:33:28.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This lets you supervise the entire process,""" start="00:33:30.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and it also creates new cached result blocks,""" start="00:33:33.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but it's time consuming.""" start="00:33:36.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""There is also an internal link to the main document here,""" start="00:33:39.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and you can jump to it with C-c C-o.""" start="00:33:43.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This is one of those intra-document links""" start="00:33:47.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that is really tricky to get right with LaTeX,""" start="00:33:50.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and is why we opted to use the latexmk Perl script""" start="00:33:53.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to build the PDF version of the document.""" start="00:33:56.990" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I'm mentioning it specifically here""" start="00:34:00.050" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because it took me forever to figure this out.""" start="00:34:01.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The second option you've got""" start="00:34:05.630" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is to change the default header arg""" start="00:34:07.270" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""from `:cache yes` to `:cache no` at the top of the document.""" start="00:34:09.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If we cruise up to the top of the document,""" start="00:34:13.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you can see that this header argument property""" start="00:34:16.270" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""basically says that unless a code block""" start="00:34:19.130" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""explicitly says otherwise,""" start="00:34:22.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""it's by default supposed to be cached.""" start="00:34:24.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""That's how we were able to export the document""" start="00:34:27.119" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""before so quickly.""" start="00:34:29.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""The code block named `no_cache_no_confirm`""" start="00:34:31.559" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""uses the `save-excursion` and regex replace trick""" start="00:34:34.820" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that I demonstrated earlier""" start="00:34:38.619" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to munch the default cache header arg""" start="00:34:40.349" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""from &quot;cache yes&quot; to &quot;cache no&quot;.""" start="00:34:42.820" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And it also turns off confirmations on bash code blocks.""" start="00:34:45.410" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Let's do that now.""" start="00:34:49.300" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now we'll export the document to PDF,""" start="00:34:51.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""which will ignore the cache result blocks""" start="00:34:54.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and clone the Git repository on Savannah,""" start="00:34:57.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""create a branch that points""" start="00:35:00.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to the most recently tagged version of Emacs 29,""" start="00:35:01.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""run configure a handful of times,""" start="00:35:05.460" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""installing packages to fix missing dependencies""" start="00:35:07.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""along the way,""" start="00:35:10.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""build Emacs, install Emacs in our home directory,""" start="00:35:12.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""verify that it has successfully built a binary,""" start="00:35:16.100" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""run it in batch mode with some sample Elisp""" start="00:35:19.340" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and show the file sizes and dates of the generated files.""" start="00:35:22.550" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This is gonna take a while.""" start="00:35:26.870" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And while it's running, we'll pop over to our Fedora box.""" start="00:35:28.340" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All right, now we'll fire up Emacs,""" start="00:35:32.830" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""hit `C-c C-c` on the `configure_document` code block""" start="00:35:34.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to configure the document for RedHat""" start="00:35:39.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""since Fedora here is a RedHat based distro.""" start="00:35:41.850" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Then what we'll do is we'll pop down""" start="00:35:45.710" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and hit `C-c C-c`""" start="00:35:47.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on the `rh_install_latex` code block""" start="00:35:49.590" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to install the LaTeX prerequisites""" start="00:35:53.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""for this Fedora virtual machine.""" start="00:35:56.230" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Finally, we'll execute the `no_cache_no_confirm` block""" start="00:35:58.460" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then kick off the export.""" start="00:36:02.590" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Then we'll go and check back on what's happening""" start="00:36:05.050" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on the Ubuntu box.""" start="00:36:07.280" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Ooh, top looks pretty quiet.""" start="00:36:09.530" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I think the export is complete.""" start="00:36:11.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Ooh, those are the words I love to see in the status area,""" start="00:36:14.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""PDF file produced!""" start="00:36:17.560" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Looking at the PDF""" start="00:36:20.610" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Now I can't use my web browser""" start="00:36:20.610" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to take a look at this PDF file""" start="00:36:22.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because I haven't set up a web server""" start="00:36:24.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or anything like that on the Ubuntu virtual machine.""" start="00:36:27.080" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I can, however, use TRAMP with the ssh method""" start="00:36:30.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to poke around on the ubuntu host""" start="00:36:34.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""on my personal version of Emacs.""" start="00:36:36.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So let's do that.""" start="00:36:39.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Okay, so now if we go into the source directory""" start="00:36:40.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then we hop into the orgdemo2 directory""" start="00:36:44.810" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then we look at the deb version of the PDF,""" start="00:36:48.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""there she blows.""" start="00:36:51.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now, if we go down to the Building Emacs section,""" start="00:36:54.150" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can see that it built.""" start="00:36:58.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And if we look in the bin directory,""" start="00:37:00.130" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can see that at 17:01,""" start="00:37:03.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that's when all of those files got created.""" start="00:37:06.780" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Also the file creation date on the PDF is 17:01.""" start="00:37:11.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So all of this code executed roughly the same time""" start="00:37:15.590" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the PDF was created.""" start="00:37:18.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All right, so now let's head back over to the Fedora box""" start="00:37:21.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then we'll navigate to the source directory,""" start="00:37:25.340" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""the orgdemo2 directory,""" start="00:37:27.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and there is our RedHat version of the built Emacs PDF.""" start="00:37:30.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And Bob's your uncle.""" start="00:37:35.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And you can see it is the RedHat version of the document""" start="00:37:38.220" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because this is a RedHat box.""" start="00:37:42.550" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And if we go over to the What did we install? section,""" start="00:37:44.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you can see that these binaries were built at 17:35.""" start="00:37:51.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And now if we pop open dired""" start="00:37:56.050" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we take a look at the PDF,""" start="00:37:58.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we can see it also was created at 17:35.""" start="00:38:00.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All right, in the couple minutes remaining,""" start="00:38:07.330" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I thought it would be a good idea""" start="00:38:10.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""just to take a look at the document""" start="00:38:11.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and maybe just go through some of what it actually does""" start="00:38:15.740" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""in explaining how to build Emacs from source.""" start="00:38:19.000" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We'll look at the RedHat version since we're here.""" start="00:38:22.580" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And the first thing you do is""" start="00:38:27.140" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you have to get access to the source code.""" start="00:38:28.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And before you can do anything,""" start="00:38:31.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""this is a RedHat-specific section""" start="00:38:32.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""where you need to install some development tools.""" start="00:38:35.420" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And this development tools group actually has Git.""" start="00:38:38.300" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Now I installed Git earlier, but if you didn't do that,""" start="00:38:41.540" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that would be the first thing that you need to do.""" start="00:38:44.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We create a source directory, we cd into it,""" start="00:38:46.940" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we clone the repo from Savannah.""" start="00:38:50.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we start to take a look at some of the Git tags.""" start="00:38:53.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And we showed this before where we check out""" start="00:38:56.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""how many different tags there are.""" start="00:38:58.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we run this kind of funky Git command""" start="00:39:00.370" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to sort of list all the tags that begin with 'emacs-29',""" start="00:39:02.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and we sort them by when they were tagged.""" start="00:39:06.040" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we can see that Emacs 29.1.pretest""" start="00:39:08.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""is the most recent version.""" start="00:39:12.400" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So that's the one we grab""" start="00:39:14.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and that's the one we decide to build.""" start="00:39:15.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we create a branch that is based on this tag.""" start="00:39:18.660" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And this is dynamically generated based on what we saw here.""" start="00:39:22.780" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So that's what we use here.""" start="00:39:27.480" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Errors""" start="00:39:29.440" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""In this case, we're piping standard error""" start="00:39:29.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to where standard out goes.""" start="00:39:32.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""That's another trick.""" start="00:39:35.100" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""If you want to actually see an error get created,""" start="00:39:36.070" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""org-mode will capture any errors that code blocks produce,""" start="00:39:39.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and it will show you the error message in a buffer.""" start="00:39:44.120" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So if you actually wanna show what it looks like""" start="00:39:46.820" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""when something errors out, this is the trick you have to use.""" start="00:39:49.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then what we do is we look for a configure script""" start="00:39:53.060" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and there isn't one.""" start="00:39:56.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we realize,""" start="00:39:57.420" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""uh-oh, we're gonna have to deal with autotools.""" start="00:39:58.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So, you know, we run the autogen script and it complains""" start="00:40:00.910" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because we're missing some prerequisites.""" start="00:40:05.560" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we have to install autoconf,""" start="00:40:08.680" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then we run it again,""" start="00:40:11.350" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and finally it generates a configure script.""" start="00:40:13.020" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And this is another case where I pull this number""" start="00:40:15.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""right here into the actual prose.""" start="00:40:19.020" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And I can see it's, oh, it's, you know, this how many bytes.""" start="00:40:21.980" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""When was the last time you wrote a shell script""" start="00:40:24.840" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that was this many bytes long?""" start="00:40:26.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we configure the build process.""" start="00:40:29.580" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And, you know, it's not gonna work right away""" start="00:40:31.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""because we don't have GNU Texinfo installed.""" start="00:40:33.760" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So we gotta do that, which we do with `dnf install` here.""" start="00:40:36.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then there's this section that is either RedHat-""" start="00:40:41.440" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or Debian-specific that talks about, like,""" start="00:40:44.320" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""if you don't know the name of a package""" start="00:40:48.920" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that contains a given file name, how do you query it?""" start="00:40:51.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And in the RedHat world, you use `dnf provides makeinfo`.""" start="00:40:55.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""In the Debian world, you do something entirely different.""" start="00:40:59.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we have to install the `ncurses` binary.""" start="00:41:02.290" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And finally we get like a minimal configuration""" start="00:41:06.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and you can see that there's a whole bunch of nos here.""" start="00:41:10.300" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So, you know, we don't have cairo,""" start="00:41:13.700" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""we don't have imagemagick, we don't have dbus,""" start="00:41:15.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""you know, there's a whole bunch of stuff we don't have.""" start="00:41:18.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""We don't have X, we don't have libjansson, no tree-sitter.""" start="00:41:20.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This is really a bare-bones Emacs""" start="00:41:23.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""that is strictly terminal mode.""" start="00:41:25.960" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Then we actually build Emacs, which is, you know,""" start="00:41:28.640" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""kind of boring, we're just gonna type make""" start="00:41:30.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then make is gonna run successfully.""" start="00:41:33.260" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And make is gonna spew a ton of output, right?""" start="00:41:35.260" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""So here's where I do that /dev/null trick,""" start="00:41:37.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""where I pipe everything to /dev/null""" start="00:41:41.100" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then I, or I pipe standard output to /dev/null""" start="00:41:42.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and then I pipe standard error""" start="00:41:45.820" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""to wherever standard output's going.""" start="00:41:47.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then at the end to say that it ran successfully,""" start="00:41:50.240" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I say &quot;Make ran successfully!&quot;""" start="00:41:52.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Then we take a look at the Emacs binary""" start="00:41:55.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and you know, it's an elf binary.""" start="00:41:57.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And, you know, because this is running on my Mac,""" start="00:41:59.880" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""this is an ARM-based machine, this virtual machine is.""" start="00:42:01.720" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""Oops, and this is a bug.""" start="00:42:06.620" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""This really should be a macro call,""" start="00:42:10.520" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""but I think I have the wrong number of curly braces""" start="00:42:12.200" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""or something in there.""" start="00:42:14.800" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I need to figure out why that's not right.""" start="00:42:16.160" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""I'll look into that later.""" start="00:42:19.130" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we install Emacs and then we kind of show""" start="00:42:21.110" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""like the file sizes of everything in the home directory.""" start="00:42:23.980" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And then we, you know, show the binaries that got installed.""" start="00:42:27.720" video="mainVideo-doc" id="subtitle"]]
+
+[[!template new="1" text="""Final thoughts""" start="00:42:31.990" video="mainVideo-doc" id="subtitle"]]
+
+[[!template text="""Anyway, so this is the final thoughts section.""" start="00:42:31.990" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And my final thoughts are, is I hope you enjoyed this talk""" start="00:42:35.600" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""and I hope you actually learned a thing or two.""" start="00:42:39.220" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""All right, thanks everybody.""" start="00:42:42.380" video="mainVideo-doc" id="subtitle"]]
+[[!template text="""And I'll see you all next time.""" start="00:42:43.360" video="mainVideo-doc" id="subtitle"]]
+
+
+
+Captioner: jc
+
+<a name="doc-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Well, we have about, I think,""" start="00:00:03.639" video="qanda-doc" id="subtitle"]]
+[[!template text="""10 or 15 minutes of on-stream Q&A time.""" start="00:00:06.339" video="qanda-doc" id="subtitle"]]
+[[!template text="""But if there's more questions than that,""" start="00:00:10.320" video="qanda-doc" id="subtitle"]]
+[[!template text="""people are welcome to stay.""" start="00:00:11.420" video="qanda-doc" id="subtitle"]]
+[[!template text="""If Mike has the time to answer some more,""" start="00:00:14.200" video="qanda-doc" id="subtitle"]]
+[[!template text="""then Awesome.""" start="00:00:15.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I will be around for the rest of the""" start="00:00:20.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""conference. So I am spudpnds,""" start="00:00:22.440" video="qanda-doc" id="subtitle"]]
+[[!template text="""which is spud upside down on IRC,""" start="00:00:26.580" video="qanda-doc" id="subtitle"]]
+[[!template text="""if you want to hit me up on IRC.""" start="00:00:29.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""Nice.""" start="00:00:30.860" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: I see we already have a question on the pad,""" start="00:00:42.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""and it is, did you develop a variant of your""" start="00:00:45.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""document for CentOS?""" start="00:00:46.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I did not. I have not messed with any other""" start="00:00:52.840" video="qanda-doc" id="subtitle"]]
+[[!template text="""Red Hat distributions other than Fedora.""" start="00:00:56.120" video="qanda-doc" id="subtitle"]]
+[[!template text="""I would like to expand the document out to""" start="00:00:59.960" video="qanda-doc" id="subtitle"]]
+[[!template text="""Windows and to Mac OS as I think a lot of""" start="00:01:05.740" video="qanda-doc" id="subtitle"]]
+[[!template text="""people really want to build Emacs on those""" start="00:01:07.720" video="qanda-doc" id="subtitle"]]
+[[!template text="""platforms because it's much harder to get""" start="00:01:09.840" video="qanda-doc" id="subtitle"]]
+[[!template text="""Emacs binaries running on those platforms.""" start="00:01:13.080" video="qanda-doc" id="subtitle"]]
+[[!template text="""Although they're around on the internet it's""" start="00:01:15.860" video="qanda-doc" id="subtitle"]]
+[[!template text="""not as bad as it used to be,""" start="00:01:17.320" video="qanda-doc" id="subtitle"]]
+[[!template text="""but building Emacs is very,""" start="00:01:19.280" video="qanda-doc" id="subtitle"]]
+[[!template text="""a very fun thing to do.""" start="00:01:21.000" video="qanda-doc" id="subtitle"]]
+[[!template text="""And I encourage everybody to do that.""" start="00:01:22.760" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. We're also getting comments from folks""" start="00:01:46.160" video="qanda-doc" id="subtitle"]]
+[[!template text="""here on BigBlueButton.""" start="00:01:46.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""EXC or Matt saying, great talk,""" start="00:01:49.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""good demonstration of what's possible.""" start="00:01:51.140" video="qanda-doc" id="subtitle"]]
+[[!template text="""And Aaron thanking Mike,""" start="00:01:53.940" video="qanda-doc" id="subtitle"]]
+[[!template text="""saying awesome presentation.""" start="00:01:54.760" video="qanda-doc" id="subtitle"]]
+[[!template text="""And they missed the first few minutes and""" start="00:01:56.880" video="qanda-doc" id="subtitle"]]
+[[!template text="""have to rewatch to get the portion that they""" start="00:01:59.540" video="qanda-doc" id="subtitle"]]
+[[!template text="""missed.""" start="00:01:59.720" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I had a hard time cramming the entire talk""" start="00:02:03.400" video="qanda-doc" id="subtitle"]]
+[[!template text="""into 40 minutes. So I spoke quickly.""" start="00:02:08.220" video="qanda-doc" id="subtitle"]]
+[[!template text="""I have a feeling I may have left some folks""" start="00:02:10.639" video="qanda-doc" id="subtitle"]]
+[[!template text="""behind who weren't paying close attention.""" start="00:02:12.540" video="qanda-doc" id="subtitle"]]
+[[!template text="""So rewatching might help.""" start="00:02:16.020" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, nice.""" start="00:02:18.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I noticed Matt said that he helps maintain""" start="00:02:24.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""the shell functionality or Babel and last""" start="00:02:27.440" video="qanda-doc" id="subtitle"]]
+[[!template text="""March they added async evaluation into""" start="00:02:30.240" video="qanda-doc" id="subtitle"]]
+[[!template text="""session code blocks. Very cool,""" start="00:02:32.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""especially when you're doing something that""" start="00:02:34.680" video="qanda-doc" id="subtitle"]]
+[[!template text="""takes a long time. It would be nice if Emacs""" start="00:02:36.420" video="qanda-doc" id="subtitle"]]
+[[!template text="""wasn't locked up. I will definitely have to""" start="00:02:38.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""check that out. I use this technique at work""" start="00:02:50.220" video="qanda-doc" id="subtitle"]]
+[[!template text="""a lot, like when I write documents to how to""" start="00:02:53.220" video="qanda-doc" id="subtitle"]]
+[[!template text="""explain things to coworkers and such.""" start="00:02:55.900" video="qanda-doc" id="subtitle"]]
+[[!template text="""And 1 of the things I had to explain was how""" start="00:03:00.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""to build AWS MySQL databases and replicas,""" start="00:03:05.220" video="qanda-doc" id="subtitle"]]
+[[!template text="""and how to build them with very specific""" start="00:03:07.760" video="qanda-doc" id="subtitle"]]
+[[!template text="""parameters to work with the system called""" start="00:03:09.960" video="qanda-doc" id="subtitle"]]
+[[!template text="""Vitesse. And when I was running that""" start="00:03:13.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""document, building these kinds of MySQL""" start="00:03:15.660" video="qanda-doc" id="subtitle"]]
+[[!template text="""databases in AWS with lockup Emacs for 20,""" start="00:03:20.280" video="qanda-doc" id="subtitle"]]
+[[!template text="""25 minutes at a time. So,""" start="00:03:22.300" video="qanda-doc" id="subtitle"]]
+[[!template text="""yeah, I'm really excited about async""" start="00:03:26.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""evaluation.""" start="00:03:26.540" video="qanda-doc" id="subtitle"]]
+[[!template text="""Totally. Oh yeah, Python mode I think has had""" start="00:04:03.780" video="qanda-doc" id="subtitle"]]
+[[!template text="""async for shell blocks for a while.""" start="00:04:05.600" video="qanda-doc" id="subtitle"]]
+[[!template text="""I think there's a third-party package at Elba""" start="00:04:09.220" video="qanda-doc" id="subtitle"]]
+[[!template text="""that adds async support for that.""" start="00:04:11.260" video="qanda-doc" id="subtitle"]]
+[[!template text="""But yeah, I explicitly wanted to make sure""" start="00:04:16.360" video="qanda-doc" id="subtitle"]]
+[[!template text="""that it would work with super vanilla stuff.""" start="00:04:18.620" video="qanda-doc" id="subtitle"]]
+[[!template text="""Oh, it's built in. I see.""" start="00:04:20.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""Yeah, I didn't realize it was built in for""" start="00:04:24.140" video="qanda-doc" id="subtitle"]]
+[[!template text="""Python blocks. I'll have to check that out.""" start="00:04:25.920" video="qanda-doc" id="subtitle"]]
+[[!template text="""There's so much Emacs.""" start="00:04:27.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""It's hard to wrap your head even around a""" start="00:04:32.080" video="qanda-doc" id="subtitle"]]
+[[!template text="""tiny portion of it. It's such a deep topic.""" start="00:04:34.900" video="qanda-doc" id="subtitle"]]
+[[!template text="""Looks like somebody in IRC said,""" start="00:04:47.660" video="qanda-doc" id="subtitle"]]
+[[!template text="""I can't wait to add some of this stuff to my""" start="00:04:50.220" video="qanda-doc" id="subtitle"]]
+[[!template text="""documents. And that really makes me happy.""" start="00:04:52.680" video="qanda-doc" id="subtitle"]]
+[[!template text="""I hope people go out and write literate Org""" start="00:04:55.400" video="qanda-doc" id="subtitle"]]
+[[!template text="""Mode documents that do amazing things.""" start="00:04:57.180" video="qanda-doc" id="subtitle"]]
+[[!template text="""When's the next talk? We have like,""" start="00:05:25.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: let's see. I think we have about 4 or 5""" start="00:05:30.900" video="qanda-doc" id="subtitle"]]
+[[!template text="""minutes live on stream for Q&A.""" start="00:05:32.960" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, okay. Oh, here's the question.""" start="00:05:35.860" video="qanda-doc" id="subtitle"]]
+[[!template text="""Blaine asks, are you running Emacs from the""" start="00:05:39.160" video="qanda-doc" id="subtitle"]]
+[[!template text="""host machine? And yeah,""" start="00:05:41.420" video="qanda-doc" id="subtitle"]]
+[[!template text="""so I'm running Emacs on the exact same""" start="00:05:43.940" video="qanda-doc" id="subtitle"]]
+[[!template text="""machine that I'm building Emacs on.""" start="00:05:46.560" video="qanda-doc" id="subtitle"]]
+[[!template text="""And I had first thought about doing that over""" start="00:05:50.580" video="qanda-doc" id="subtitle"]]
+[[!template text="""Tramp. And I thought that would be a very""" start="00:05:53.440" video="qanda-doc" id="subtitle"]]
+[[!template text="""cool demo to show how you could do that""" start="00:05:55.360" video="qanda-doc" id="subtitle"]]
+[[!template text="""remotely on Tramp so you didn't need Emacs on""" start="00:05:57.980" video="qanda-doc" id="subtitle"]]
+[[!template text="""the host machine. But I decided it would be a""" start="00:06:03.160" video="qanda-doc" id="subtitle"]]
+[[!template text="""lot easier, and as I ran into a deadline to""" start="00:06:05.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""get the talk completed,""" start="00:06:06.360" video="qanda-doc" id="subtitle"]]
+[[!template text="""I abandoned that notion for the""" start="00:06:08.900" video="qanda-doc" id="subtitle"]]
+[[!template text="""straightforward approach.""" start="00:06:09.880" video="qanda-doc" id="subtitle"]]
+[[!template text="""But ideally, I would spin up virtual machines""" start="00:06:13.260" video="qanda-doc" id="subtitle"]]
+[[!template text="""and then using the Org Mode document and""" start="00:06:16.980" video="qanda-doc" id="subtitle"]]
+[[!template text="""having Org Mode reach out to those machines""" start="00:06:18.960" video="qanda-doc" id="subtitle"]]
+[[!template text="""via SSH and Tramp.""" start="00:06:20.440" video="qanda-doc" id="subtitle"]]
+[[!template text="""Oh yeah, there's also a little bit of""" start="00:06:33.400" video="qanda-doc" id="subtitle"]]
+[[!template text="""discussion on IRC about org macros and how""" start="00:06:38.200" video="qanda-doc" id="subtitle"]]
+[[!template text="""they made their way into the document.""" start="00:06:39.720" video="qanda-doc" id="subtitle"]]
+[[!template text="""And I remember when I first discovered org""" start="00:06:42.540" video="qanda-doc" id="subtitle"]]
+[[!template text="""macros by reading the org mode documentation,""" start="00:06:44.480" video="qanda-doc" id="subtitle"]]
+[[!template text="""I was really excited because I thought I""" start="00:06:47.360" video="qanda-doc" id="subtitle"]]
+[[!template text="""could limit a lot of the boilerplate I end up""" start="00:06:49.860" video="qanda-doc" id="subtitle"]]
+[[!template text="""typing. But as we discussed,""" start="00:06:51.900" video="qanda-doc" id="subtitle"]]
+[[!template text="""ORD macros, I think, only work in 1 context""" start="00:06:54.760" video="qanda-doc" id="subtitle"]]
+[[!template text="""in your ORD mode document,""" start="00:06:56.380" video="qanda-doc" id="subtitle"]]
+[[!template text="""and I think that's in the pros section.""" start="00:06:58.280" video="qanda-doc" id="subtitle"]]
+[[!template text="""So You can't resolve a macro inside a header""" start="00:07:03.740" video="qanda-doc" id="subtitle"]]
+[[!template text="""arg, for example, or inside an options block.""" start="00:07:06.600" video="qanda-doc" id="subtitle"]]
+[[!template text="""It would be awesome if macros worked""" start="00:07:09.560" video="qanda-doc" id="subtitle"]]
+[[!template text="""everywhere, but I'm happy to have them just""" start="00:07:12.280" video="qanda-doc" id="subtitle"]]
+[[!template text="""as they are now.""" start="00:07:13.500" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Indeed, they're very convenient.""" start="00:07:22.960" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: And Blaine also says, thank you for showing""" start="00:07:32.020" video="qanda-doc" id="subtitle"]]
+[[!template text="""what's possible with literate documentation.""" start="00:07:33.420" video="qanda-doc" id="subtitle"]]
+[[!template text="""This is mind-blowing. Yeah,""" start="00:07:35.380" video="qanda-doc" id="subtitle"]]
+[[!template text="""I think so too. I first saw this technique in""" start="00:07:39.400" video="qanda-doc" id="subtitle"]]
+[[!template text="""Howard's video, Literate DevOps,""" start="00:07:41.020" video="qanda-doc" id="subtitle"]]
+[[!template text="""and I remember I was just picking up parts of""" start="00:07:44.720" video="qanda-doc" id="subtitle"]]
+[[!template text="""my mind after it exploded after having""" start="00:07:46.720" video="qanda-doc" id="subtitle"]]
+[[!template text="""watched that video. So I wanted to do some of""" start="00:07:49.740" video="qanda-doc" id="subtitle"]]
+[[!template text="""it myself, and that's where I came up with a""" start="00:07:51.820" video="qanda-doc" id="subtitle"]]
+[[!template text="""couple different approaches to that.""" start="00:07:54.020" video="qanda-doc" id="subtitle"]]
+[[!template text="""It's not just for, you know,""" start="00:07:57.600" video="qanda-doc" id="subtitle"]]
+[[!template text="""making literate Emacs configurations.""" start="00:07:59.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: For Sure. We have another remark slash""" start="00:08:04.680" video="qanda-doc" id="subtitle"]]
+[[!template text="""question on the pad. Someone saying great""" start="00:08:07.260" video="qanda-doc" id="subtitle"]]
+[[!template text="""presentation. The preparation is outstanding.""" start="00:08:09.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""And for someone like me that never touched""" start="00:08:12.520" video="qanda-doc" id="subtitle"]]
+[[!template text="""the org-mux side of Emacs,""" start="00:08:14.040" video="qanda-doc" id="subtitle"]]
+[[!template text="""What do you feel is the more complex part to""" start="00:08:17.040" video="qanda-doc" id="subtitle"]]
+[[!template text="""tackle? You made it seem simple,""" start="00:08:19.120" video="qanda-doc" id="subtitle"]]
+[[!template text="""but the complexity there.""" start="00:08:20.500" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. Just getting all of the configuration""" start="00:08:25.840" video="qanda-doc" id="subtitle"]]
+[[!template text="""set up the way you want it is the hardest""" start="00:08:30.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""part. So some of the defaults are,""" start="00:08:34.780" video="qanda-doc" id="subtitle"]]
+[[!template text="""you know, they don't look good when you""" start="00:08:37.120" video="qanda-doc" id="subtitle"]]
+[[!template text="""render them out in LaTeX and finally PDF.""" start="00:08:39.320" video="qanda-doc" id="subtitle"]]
+[[!template text="""And there's a lot of work to be done to tweak""" start="00:08:42.039" video="qanda-doc" id="subtitle"]]
+[[!template text="""the LaTeX environment so it looks as pretty""" start="00:08:45.380" video="qanda-doc" id="subtitle"]]
+[[!template text="""as you might want it. And then just Org Mode""" start="00:08:48.620" video="qanda-doc" id="subtitle"]]
+[[!template text="""has a lot of knobs that you can tune,""" start="00:08:50.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""and they have a pretty large impact on how""" start="00:08:53.720" video="qanda-doc" id="subtitle"]]
+[[!template text="""your document is exported.""" start="00:08:55.520" video="qanda-doc" id="subtitle"]]
+[[!template text="""So I think the hardest part is just knowing""" start="00:09:00.360" video="qanda-doc" id="subtitle"]]
+[[!template text="""what's possible and knowing where all the""" start="00:09:03.820" video="qanda-doc" id="subtitle"]]
+[[!template text="""knobs are to tune and twist.""" start="00:09:05.200" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Got another question on the pad.""" start="00:09:10.240" video="qanda-doc" id="subtitle"]]
+[[!template text="""And I think we have about a minute or so on""" start="00:09:12.040" video="qanda-doc" id="subtitle"]]
+[[!template text="""the stream. So I'll read this question as""" start="00:09:13.740" video="qanda-doc" id="subtitle"]]
+[[!template text="""well. But folks, you're welcome to continue""" start="00:09:15.160" video="qanda-doc" id="subtitle"]]
+[[!template text="""on the pad or just come join here on BBB""" start="00:09:17.560" video="qanda-doc" id="subtitle"]]
+[[!template text="""after myself and the stream move on to the""" start="00:09:20.200" video="qanda-doc" id="subtitle"]]
+[[!template text="""next talk. Yeah, and the next question is,""" start="00:09:23.100" video="qanda-doc" id="subtitle"]]
+[[!template text="""how do you normally debug,""" start="00:09:24.320" video="qanda-doc" id="subtitle"]]
+[[!template text="""for example, view the logs or see failed""" start="00:09:26.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""statuses when the commands in the source""" start="00:09:29.440" video="qanda-doc" id="subtitle"]]
+[[!template text="""blocks fail, especially if they output lots""" start="00:09:32.020" video="qanda-doc" id="subtitle"]]
+[[!template text="""and lots of logs, and you need to see the""" start="00:09:34.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""full history of the build.""" start="00:09:35.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so I see it in the messages buffer""" start="00:09:39.520" video="qanda-doc" id="subtitle"]]
+[[!template text="""whenever I export a document.""" start="00:09:42.080" video="qanda-doc" id="subtitle"]]
+[[!template text="""If there's a failure, that's typically where""" start="00:09:44.540" video="qanda-doc" id="subtitle"]]
+[[!template text="""it's written to. And I will actually kill the""" start="00:09:47.460" video="qanda-doc" id="subtitle"]]
+[[!template text="""messages buffer before I export so I know""" start="00:09:49.960" video="qanda-doc" id="subtitle"]]
+[[!template text="""that only the messages in the buffer are for""" start="00:09:52.840" video="qanda-doc" id="subtitle"]]
+[[!template text="""my given export and I mentioned that""" start="00:09:55.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""debugging trick where you name all of your""" start="00:09:58.580" video="qanda-doc" id="subtitle"]]
+[[!template text="""org-mode source blocks So if there is a""" start="00:10:00.720" video="qanda-doc" id="subtitle"]]
+[[!template text="""problem in 1 of the blocks,""" start="00:10:02.320" video="qanda-doc" id="subtitle"]]
+[[!template text="""it'll actually tell you what the block,""" start="00:10:06.560" video="qanda-doc" id="subtitle"]]
+[[!template text="""the name of the block the error occurred in.""" start="00:10:09.140" video="qanda-doc" id="subtitle"]]
+[[!template text="""If you don't do that, it just gives you a""" start="00:10:13.160" video="qanda-doc" id="subtitle"]]
+[[!template text="""position number in the buffer.""" start="00:10:14.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""And whenever I tried to convert those""" start="00:10:18.620" video="qanda-doc" id="subtitle"]]
+[[!template text="""position numbers to actual places where the""" start="00:10:21.400" video="qanda-doc" id="subtitle"]]
+[[!template text="""error occurred, it was never exactly where I""" start="00:10:23.600" video="qanda-doc" id="subtitle"]]
+[[!template text="""suspected it would be.""" start="00:10:24.640" video="qanda-doc" id="subtitle"]]
+[[!template text="""So I found that very difficult in debugging.""" start="00:10:26.680" video="qanda-doc" id="subtitle"]]
+[[!template text="""So the only real debugging tip I have is name""" start="00:10:29.800" video="qanda-doc" id="subtitle"]]
+[[!template text="""your source blocks, even if you don't refer""" start="00:10:32.840" video="qanda-doc" id="subtitle"]]
+[[!template text="""to them later.""" start="00:10:33.480" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: I think that's all the time we have on""" start="00:10:39.860" video="qanda-doc" id="subtitle"]]
+[[!template text="""stream. And I also have to drop as well.""" start="00:10:41.320" video="qanda-doc" id="subtitle"]]
+[[!template text="""But thanks again so much,""" start="00:10:42.540" video="qanda-doc" id="subtitle"]]
+[[!template text="""Mike. And folks are welcome to come here and""" start="00:10:46.160" video="qanda-doc" id="subtitle"]]
+[[!template text="""continue discussion here.""" start="00:10:47.980" video="qanda-doc" id="subtitle"]]
+[[!template text="""Thanks again.""" start="00:10:52.600" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: You""" start="00:21:45.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""Thank""" start="00:22:00.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 0]: you""" start="00:22:15.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""[Speaker 1]: for""" start="00:22:28.400" video="qanda-doc" id="subtitle"]]
+[[!template text="""watching. You""" start="00:22:45.060" video="qanda-doc" id="subtitle"]]
+[[!template text="""you""" start="00:23:00.260" video="qanda-doc" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20doc%3A%20Literate%20Documentation%20with%20Emacs%20and%20Org%20Mode)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/doc-before.md b/2023/info/doc-before.md
new file mode 100644
index 00000000..8e799bc4
--- /dev/null
+++ b/2023/info/doc-before.md
@@ -0,0 +1,45 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+Actually a general-audience talk; just on the development track for scheduling purposes
+
+[[!toc ]]
+Format: 43-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="doc-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="doc-mainVideo" data="""
+00:00.000 Introduction
+00:57.760 Org Babel and literate programming
+02:14.080 This presentation
+04:53.480 Getting started
+06:55.780 README
+07:23.500 Writing a code block
+08:10.460 :results none
+08:40.320 Confirmation
+10:36.960 Running blocks automatically
+13:53.000 Export options
+16:05.700 Substituting constants
+17:25.740 Getting the properties
+20:03.060 Macros
+21:05.240 Properties in practice
+22:09.020 Using a prefix
+23:42.010 Switching distributions
+27:14.150 A tour
+30:16.200 TeX and LaTeX
+31:09.250 Other prerequisites
+32:00.060 Caching
+36:20.610 Looking at the PDF
+39:29.440 Errors
+42:31.990 Final thoughts
+
+"""]]<div></div>Duration: 42:45 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--main.webm">Download --main.webm (133MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/8ak16Qy1tjeFEqmcnan6MQ">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="doc-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="doc-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--answers.opus"></audio></div><div></div>Duration: 11:00 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--answers.json">Download --answers.json (1.5MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--answers.opus">Download --answers.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-doc--literate-documentation-with-emacs-and-org-mode--mike-hamrick--answers.webm">Download --answers.webm (69MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/doc-nav.md b/2023/info/doc-nav.md
new file mode 100644
index 00000000..5f8eaf6b
--- /dev/null
+++ b/2023/info/doc-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/repl">REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</a>
+Next by track: <a href="/2023/talks/windows">Windows into Freedom</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/eat-after.md b/2023/info/eat-after.md
new file mode 100644
index 00000000..41bfbc90
--- /dev/null
+++ b/2023/info/eat-after.md
@@ -0,0 +1,113 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="eat-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Intro""" start="00:00:00.000" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""Hello everyone. Welcome to my talk.""" start="00:00:00.000" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""I am Akib Azmain Turja and my talk is titled""" start="00:00:04.200" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""&quot;Eat and Eat-powered Eshell:""" start="00:00:09.360" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Fast, featureful terminal inside Emacs.&quot;""" start="00:00:11.520" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Benchmarking""" start="00:00:15.440" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""So I just claimed that Eat is a fast terminal emulator.""" start="00:00:15.440" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Let me show you that. I will print a 1-megabyte sized file""" start="00:00:22.840" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""in the terminal using this command.""" start="00:00:33.280" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""It takes 0.76 seconds. Now let's benchmark term-mode.""" start="00:00:39.040" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""I will be in term -mode. I use the same command,""" start="00:00:47.360" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""and it's clearly the loser.""" start="00:00:54.800" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""It took 12 seconds, more than an order of magnitude slower.""" start="00:01:06.600" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Let's also measure the speed of return.""" start="00:01:18.320" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""And it took 0.79 seconds.""" start="00:01:27.280" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""But this is actually a little bit slower than Eat.""" start="00:01:33.480" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Why? That shouldn't happen.""" start="00:01:36.160" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Anyway, hopefully that shows how fast Eat is.""" start="00:01:41.800" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Running programs""" start="00:01:49.720" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""So let's run some extra programs in Eat,""" start="00:01:49.720" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""like top. You can also run htop or even btop.""" start="00:01:54.440" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""There is a fancy version of top.""" start="00:02:05.640" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""And obviously you can run Emacs in it.""" start="00:02:08.560" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""There is mouse support, and there is true color support.""" start="00:02:20.240" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""You can show any color in the terminal""" start="00:02:33.880" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""as long as your main display supports it.""" start="00:02:38.800" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Shell integration""" start="00:02:47.080" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""And then there is shell integration.""" start="00:02:47.080" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""For example, directory tracking.""" start="00:02:50.360" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Like, I can switch to some other directory""" start="00:02:52.400" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""and Emacs follows the shell directory.""" start="00:03:07.480" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Prompt annotation""" start="00:03:11.920" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""Then there is prompt annotation,""" start="00:03:11.920" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""this column. These zeros indicate""" start="00:03:16.440" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""that the command has executed successfully.""" start="00:03:20.320" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Then you can navigate between commands like this.""" start="00:03:27.080" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Message passing""" start="00:03:37.680" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""There is message passing.""" start="00:03:37.680" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""By message passing, I mean sending something""" start="00:03:39.400" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""from the terminal to the host Emacs.""" start="00:03:44.120" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""By host Emacs, I mean Emacs running the terminal.""" start="00:03:46.960" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""For example I can say &quot;hi&quot; and it's showing &quot;hi&quot;""" start="00:03:52.120" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""in this echo area of my Emacs.""" start="00:03:57.440" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Shell integration""" start="00:04:03.520" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""Then let's show you the killer feature of Eat,""" start="00:04:03.520" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Eat's shell integration.""" start="00:04:08.680" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""You can run any program in it. For example: top, btop,""" start="00:04:20.240" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""and obviously Emacs itself.""" start="00:04:37.840" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Input modes""" start="00:04:52.160" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""So let's discuss how to use Eat. There are four input modes.""" start="00:04:52.160" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""The first one is semi-char mode. That is the default mode.""" start="00:05:03.160" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""This is like vterm. All keys are the same to your terminal""" start="00:05:07.320" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""except these keys: C-c, C-x, C-g, M-x, etc.""" start="00:05:10.920" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""And then there is char-mode, where all keys""" start="00:05:17.880" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""are same to your terminal, except this M-RET key""" start="00:05:20.600" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""which takes you back to the semi-char mode.""" start="00:05:26.920" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Then there is Emacs mode where you can select""" start="00:05:29.680" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""and copy from the terminal buffer.""" start="00:05:34.560" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""And finally, there is line mode.""" start="00:05:39.720" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""You can use it to use your terminal like a comint buffer.""" start="00:05:42.680" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""All these input modes are available in both Eat""" start="00:05:49.200" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""and eat-eshell mode, except this line mode--""" start="00:05:56.000" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""it's only available on Eat.""" start="00:06:05.880" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""By &quot;on Eat&quot;, I mean the terminal you get""" start="00:06:10.440" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""by this eat command. By eshell, I mean""" start="00:06:13.960" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""when eat-eshell integration is enabled""" start="00:06:20.160" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""inside the eshell buffer.""" start="00:06:23.145" video="mainVideo-eat" id="subtitle"]]
+
+[[!template new="1" text="""Documentation""" start="00:06:33.760" video="mainVideo-eat" id="subtitle"]]
+
+[[!template text="""There is an info manual,""" start="00:06:33.760" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""And also the README is quite informative""" start="00:06:36.720" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""for you to get started.""" start="00:06:51.600" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""If you hit any problem,""" start="00:06:55.000" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""there is a dedicated chapter for debugging that,""" start="00:07:13.520" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""a common problems chapter.""" start="00:07:22.960" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""If your problem is still not fixed,""" start="00:07:26.120" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""please report it to me.""" start="00:07:28.000" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""This helps me improve it for everyone.""" start="00:07:29.520" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""When you report, please read this chapter""" start="00:07:36.120" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""so that you can make a better bug report.""" start="00:07:40.360" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""I am really looking forward to how people use it""" start="00:07:53.160" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""in their workflow.""" start="00:07:57.640" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""I am excited about that.""" start="00:07:59.080" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Hopefully you enjoyed my talk. That was all.""" start="00:08:03.480" video="mainVideo-eat" id="subtitle"]]
+[[!template text="""Enjoy EmacsConf. Goodbye.""" start="00:08:10.760" video="mainVideo-eat" id="subtitle"]]
+
+Questions or comments? Please e-mail [akib@disroot.org](mailto:akib@disroot.org?subject=Comment%20for%20EmacsConf%202023%20eat%3A%20Eat%20and%20Eat%20powered%20Eshell%2C%20fast%20featureful%20terminal%20inside%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/eat-before.md b/2023/info/eat-before.md
new file mode 100644
index 00000000..5620d10d
--- /dev/null
+++ b/2023/info/eat-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 9-min talk; Q&A: Etherpad
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="eat-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 08:13 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--main.opus">Download --main.opus</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--main.webm">Download --main.webm (39MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eat--eat-and-eat-powered-eshell-fast-featureful-terminal-inside-emacs--akib-azmain-turja--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/t4pPDtbXiZdHHEyWJVUtNs">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/eat-nav.md b/2023/info/eat-nav.md
new file mode 100644
index 00000000..3d8f174b
--- /dev/null
+++ b/2023/info/eat-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/parallel">Parallel text replacement</a>
+Next by track: <a href="/2023/talks/poltys">The browser in a buffer</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/emacsconf-after.md b/2023/info/emacsconf-after.md
new file mode 100644
index 00000000..d84a94cd
--- /dev/null
+++ b/2023/info/emacsconf-after.md
@@ -0,0 +1,3170 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="emacsconf-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Intro""" start="00:00:00.000" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Hi, I'm Sacha Chua. This presentation is a quick tour""" start="00:00:00.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""of some of the things we do to run EmacsConf.""" start="00:00:04.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Since 2019, we've run it as an entirely online conference,""" start="00:00:07.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and we do as much of the organization as possible""" start="00:00:12.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""within Emacs itself.""" start="00:00:14.700" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Reasons""" start="00:00:16.580" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""I have three reasons for making this presentation.""" start="00:00:16.580" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The first is entirely selfish: I need to figure out""" start="00:00:19.760" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""all the stuff I built for last year's EmacsConf,""" start="00:00:22.760" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""since it was a bit of a crazy scramble.""" start="00:00:25.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The second is that I want to show people""" start="00:00:28.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""the process of thinking about a complex project,""" start="00:00:30.160" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""looking for little things to automate in Emacs,""" start="00:00:33.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and building things up from small pieces.""" start="00:00:35.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Maybe you'll get some ideas""" start="00:00:38.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and start building tools for yourself, too.""" start="00:00:39.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The third is that you find any of these little tools interesting,""" start="00:00:42.760" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I want to point you to blog posts and source code""" start="00:00:47.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""where you can find out more.""" start="00:00:49.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That way, you don't need to try""" start="00:00:51.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to read and understand everything quickly.""" start="00:00:52.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""You can find this presentation and other links""" start="00:00:55.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""on the talk page at emacsconf.org/2023/talks/emacsconf.""" start="00:00:57.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""There are a lot of different parts,""" start="00:01:04.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so I'll try to use this map to help make sense of it all.""" start="00:01:06.320" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Information""" start="00:01:09.400" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""There's so much information to work with,""" start="00:01:09.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so it probably doesn't surprise you that we use Org Mode a lot.""" start="00:01:11.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Most of the conference coordination happens over e-mail,""" start="00:01:14.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""which I can quickly search with notmuch.""" start="00:01:18.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Some of the information is private,""" start="00:01:20.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like emergency contact numbers.""" start="00:01:22.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We store the talk information in a private Org file.""" start="00:01:24.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I try to put as much as possible""" start="00:01:28.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""into our public organizers' notebook""" start="00:01:30.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that processes and decisions are documented.""" start="00:01:32.320" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We need a public website.""" start="00:01:35.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We use Ikiwiki to make the webpages""" start="00:01:36.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""because we can work with plain text files""" start="00:01:39.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""in a Git repository.""" start="00:01:41.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We also make a few static HTML pages""" start="00:01:42.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""for things where Ikiwiki is a little awkward.""" start="00:01:45.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We post announcements to mailing lists.""" start="00:01:48.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We also receive submissions in a private mailing list""" start="00:01:50.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that a number of people can review them.""" start="00:01:53.160" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We have a backstage area""" start="00:01:55.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""for sharing files with volunteers and speakers.""" start="00:01:56.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We share those files publicly when the talk goes live.""" start="00:01:59.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""And there's all the other stuff that goes into running EmacsConf,""" start="00:02:03.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like shell scripts and configuration files.""" start="00:02:06.320" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Properties""" start="00:02:09.160" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""First, speakers propose a talk by sending an e-mail.""" start="00:02:09.160" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We take the info from that e-mail and store it in Org properties""" start="00:02:12.320" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that we can work with it later.""" start="00:02:15.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Every talk is identified with an ID,""" start="00:02:18.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""but since `:ID:` and `:CUSTOM_ID:` have special meanings for Org,""" start="00:02:20.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I use `:SLUG:` as the keyword.""" start="00:02:24.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Speakers' names go into the `:NAME:` property,""" start="00:02:25.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and a short version goes into `:NAME_SHORT:`""" start="00:02:27.760" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that we can include that in a greeting.""" start="00:02:29.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""If people follow the template closely...""" start="00:02:32.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""...we can even automatically fill in the Org subtree for their talk.""" start="00:02:34.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We can use regular expressions to recognize the text""" start="00:02:38.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and extract the properties.""" start="00:02:40.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Other properties need to be set by hand.""" start="00:02:42.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I often mess things up when I retype them.""" start="00:02:45.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""To avoid typos, I have a function that sets a property""" start="00:02:47.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""based on the current region. I bind that to `C-c C-x p`.""" start="00:02:51.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That makes it much easier to set properties""" start="00:02:56.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that couldn't automatically be recognized.""" start="00:02:58.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Sometimes it makes sense to dynamically generate a property""" start="00:03:01.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and then edit it, like with filenames.""" start="00:03:04.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We like to name all the talk files the same way,""" start="00:03:07.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""but sometimes special characters in talk titles or speaker names""" start="00:03:10.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""need a little tweaking. I'll put that in a `:FILE_PREFIX:` property""" start="00:03:14.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so I can edit it.""" start="00:03:17.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""An Org property match can map over all the talk entries""" start="00:03:19.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that don't have `:FILE_PREFIX:` defined.""" start="00:03:22.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We can use that `:FILE_PREFIX:` to rename files from Emacs.""" start="00:03:25.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""With that property, we can then rename files using that prefix,""" start="00:03:29.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""some extra text, and the file extension.""" start="00:03:32.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Sometimes it's easier to work with the data outside Emacs,""" start="00:03:35.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like when I want to rename files with a shell script.""" start="00:03:38.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""If I export a subset of the data as JSON""" start="00:03:42.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""or JavaScript Object Notation, using `json-encode`...""" start="00:03:45.320" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""... then I can extract the data with `jq`""" start="00:03:48.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and use it in shell scripts.""" start="00:03:51.120" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Timezones""" start="00:03:53.120" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Another example of semi-structured information""" start="00:03:53.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""is speaker availability.""" start="00:03:55.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We have speakers from all over the world,""" start="00:03:57.300" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so we try to schedule live Q&A sessions when they're around.""" start="00:03:59.620" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That means working with timezones.""" start="00:04:03.020" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Completion makes it much easier to set the timezone property""" start="00:04:05.020" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""without worrying about typos.""" start="00:04:08.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We can take advantage of the timezone list from the tzc package,""" start="00:04:10.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""which works with Unix timezone definitions.""" start="00:04:14.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Then we can convert times using Emacs.""" start="00:04:17.160" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Using a standard format to encode the availability""" start="00:04:19.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""makes it easier to parse.""" start="00:04:22.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I can use those availability constraints to report errors""" start="00:04:24.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""when I'm experimenting with the schedule.""" start="00:04:27.440" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Scheduling""" start="00:04:29.720" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Now that I have the availability information,""" start="00:04:29.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I can think about scheduling.""" start="00:04:31.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""When we were planning EmacsConf 2022, the schedule was so full,""" start="00:04:33.941" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I wanted to see if we could make it more manageable""" start="00:04:38.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""by splitting it up into two tracks.""" start="00:04:40.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It was hard to think about times with just a table.""" start="00:04:43.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I was able to turn the schedule information""" start="00:04:45.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""into an SVG to convince the other organizers""" start="00:04:48.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to get on board with this crazy plan.""" start="00:04:51.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""And the nice thing about SVGs is that""" start="00:04:53.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""they can even be clickable on the wiki.""" start="00:04:54.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Being able to quickly make SVGs of different schedules""" start="00:04:57.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""also helped me test scheduling ideas and think out loud.""" start="00:05:00.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I could change the time between talks, the order of the talks,""" start="00:05:04.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and even what tracks the talks were in.""" start="00:05:06.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This was helpful when I needed to include""" start="00:05:08.940" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""some late submissions or availability changes""" start="00:05:10.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and I wanted to ask speakers what they thought.""" start="00:05:13.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""They could see the different schedule options themselves.""" start="00:05:15.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It's really nice to have Emacs Lisp support for working with SVGs.""" start="00:05:18.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I also love how I can have an Emacs Lisp block""" start="00:05:22.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""in an Org Mode document that updates an SVG""" start="00:05:25.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that I can view right there in my text editor.""" start="00:05:28.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Setting the timezone lets me automatically translate times""" start="00:05:32.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to the speaker's local timezone when I e-mail them.""" start="00:05:34.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That's mostly a matter of using `format-time-string` with a timezone.""" start="00:05:37.820" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Templates""" start="00:05:41.780" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""There's a lot of text to work with,""" start="00:05:41.780" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""which means templates are super handy.""" start="00:05:43.160" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""There are a number of templating functions for Emacs Lisp,""" start="00:05:45.700" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like the built-in `tempo.el` or `s-lex-format` from `s.el`.""" start="00:05:48.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I ended up writing something""" start="00:05:52.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that works with property lists (plists) instead,""" start="00:05:54.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""since we use plists all over the emacsconf-el library.""" start="00:05:58.020" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""All it does is replace `${variable}`""" start="00:06:02.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""with the value from a property list.""" start="00:06:04.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I use this mostly because I have a hard time""" start="00:06:05.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""keeping track of which `%s` is which when I use `format`,""" start="00:06:07.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and it's hard to get an overall view if I just use `concat`.""" start="00:06:11.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The code looks for the properties and replaces them with the values.""" start="00:06:14.300" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I just find it a little easier to think about sometimes.""" start="00:06:17.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Getting all the information is just a matter of going over""" start="00:06:21.300" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""all the talk entries using `org-map-entries`.""" start="00:06:24.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This builds the talk info by running a bunch of functions.""" start="00:06:27.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Some functions get the information from the Org file.""" start="00:06:30.700" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Other functions use the info already collected.""" start="00:06:33.820" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This can take a while to do again and again.""" start="00:06:36.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It's useful to `memoize` this function""" start="00:06:39.260" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""when I know I'll be using it a lot,""" start="00:06:41.740" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like when I export the organizers notebook.""" start="00:06:43.500" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Memoize caches recent values.""" start="00:06:45.960" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Wiki""" start="00:06:48.400" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""We combine this templating function""" start="00:06:48.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""with the talk information""" start="00:06:50.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to fill in the conference wiki,""" start="00:06:51.480" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""since that's a matter of writing templated strings to files.""" start="00:06:53.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The talk pages are generated once""" start="00:06:56.480" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and then left alone for manual editing,""" start="00:06:58.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""while the navigation is regenerated""" start="00:07:00.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""every time we change the details.""" start="00:07:02.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Here are some examples""" start="00:07:04.660" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""of how we fill in the conference wiki.""" start="00:07:05.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We put in the format of the talk, how Q&A works,""" start="00:07:07.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and what the status is.""" start="00:07:10.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Once the talk is live, we include the video""" start="00:07:12.320" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and the links to the files, too.""" start="00:07:14.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The code is a little bit long,""" start="00:07:17.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""but the important part is that""" start="00:07:18.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""we fill in a plist with the values we calculate,""" start="00:07:20.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and then we can use `emacsconf-replace-plist-in-string`""" start="00:07:22.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to put that all together.""" start="00:07:26.380" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The schedule is a little more complicated.""" start="00:07:28.020" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I wrote an Ikiwiki directive""" start="00:07:30.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that the markup is more manageable,""" start="00:07:32.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and the Emacs Lisp function uses that.""" start="00:07:34.020" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The Ikiwiki directive takes all the data and turns it into HTML...""" start="00:07:36.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""...so we can use Emacs Lisp to iterate over""" start="00:07:40.620" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""a slightly smaller property list""" start="00:07:42.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and put them into the format Ikiwiki expects.""" start="00:07:44.820" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It's nice to be able to navigate between talks""" start="00:07:47.780" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""without going back to the schedule page each time.""" start="00:07:50.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This is handled by keeping two extra copies of the list:""" start="00:07:52.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""one with the first talk popped off,""" start="00:07:55.580" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and one with an extra element added to the beginning.""" start="00:07:57.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Then we can use the heads of those lists""" start="00:08:00.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""for next/previous links.""" start="00:08:02.440" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Etherpad""" start="00:08:04.380" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Links to the next talks are also handy""" start="00:08:04.380" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""on the collaborative Etherpad documents""" start="00:08:06.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that we use for collecting questions, answers, and notes""" start="00:08:08.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""during each talk.""" start="00:08:12.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Etherpad has an API...""" start="00:08:12.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""...so I can start the pads off with a template""" start="00:08:15.300" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""before the conference.""" start="00:08:17.320" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I don't want to accidentally overwrite a pad""" start="00:08:18.940" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that has been manually edited.""" start="00:08:21.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We can save the timestamp of the last modification""" start="00:08:22.940" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and then compare it before overwriting.""" start="00:08:25.720" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""E-mail""" start="00:08:28.200" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Templates are also very handy when it comes to e-mail.""" start="00:08:28.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Sometimes we send e-mails one at a time,""" start="00:08:31.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like when we let a speaker know""" start="00:08:33.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that we've received their proposal.""" start="00:08:35.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That's mostly a matter of plugging the talk's properties""" start="00:08:36.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""into the right places in the template.""" start="00:08:39.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Sometimes we send e-mails to lots of speakers at the same time,""" start="00:08:41.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like when we send them instructions for uploading their files.""" start="00:08:45.020" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Instead of sending one e-mail and Bcc-ing everyone,""" start="00:08:48.300" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""or sending people multiple e-mails""" start="00:08:51.620" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""because they have multiple talks,""" start="00:08:53.480" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I like to draft these as individual e-mails""" start="00:08:55.140" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to each speaker (or group of speakers,""" start="00:08:57.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""if more than one person is associated with a talk).""" start="00:08:59.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That gives me an opportunity to personalize it further.""" start="00:09:02.600" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""BigBlueButton web conferences""" start="00:09:05.920" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Many speakers answer questions live""" start="00:09:05.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""in BigBlueButton web conference rooms.""" start="00:09:08.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Setting up one room per group of speakers""" start="00:09:10.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""makes it easy to give the speakers the details""" start="00:09:12.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and associate the recorded video with the talk afterwards.""" start="00:09:15.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""For EmacsConf 2023,""" start="00:09:18.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I used Spookfox to control Mozilla Firefox from Emacs""" start="00:09:20.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that I could automate creating the rooms""" start="00:09:25.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and adding the URLs to the talk properties in my Org file.""" start="00:09:27.480" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Then I can use mail merge to send each speaker""" start="00:09:30.957" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""the check-in instructions for their specific room.""" start="00:09:33.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Some speakers will take questions by e-mail""" start="00:09:36.900" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""after the conference instead of attending live,""" start="00:09:39.140" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so we send them shorter instructions""" start="00:09:41.620" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""just in case they want to drop by.""" start="00:09:43.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""[Live Q&A sessions]: After the first rush of questions,""" start="00:09:45.540" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""we can open it up for other people to join.""" start="00:09:47.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This is handled by changing the public page""" start="00:09:50.580" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""from one that just refreshes in a loop""" start="00:09:53.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to one that redirects to the actual web conference room.""" start="00:09:55.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Just in case, we also""" start="00:09:58.821" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""generate static copies of those redirects""" start="00:10:00.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that we can copy them if needed.""" start="00:10:02.160" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That way, I don't have to count on Emacs being able to""" start="00:10:04.300" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""publish them over TRAMP.""" start="00:10:06.680" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Shortcuts""" start="00:10:08.121" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""During the conference, I'm often jumping from talk to talk.""" start="00:10:08.121" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Instead of going to the Org file""" start="00:10:11.660" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and then searching for the talk,""" start="00:10:13.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I've made a little Hydra with keyboard shortcuts.""" start="00:10:14.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""One of these shortcuts lets me""" start="00:10:17.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""jump to a talk with completion""" start="00:10:19.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that I can just type in part of the talk ID,""" start="00:10:20.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""title, or speaker name.""" start="00:10:24.260" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I've also defined some Embark actions""" start="00:10:26.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that I can act on a talk right from the completion menu.""" start="00:10:28.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""For example, I might want to jump to the wiki page""" start="00:10:32.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""or e-mail the speaker.""" start="00:10:35.080" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Logbook""" start="00:10:36.700" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""I can also add notes to a talk while looking at an email,""" start="00:10:36.700" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like when a speaker lets me know""" start="00:10:40.100" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that their video will be late.""" start="00:10:41.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Making it easy to add a note turns Emacs into""" start="00:10:43.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""a very basic contact relationship management system, or CRM.""" start="00:10:45.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The way this works is that we have a function""" start="00:10:49.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""that lists all the email addresses associated with a talk.""" start="00:10:52.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We can then map that over the list of talks,""" start="00:10:55.460" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""look up the author of the current email,""" start="00:10:57.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""prompt the user for the talk to add the note to, and add the note.""" start="00:10:59.960" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Captions""" start="00:11:03.680" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""On to captions.""" start="00:11:03.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We've been doing captions for the last couple of years,""" start="00:11:04.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and now we have a small army of volunteer captioners.""" start="00:11:07.240" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""They get early access to the recorded talks""" start="00:11:10.420" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and fix up misrecognized words, format keyboard shortcuts""" start="00:11:12.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to follow Emacs conventions, spell names correctly,""" start="00:11:16.160" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and do all sorts of other wonderful things.""" start="00:11:19.580" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""One of our evil plans with EmacsConf""" start="00:11:21.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""is to get cool stuff out of people's heads into videos""" start="00:11:24.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and also make captions so that those videos can be searched.""" start="00:11:28.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""To make that possible, we first need a backstage area""" start="00:11:32.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""where volunteers can get the files.""" start="00:11:35.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This is just a simple password-protected directory""" start="00:11:36.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""with a static HTML page that lists the talks by status""" start="00:11:39.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and shows the files related to each talk.""" start="00:11:43.740" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""As a talk moves through the process, I update its TODO state""" start="00:11:46.380" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and republish this index.""" start="00:11:49.900" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Talks that are ready to be captioned show up in that section,""" start="00:11:51.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and volunteers can call dibs on the talk they're interested in.""" start="00:11:54.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""That's all done with a function that formats the information""" start="00:11:58.180" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and uses TRAMP to save the file directly to the server.""" start="00:12:00.980" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""You can find more details on our captioning process""" start="00:12:04.320" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""at emacsconf.org/captioning.""" start="00:12:06.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I like using subed to edit subtitles within Emacs.""" start="00:12:09.040" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Crontabs and playing the talks""" start="00:12:13.220" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Let's talk about actually playing the talks.""" start="00:12:13.220" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""For EmacsConf 2022, we tried using Emacs timers""" start="00:12:16.060" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to run the talks.""" start="00:12:19.560" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It turns out that you can't call TRAMP from a timer""" start="00:12:20.940" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""when you're already using TRAMP from another timer""" start="00:12:24.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""at the same time.""" start="00:12:26.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I thought about just tweaking the schedule""" start="00:12:27.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so that we always start things at different times,""" start="00:12:29.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""but I figured there's probably a more elegant way to do this.""" start="00:12:31.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This year, I'm planning to experiment with using cron""" start="00:12:35.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to start talks on autopilot.""" start="00:12:37.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The shell scripts will take care of playing the videos...""" start="00:12:39.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""... figuring out the appropriate Q&A...""" start="00:12:42.480" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""... and joining the web conference if needed.""" start="00:12:44.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We just need to format the information...""" start="00:12:47.580" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""...and install it as the track's crontab.""" start="00:12:49.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It's useful to be able to switch tracks""" start="00:12:52.220" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to manual mode independently,""" start="00:12:54.080" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""just in case things go haywire.""" start="00:12:55.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Then we can start everything manually.""" start="00:12:57.900" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""I can also manually update a talk's status,""" start="00:13:00.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""like when the host tells me that it's okay to open up the Q&A.""" start="00:13:02.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The shell scripts we run from the crontab""" start="00:13:06.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""can also update the talk status themselves.""" start="00:13:08.720" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Transitions""" start="00:13:11.280" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""Then a bunch of things automatically happen based on""" start="00:13:11.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""the talk status changes.""" start="00:13:14.320" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This uses `org-after-todo-state-change-hook`.""" start="00:13:15.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We get the talk information""" start="00:13:18.960" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and pass it to a list of functions.""" start="00:13:20.360" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Internet Relay Chat or IRC is an easy way for people""" start="00:13:22.520" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to join the conversation around EmacsConf.""" start="00:13:26.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""We announce a talk whenever it changes state.""" start="00:13:29.140" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""For example, when a talk starts,""" start="00:13:31.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""we post the URLs to the talk webpage""" start="00:13:33.600" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and the Etherpad for questions. We change the topic as well,""" start="00:13:36.040" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""so anyone can see the current talk's information""" start="00:13:39.440" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""even if they're a little late.""" start="00:13:41.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""This is easy to do with a little bit of Emacs Lisp""" start="00:13:43.180" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""because (of course!) Emacs has an IRC client.""" start="00:13:45.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""In fact, it has several.""" start="00:13:48.520" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template new="1" text="""Wrapping up""" start="00:13:49.880" video="mainVideo-emacsconf" id="subtitle"]]
+
+[[!template text="""It seems like a lot of automation and Emacs Lisp,""" start="00:13:49.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""but really, all of this was just built up little by little.""" start="00:13:53.140" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""And tinkering with this is *fun*, you know?""" start="00:13:56.900" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It's like always being able to ask,""" start="00:13:59.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""&quot;Hey, wouldn't it be cool if...&quot;""" start="00:14:01.260" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and then actually being able to go and do it.""" start="00:14:03.301" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Sometimes it feels like EmacsConf is an excuse""" start="00:14:05.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""for me to play with Emacs.""" start="00:14:08.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It's pretty amazing what you can do""" start="00:14:10.200" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""by combining a bunch of pieces.""" start="00:14:12.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""A way to store slightly-structured information.""" start="00:14:13.800" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""A way to get it out again. Templates.""" start="00:14:16.720" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""TRAMP, for working with remote files""" start="00:14:18.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and running remote commands.""" start="00:14:20.680" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""A way to talk to a web browser.""" start="00:14:21.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""A way to work with SVGs.""" start="00:14:23.840" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""An email client. A chat client.""" start="00:14:25.400" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""You can smoosh them all together""" start="00:14:27.760" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""in a way that you couldn't if they were all separate things.""" start="00:14:29.640" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The code is in the emacsconf-el repository.""" start="00:14:32.700" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""It's a bit of a tangle because it's accumulating organically""" start="00:14:36.280" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""and I haven't really had the brainspace""" start="00:14:39.120" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""to step back and clean it up.""" start="00:14:40.880" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""But if you spotted anything interesting in this presentation,""" start="00:14:42.580" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""you can go check it out and see what you can scavenge.""" start="00:14:45.920" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""The link and this presentation are available""" start="00:14:48.620" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""from this talk's webpage at emacsconf.org/2023/talks/emacsconf .""" start="00:14:51.000" video="mainVideo-emacsconf" id="subtitle"]]
+[[!template text="""Let's figure out how to make Emacsconf even awesomer next year!""" start="00:14:59.120" video="mainVideo-emacsconf" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="emacsconf-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: All right. I have unmuted.""" start="00:00:53.489" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's been a while since I've actually done an""" start="00:00:59.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actual presentation. Hi.""" start="00:01:05.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay. I'm going to deafen myself and mumble""" start="00:01:08.979" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so that I don't get distracted by backstage""" start="00:01:12.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""chatter. Hello, everyone! Okay,""" start="00:01:16.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so where are we? Questions,""" start="00:01:17.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""questions, questions. Okay,""" start="00:01:20.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""how easy would it be for someone else to""" start="00:01:23.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""reuse the Emacs conf strips and config to do""" start="00:01:25.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a conf of their own? Like everything else,""" start="00:01:29.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have no idea if things actually work until""" start="00:01:32.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""somebody does it for, you know,""" start="00:01:35.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to get everything to run on a computer that""" start="00:01:37.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""isn't my computer and with assumptions that""" start="00:01:40.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""aren't my assumptions.""" start="00:01:40.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So, I have no idea. But optimistically,""" start="00:01:42.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have put most of the EmacsConf things,""" start="00:01:46.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like EmacsConf, the name of the conference""" start="00:01:48.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and things like that in variables.""" start="00:01:50.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So if theoretically someone were to run an""" start="00:01:53.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""org mode conference or something like that,""" start="00:01:56.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it might be possible to reuse all this code.""" start="00:01:58.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We'll see. I don't know if it's going to be""" start="00:02:01.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""easy. I don't even know if it's going to be""" start="00:02:03.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""possible, but it might be fun to try.""" start="00:02:04.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""What tools would I like to exist in Emacs""" start="00:02:09.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""land to help with preparing the conference""" start="00:02:11.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""next time? Well, I've already been thinking""" start="00:02:15.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about adjustments that I want to make to""" start="00:02:18.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sub-eds so that the audio synchronization""" start="00:02:21.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""issues that we sometimes have with FFmpeg can""" start="00:02:24.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""be something that I can flag and maybe fix""" start="00:02:26.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""even while I'm watching a video.""" start="00:02:29.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But also as much as possible,""" start="00:02:32.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I like to leave the actual FFMPEG audio and""" start="00:02:36.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""visual tinkering with to other people like""" start="00:02:39.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Leo, whose patience is slightly more than""" start="00:02:41.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""mine, because audio is,""" start="00:02:44.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I still don't have the patience to sit for""" start="00:02:47.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it. You can tell I talk really,""" start="00:02:48.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""really quickly. I'm still trying to squeeze""" start="00:02:50.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything into however little focus time I""" start="00:02:53.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually have. So it would be kind of nice to""" start="00:02:56.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""use that. Emacs is already doing quite a ton""" start="00:03:00.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and stuffing more multimedia processing and""" start="00:03:04.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other fun things into it might be""" start="00:03:06.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interesting. Who knows?""" start="00:03:07.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Oh, the other thing that I would really love""" start="00:03:09.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to have that people always ask for is a way""" start="00:03:12.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""from Emacs to interact with the Etherpad.""" start="00:03:15.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""The Etherpad API, it seems very granular.""" start="00:03:18.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Like, you can set the HTML of a pad,""" start="00:03:21.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but you can't actually just append stuff to""" start="00:03:22.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it. And I was trying to get something that""" start="00:03:24.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""could take questions from IRC and""" start="00:03:26.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""automatically push them into the pad,""" start="00:03:28.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""even from an ERC bot or whatever,""" start="00:03:30.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but no go. If someone were to figure out some""" start="00:03:34.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""CRDT thing where we can collaboratively edit""" start="00:03:38.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the document, that I think is the number 1""" start="00:03:41.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""request that people always have around""" start="00:03:42.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""EmacsConf. That would be really cool to do""" start="00:03:46.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more of the conference itself from within""" start="00:03:48.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs. I don't know if actually,""" start="00:03:53.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""well, we have an org file now that launches""" start="00:03:55.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the MPV from Emacs. But if you want to have""" start="00:03:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""an ex-widget or something else watching the""" start="00:04:01.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference from within Emacs itself.""" start="00:04:03.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think that will also be really cool.""" start="00:04:05.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yes. And then other fun stuff.""" start="00:04:09.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""OK, how can speakers and viewers help make""" start="00:04:12.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""preparing for next year's Emacs Conf even""" start="00:04:15.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more fun for the organizers?""" start="00:04:16.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Well, I love it when not only do the speakers""" start="00:04:20.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""do all that work to prepare their talk,""" start="00:04:24.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but lately people have actually even been""" start="00:04:27.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""volunteering to caption their own talks.""" start="00:04:29.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And that's great because then they know the""" start="00:04:33.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""words that they use. And if I can show them""" start="00:04:36.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the workflow that we have so that they can do""" start="00:04:39.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it very efficiently, because there's all""" start="00:04:41.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""these wonderful things that I do now with""" start="00:04:44.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Subweb Waveform and Aeneas for like the""" start="00:04:48.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""forced alignment so we can get timestamps""" start="00:04:49.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""from text and all these other fun things that""" start="00:04:53.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""make getting a transcript or editing the""" start="00:04:55.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""captions fun and easy.""" start="00:04:57.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That makes it easier for not only speakers to""" start="00:05:00.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""contribute captions for their own talks,""" start="00:05:02.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but also interested volunteers who,""" start="00:05:05.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as mentioned, get early access to all the""" start="00:05:07.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talks and can watch them at leisure.""" start="00:05:09.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it's, you know, nice prick there.""" start="00:05:12.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Definitely should try that.""" start="00:05:13.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I do have some sample videos of how we use""" start="00:05:19.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""subed. But of course, in the process of""" start="00:05:21.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""shoving like 30 or 40 talks,""" start="00:05:24.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""maybe 30 talks through it for EmacsConf,""" start="00:05:26.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this is like the stress test season for""" start="00:05:29.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""subed, which is great,""" start="00:05:30.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I ended up adding more features.""" start="00:05:31.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So 1 of my big to-dos afterwards is I have to""" start="00:05:36.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""document the different workflows for things""" start="00:05:38.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like, okay, you've got a script.""" start="00:05:40.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You can use WDiff to get word diffs so you""" start="00:05:43.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""can take the subtitles and compare them with""" start="00:05:45.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the original script and see where the""" start="00:05:47.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""misrecognized words are.""" start="00:05:48.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And that's great. Or you can use SubWeb""" start="00:05:52.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Waveform to start adjusting things.""" start="00:05:54.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Or for example, if there's a synchronization""" start="00:05:56.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""issue, I can now middle click on a subtitle""" start="00:06:01.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""where I want the subtitle to actually start""" start="00:06:03.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then move all the subtitles to start at""" start="00:06:06.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that point. So it's getting to be a really""" start="00:06:09.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""elaborate tool. And I definitely need to""" start="00:06:10.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""document that and stick all the blog post""" start="00:06:15.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""links into the readme so that people can find""" start="00:06:17.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this in the future. So it's very,""" start="00:06:20.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""very nifty. And the reason why we do this is""" start="00:06:23.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because, well, personally,""" start="00:06:24.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have a hard time sitting and watching""" start="00:06:26.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""videos. I like to be able to just jump to the""" start="00:06:28.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interesting parts or watch it at 3 times""" start="00:06:31.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""speed, which MPV lets me do.""" start="00:06:33.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And the text makes it a lot more searchable,""" start="00:06:36.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is fantastic. And also because,""" start="00:06:38.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, if you've got all these interesting""" start="00:06:41.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""variable names and key bindings and whatever,""" start="00:06:44.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and the automatic subtitles just don't do the""" start="00:06:47.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right thing. So it's nice that people do the""" start="00:06:49.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""captioning. So, yeah, so that's 1 thing that""" start="00:06:53.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people can help with. Captioning is always""" start="00:06:55.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""very interesting. And the other thing that""" start="00:06:57.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people can do is take the inspiration that""" start="00:07:00.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you get from EmacsConf and from the ideas""" start="00:07:02.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that you have when you're working with Emacs,""" start="00:07:04.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and suggest talks for next year's EmacsConf.""" start="00:07:07.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it doesn't have to be a super fancy,""" start="00:07:09.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""nobody else needs to go out and do a really""" start="00:07:13.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""professional-looking video.""" start="00:07:14.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Even though Howard has set the bar this you""" start="00:07:17.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""know it's pretty high you don't have to do""" start="00:07:19.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that kind of thing it can be just you in a""" start="00:07:22.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""screen or even just a screen and you talking""" start="00:07:24.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about this cool thing that you learned and""" start="00:07:27.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they could be a video or it could be a blog""" start="00:07:29.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""post it could be something else and that""" start="00:07:31.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""those those things are fantastic because they""" start="00:07:34.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""inspire people to see what's possible with""" start="00:07:36.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs. So that's another big thing that""" start="00:07:39.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people can do to help.""" start="00:07:40.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then there's sharing the word about it.""" start="00:07:44.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So if you saw something that you really like,""" start="00:07:46.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""if you write a blog post about it or a tweet""" start="00:07:48.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or a toot or whatever else you want to do,""" start="00:07:51.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you make a reaction video,""" start="00:07:52.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that helps other people discover that stuff""" start="00:07:55.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""not just today, not just next week,""" start="00:07:57.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but you know even later as they search for""" start="00:08:00.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""these words that as people search for ideas""" start="00:08:04.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""using words that are not necessarily the ones""" start="00:08:07.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in the video, you describing things in other""" start="00:08:10.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""ways helps with the search engine""" start="00:08:11.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""optimization, you're not really,""" start="00:08:13.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's just people finding stuff,""" start="00:08:15.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is amazing. So yes,""" start="00:08:17.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""please write about the cool things that""" start="00:08:19.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you've seen and what you'd like to tell other""" start="00:08:22.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people about. Suggesting ideas for talks.""" start="00:08:25.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yes. Making talks. All sorts of wonderful""" start="00:08:30.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things. OK. Could you elaborate on the""" start="00:08:35.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""workflow that goes on in your mind for when""" start="00:08:37.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""approaching these things?""" start="00:08:38.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Do you start with an Emacs org solution right""" start="00:08:40.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""off the bat at this point when faced with a""" start="00:08:42.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""task? Are there some conscious steps involved""" start="00:08:44.059" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""from early ideas to automation of the kind""" start="00:08:46.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you just showed? Mostly it starts with,""" start="00:08:48.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""okay, we got to do this thing.""" start="00:08:50.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I have this to-do. And sometimes,""" start="00:08:53.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like in the week before the conference,""" start="00:08:55.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have to think, okay,""" start="00:08:57.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is this a top priority thing that I can do""" start="00:09:00.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""before the conference,""" start="00:09:01.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or is it something that I can,""" start="00:09:03.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I, I, like we can still do the conference""" start="00:09:05.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""without doing so I have to just postpone it""" start="00:09:08.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""until afterwards? So some prioritization""" start="00:09:09.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""happens. But a lot of times it's like,""" start="00:09:12.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""okay, you know, like this,""" start="00:09:13.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there's a thing that I need to do here.""" start="00:09:14.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know how to figure it out,""" start="00:09:15.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""let me start an org Babble block and start""" start="00:09:18.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sketching out something,""" start="00:09:19.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, custom function or whatever else,""" start="00:09:22.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then say okay, you know,""" start="00:09:23.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hey, that looks kind of useful,""" start="00:09:25.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""let me see if I can generalize that,""" start="00:09:27.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then let me stick it into the library so""" start="00:09:29.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that I can find it next year.""" start="00:09:30.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And that's basically how it goes.""" start="00:09:33.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It just goes, it just like,""" start="00:09:35.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have a thing that I need to do.""" start="00:09:37.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If it's, if I'm going to do it more than""" start="00:09:40.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""once, or actually even if I'm going to do it,""" start="00:09:42.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, once I tried to automate it just so""" start="00:09:44.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that I can understand it and,""" start="00:09:46.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then I can, I can,""" start="00:09:47.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can squeeze it into like the 15 minutes I""" start="00:09:50.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually have and I can pause and I can pick""" start="00:09:54.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it up again and the code is still there and""" start="00:09:56.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""my notes are still there?""" start="00:09:57.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then every little bit of the,""" start="00:10:00.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""every little step like that builds up.""" start="00:10:03.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I can write a short function today,""" start="00:10:05.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then tomorrow when the kid was asleep,""" start="00:10:07.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can write a little bit more of that.""" start="00:10:09.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And so it just goes on from there.""" start="00:10:11.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then I just stuff that all in there.""" start="00:10:14.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""How well does this approach allow for other""" start="00:10:17.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""organisers to do individual customisations to""" start="00:10:19.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""their liking while still being able to""" start="00:10:21.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""collaborate effectively?""" start="00:10:22.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We've actually split things up fairly neatly""" start="00:10:25.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in the sense that for this year,""" start="00:10:28.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for example, most everyone else was super""" start="00:10:30.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""busy, so I did all the heavy lifting up until""" start="00:10:34.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people were available and then they jumped in""" start="00:10:37.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with the audio normalization.""" start="00:10:38.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Thank you very much, Leo,""" start="00:10:39.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for doing all of that stuff and the hosting""" start="00:10:41.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and all the other things.""" start="00:10:42.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I tend to do most of the Emacs list""" start="00:10:45.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""fiddling with and the shell scripting and""" start="00:10:48.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""stuff like that, aside from the FFmpeg""" start="00:10:49.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""incantations, which are too arcane for me to""" start="00:10:53.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""even think about. And then in the course of""" start="00:10:56.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""watching me deal with like,""" start="00:10:57.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, no, this video is not playing.""" start="00:10:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then they see the commands that I'm""" start="00:11:01.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""using, like play and then,""" start="00:11:04.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, play a world,""" start="00:11:05.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is the ideas of the talk that we were""" start="00:11:08.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""having a hard time with or MPD or whatever.""" start="00:11:10.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Then the other organizers kind of just pick""" start="00:11:13.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that up by osmosis, because We didn't even""" start="00:11:15.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have time to do dry runs for training this""" start="00:11:17.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year. So it's just there's not much""" start="00:11:20.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""collaboration in the sense that I'm just""" start="00:11:22.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""basically saying, OK, these are the scripts""" start="00:11:24.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that I'm going to write for myself.""" start="00:11:25.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And you all figure out how to work with that.""" start="00:11:28.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""What was the hardest problem you encountered""" start="00:11:34.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in organizing or running the conference this""" start="00:11:37.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year and how do you deal with it?""" start="00:11:38.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Oh, the constant, constant problem with""" start="00:11:40.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""e-mails. There's so many amazing ideas.""" start="00:11:43.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I want to fit into the time.""" start="00:11:45.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then afterwards, like,""" start="00:11:46.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sasha, do not mess with production the day""" start="00:11:49.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""before the conference.""" start="00:11:50.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You're going to save that for after the""" start="00:11:52.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference, right? So that's the hardest""" start="00:11:54.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""part, is just saying, OK,""" start="00:11:56.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yes, that's an idea. I'm going to put that in""" start="00:11:58.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the inbox. We're going to maybe get to that""" start="00:12:01.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""next year. But right now,""" start="00:12:03.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""these are the things that I need to do in""" start="00:12:05.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""order to get the conference off the ground""" start="00:12:07.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""reasonably in a reasonable amount of time.""" start="00:12:14.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So earlier in the conference,""" start="00:12:17.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""then I can be like, OK,""" start="00:12:19.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""what if we do this? What if we run everything""" start="00:12:21.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""off a crontab instead of using Emacs tramp""" start="00:12:24.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""timers? Wouldn't that be great?""" start="00:12:25.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then I can explore all those crazy ideas.""" start="00:12:28.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But then as we get closer and closer to date,""" start="00:12:30.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm like, okay, fine. I'm going to like just""" start="00:12:32.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""capture the idea and deal with it later.""" start="00:12:34.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So that's really, really hard for me.""" start="00:12:36.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Year to your growth in attendance and after""" start="00:12:39.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the conference video watching.""" start="00:12:40.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""The growth, well, first thing,""" start="00:12:46.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there is like absolute growth in the kind of""" start="00:12:51.110" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the quantity of things that people are""" start="00:12:53.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sharing. I have a blog post about this that""" start="00:12:56.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talks about a number of minutes of talks,""" start="00:12:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and it's going up. Last year,""" start="00:13:02.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we did 2 tracks because I couldn't fit""" start="00:13:03.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything in 1 day. And this year,""" start="00:13:05.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we did 2 tracks, but even then,""" start="00:13:07.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything was kind of squished,""" start="00:13:08.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I was trying to find space in the""" start="00:13:09.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""schedule. And if you make it so that next""" start="00:13:11.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year, we have to figure out 3 tracks,""" start="00:13:13.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think We have another host now,""" start="00:13:15.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so it might be doable,""" start="00:13:16.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is great. Who knows?""" start="00:13:19.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We'll see. And the other interesting thing""" start="00:13:23.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that I'm seeing in terms of growth is that""" start="00:13:25.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people are starting to refer to the talks""" start="00:13:27.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""from previous conferences that inspired them.""" start="00:13:29.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So the evil plan is working in that it is""" start="00:13:32.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""getting people to get cool stuff out of their""" start="00:13:35.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""heads and into videos that have like""" start="00:13:37.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""searchable transcripts and that people can""" start="00:13:39.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""refer to as for inspiration and for showing""" start="00:13:41.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other people, hey, look,""" start="00:13:42.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this is what it can do.""" start="00:13:44.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So that is fantastic growth.""" start="00:13:46.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""The actual numbers, I'm intense to look at""" start="00:13:49.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the number of simultaneous viewers.""" start="00:13:51.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And every so often, it's kind of nice to go""" start="00:13:53.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""through the YouTube stats or whatever.""" start="00:13:55.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But that's not so much as a,""" start="00:13:57.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like, I don't really keep that in mind as""" start="00:14:01.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""much, just because as long as people are""" start="00:14:05.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""connecting to the ideas and getting stuff out""" start="00:14:07.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there and being inspired to think around""" start="00:14:13.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more, then it's doing the thing.""" start="00:14:16.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Cognizant is working. So where are we now for""" start="00:14:21.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""questions? Ooh, I can actually,""" start="00:14:22.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have ERC here. I can find eventually.""" start="00:14:25.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""1 of my screens has Dev in it.""" start="00:14:28.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay, here we are. What are the other""" start="00:14:30.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""questions? Probably, Probably an IRC.""" start="00:14:34.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Where's IRC? Dove, dove,""" start="00:14:39.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""dove. I did try to record things more slowly,""" start="00:14:45.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I tried several times,""" start="00:14:47.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but I really just speak very quickly when I""" start="00:14:49.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""get excited and Emacs is very fun so it is""" start="00:14:53.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tough oh yes okay so 1 in once yes automated""" start="00:14:59.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""present workflows oh yeah okay so where are""" start="00:15:04.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we now for time? Oh look,""" start="00:15:05.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's 4.30, should we do our closing remarks""" start="00:15:07.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or like how are things going over in the""" start="00:15:09.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other stream? I should find out.""" start="00:15:11.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I've been keeping a close eye on the""" start="00:15:14.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other 1, but yeah, I believe that-""" start="00:15:16.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yay, look at that, good timing.""" start="00:15:19.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay, I have managed to zoom through the""" start="00:15:22.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""questions and we can switch over to the""" start="00:15:26.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""closing remarks how do we do this yes okay""" start="00:15:31.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""okay we're gonna oh wait people okay people""" start="00:15:35.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""who wanted to ask questions how do you want""" start="00:15:37.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to do this? Because there are a lot of people""" start="00:15:39.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in this 1 here too. You want to go to the""" start="00:15:42.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other 1? 0 no, they aren't done yet.""" start="00:15:48.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sorry, I forgot to turn on the con tab""" start="00:15:51.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because of course I got excited.""" start="00:15:52.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay, so Jacob is still answering questions,""" start="00:15:54.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which means I get to still answer questions.""" start="00:15:56.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Now I'll try to be quiet and let people in""" start="00:15:59.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the BBB room speak up if we want to.""" start="00:16:01.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay that means""" start="00:16:12.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: are going to hear.""" start="00:16:13.585" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Some more""" start="00:16:13.715" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 2]: people in the chat ideas I had on the Emacs""" start="00:16:15.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conferences you could have like a little""" start="00:16:17.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs starter config just for like the Emacs""" start="00:16:21.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference where you have emms playlist and""" start="00:16:26.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""IRC help cheer function to help get you into""" start="00:16:29.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""IRC into ERC and then the to-do states that I""" start="00:16:35.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""was talking about before.""" start="00:16:36.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So you can say, I'm watching this 1,""" start="00:16:40.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I want to re-watch this 1,""" start="00:16:41.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but I'm going to skip it because I'm watching""" start="00:16:42.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""something else. I used the HyperBowl package""" start="00:16:52.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to go straight to the web pages to all the""" start="00:16:55.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""either pads but you can also have some quick""" start="00:16:59.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""functions to go into a CRDT buffer hosted""" start="00:17:04.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""buffer, where all the org mode Etherpad""" start="00:17:07.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""documents would be. And then that would get""" start="00:17:14.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everybody using Emacs,""" start="00:17:15.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then they could all be chatting with each""" start="00:17:17.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other with CRDT, with controlling Emacs.""" start="00:17:23.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know how the sub stuff,""" start="00:17:25.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know if you can get the sub stuff in""" start="00:17:27.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there working, but yeah,""" start="00:17:29.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It could be a good way of getting it all""" start="00:17:32.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""wrapped up together. And also,""" start="00:17:34.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Mkron, if you ever looked at that versus""" start="00:17:38.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Kron, Mkron is configured in Elisp.""" start="00:17:40.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Then you can also write some custom functions""" start="00:17:43.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in the middle of your Kron.""" start="00:17:44.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So maybe you could make some like conditional""" start="00:17:46.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things where you can start or stop it.""" start="00:17:48.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And like 1 of the differences is if your""" start="00:17:56.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""computer reboots, it can start up and say,""" start="00:17:58.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, I'm supposed to run this cron job at this""" start="00:18:01.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time and then just Do the correct thing""" start="00:18:04.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""rather than losing the state Randomly because""" start="00:18:08.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""your computer lost power""" start="00:18:10.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thanks for those recommendations I will add""" start="00:18:15.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""mcron to my list of things to check out.""" start="00:18:17.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And yeah, we finally remembered to publish""" start="00:18:23.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all those schedules as org,""" start="00:18:25.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I decided to just spam all the time zones""" start="00:18:27.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with them, which was fantastic.""" start="00:18:28.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And other people have mentioned that this is""" start="00:18:30.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""useful. We get to figure out how to use this""" start="00:18:32.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to teach people more about what you can do""" start="00:18:35.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with org. As you mentioned,""" start="00:18:36.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""encouraging them to tag the stuff with things""" start="00:18:40.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that they want to attend gives us the ability""" start="00:18:43.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to set up an agenda view for them that has""" start="00:18:45.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the talks that are tagged with those tags.""" start="00:18:47.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: So I""" start="00:18:48.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: was like, okay, let's,""" start="00:18:49.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""let's teach org mode and lisp in the process""" start="00:18:53.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of doing things. Okay,""" start="00:18:58.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there was a question about any chance of an""" start="00:19:00.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in person EmacsConf again someday.""" start="00:19:02.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I was actually at the very first EMAX""" start="00:19:05.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Conf, which was 2013 and organized in London""" start="00:19:11.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to take advantage of the fact that I had a""" start="00:19:12.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""business shift there. It was fantastic being""" start="00:19:15.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in a room with 100 other people who are all""" start="00:19:18.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""really interested in Emacs,""" start="00:19:19.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but I'm not traveling like any time for the""" start="00:19:23.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""foreseeable future, so if other people are""" start="00:19:25.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interested in organizing something like that,""" start="00:19:27.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I am totally happy to spread the word.""" start="00:19:29.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It doesn't fit with my current lifestyle,""" start="00:19:31.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but it might fit somebody's.""" start="00:19:32.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know. We're still just here.""" start="00:19:37.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I like the virtual conference.""" start="00:19:38.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I really like the fact that we can bring""" start="00:19:41.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""together people from all over the world.""" start="00:19:43.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can take a look at my schedule with all the""" start="00:19:46.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time constraints. Okay,""" start="00:19:47.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I need to put this person in the morning""" start="00:19:49.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because they're in Australia and I need to""" start="00:19:50.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""put this person in the afternoon because""" start="00:19:52.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they're from Vancouver or from somewhere else""" start="00:19:56.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in the Pacific time zone.""" start="00:19:58.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it's just this breadth of people.""" start="00:20:01.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But the other thing that I would love for""" start="00:20:04.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people to start thinking about is if we could""" start="00:20:06.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have a virtual conference in other time""" start="00:20:08.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""zones, so that's easier for people in Asia""" start="00:20:11.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Pacific or Europe to attend.""" start="00:20:12.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And as we're getting the hang of this,""" start="00:20:16.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this crontab-based thing,""" start="00:20:17.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think we might almost be at the point where""" start="00:20:20.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can set it up to run even when I'm""" start="00:20:22.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sleeping. And then other people can figure""" start="00:20:24.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""out, you know, the exception handling,""" start="00:20:26.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, you know, this talk needs to be""" start="00:20:27.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""restarted. Okay, just play it again and scrub""" start="00:20:30.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""around to find the right part,""" start="00:20:31.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which means we could have replays,""" start="00:20:34.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or we can have like the Asia Pacific""" start="00:20:37.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Alternate Event that we had the other time""" start="00:20:39.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""where some speakers came back online and did""" start="00:20:45.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""another Q&A session just for that kind of""" start="00:20:48.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""event. So those are other cool,""" start="00:20:51.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""fun things that would love to be,""" start="00:20:52.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""would be great. Satellite events,""" start="00:20:57.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""someone mentioned in the etherpad.""" start="00:20:59.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Some people have been organizing these,""" start="00:21:03.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which are great. Basically a bunch of people""" start="00:21:05.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""get together in a room or 2 rooms now because""" start="00:21:07.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of the tracks and watch Emacs Conf together.""" start="00:21:10.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So if you have a physical meetup or if you'd""" start="00:21:12.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like to start 1, It's basically,""" start="00:21:15.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, do this, maybe have stickers if you""" start="00:21:17.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have stickers. You know,""" start="00:21:19.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's just have everyone come over and hang""" start="00:21:22.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""out and meet people. I don't know.""" start="00:21:24.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's a thing. Specifically how to do it,""" start="00:21:27.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have no idea how to organize these things.""" start="00:21:29.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But Alain does. So talk to him.""" start="00:21:32.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 2]: Another way of adding multiple tracks is""" start="00:21:35.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""changing it to doing it like 2 times a year,""" start="00:21:37.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in max confidence.""" start="00:21:39.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, yeah, people have mentioned something""" start="00:21:44.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like that. Or the fact that org often has""" start="00:21:50.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like a full day of talks by itself,""" start="00:21:51.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and actually a little bit more than a day""" start="00:21:53.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""now, because I've been squeezing things into""" start="00:21:55.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other tracks. There has been some potential""" start="00:21:58.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interest in having an org conf.""" start="00:22:00.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It could be a thing. And I'd love to see""" start="00:22:03.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""also, we'd love to experiment with other""" start="00:22:05.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""formats. So there could be a bug hunting""" start="00:22:08.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""session or let's use the breakout rooms to""" start="00:22:13.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""split up into little mentoring groups and see""" start="00:22:15.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""how that works. So lots of things that we can""" start="00:22:18.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""do. They've actually finished over in the Gen""" start="00:22:21.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""track so I don't know if people want to very""" start="00:22:24.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""quickly ask questions here or if we go there.""" start="00:22:26.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Leo has come over here instead so okay he's""" start="00:22:31.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""joining over here on the other side.""" start="00:22:32.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay, hello.""" start="00:22:35.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I""" start="00:22:38.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: have 1 thing to add. Yeah,""" start="00:22:43.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: No, no, no, I was just about to say I am not""" start="00:22:46.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hosting anymore. You 2 do a wonderful job,""" start="00:22:48.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I'm happy to just watch.""" start="00:22:49.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: go ahead. Cool. Yeah, I was going to add 1""" start="00:22:53.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""quick note about any potential suggestions or""" start="00:22:56.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""recommendations for hosting Emacs on""" start="00:22:58.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""satellites. Is that, I mean,""" start="00:23:00.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""given that we are an event centered around""" start="00:23:01.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs, and Emacs is backed by the Free""" start="00:23:07.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Software Foundation, if you do reach out to""" start="00:23:09.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""them, they're usually pretty helpful in terms""" start="00:23:11.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of sending goodies and stickers and such.""" start="00:23:14.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So yeah, if you give them a heads up and""" start="00:23:16.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""reach out to them in advance,""" start="00:23:17.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you might well end up with a whole bunch of""" start="00:23:20.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""swag on your hands that you could give out""" start="00:23:22.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""during the satellite. So that's the thing.""" start="00:23:24.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: Well, I just wanted to note it felt kind of""" start="00:23:35.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""even smoother. I mean,""" start="00:23:37.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you guys always run a nice conference,""" start="00:23:39.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but it felt smoother this year than ever""" start="00:23:43.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""before, which listening to your talk,""" start="00:23:45.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sasha, All the automation that you're doing""" start="00:23:48.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is pretty incredible. So I think it's paying""" start="00:23:52.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""off.""" start="00:23:52.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yay! You know, it is very amusing to hear the""" start="00:23:58.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""host say, okay, you know,""" start="00:23:59.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but we've got to wrap up in the next 30""" start="00:24:00.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""seconds because Sasha's contact is going to""" start="00:24:02.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""go yoink!""" start="00:24:03.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: I have a person I work with who keeps the""" start="00:24:12.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""trains running on time shall we say and like""" start="00:24:15.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""cuts off every meeting like the second that""" start="00:24:18.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's supposed to end while somebody's in""" start="00:24:21.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""mid-sentence and I hope we don't get to that""" start="00:24:24.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""point here.""" start="00:24:25.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: So do we have any more,""" start="00:24:34.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: oh sorry I'm reverting to the hosting,""" start="00:24:36.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Do we have any more questions for MaxConf?""" start="00:24:37.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Although maybe we want to switch to the other""" start="00:24:39.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""room so that we don't struggle too much to""" start="00:24:41.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""find... Organize the stuff on BBB afterwards.""" start="00:24:44.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, the recording. Well,""" start="00:24:46.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this is a way to make sure the recording gets""" start="00:24:48.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""online. But we could do that too.""" start="00:24:54.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know. What do y'all think?""" start="00:24:55.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: I'm personally fine. If we want to stay here""" start="00:25:00.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right now, the development track is currently""" start="00:25:02.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""streaming this BBB room.""" start="00:25:05.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So are we on Jen. So we're going to leave it""" start="00:25:08.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""at is and move into closing remarks if we""" start="00:25:10.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""want.""" start="00:25:10.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, yeah, just, I guess,""" start="00:25:14.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""make sure that every 1 of the organizers are""" start="00:25:17.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""here. I see Flo here. Let's see,""" start="00:25:20.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Corbyn, are you here? Can you maybe speak""" start="00:25:23.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""here on BBB?""" start="00:25:24.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: We'll give some time for Corbyn to figure it""" start="00:25:32.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""out. He did figure it out eventually""" start="00:25:33.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yesterday, so surely today will go""" start="00:25:36.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""swimmingly.""" start="00:25:36.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Right. We're getting everything ready,""" start="00:25:47.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""folks.""" start="00:25:47.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. So while we sort out Corwin,""" start="00:25:57.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""can someone tell him on mumble,""" start="00:25:58.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I guess? Because I'm not sure if he's...""" start="00:26:00.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Anyway. I also want to say that in the Emacs""" start="00:26:05.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference channel, people have been""" start="00:26:06.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""mentioning that the remote stuff has been""" start="00:26:08.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""working for them. And I really do like the""" start="00:26:10.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""way that this means we can have all the""" start="00:26:12.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""videos, you know, all prepared,""" start="00:26:13.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they're captioned, you know,""" start="00:26:16.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We can send them to people,""" start="00:26:17.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we can post them on the website afterwards.""" start="00:26:19.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We can bring all these people together who""" start="00:26:21.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""might not be able to convince their companies""" start="00:26:23.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to fly them somewhere for an Emacs""" start="00:26:25.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference. And also I can do this kind of""" start="00:26:29.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""prep while having my now seven-year-old still""" start="00:26:32.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""be able to wander by and whatever.""" start="00:26:34.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Travelling is really tough.""" start="00:26:36.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So, this is fine. This is cool.""" start="00:26:39.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I like this. We'll keep doing it.""" start="00:26:40.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: It's definitely playing into the low-cost""" start="00:26:44.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference. To do it online,""" start="00:26:46.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So many people can just access it very""" start="00:26:48.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""easily. All right, so we've messaged Colwyn.""" start="00:26:53.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I guess we can get started with Dalim.""" start="00:26:55.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It should maybe take a minute or 2 to join""" start="00:26:57.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""us. Should I get started with the Final words""" start="00:27:01.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of the day? All right,""" start="00:27:04.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""cool. All right, folks,""" start="00:27:05.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we made it. We are at the end of the second""" start="00:27:08.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""day of EmacsConf, the second of 2 days.""" start="00:27:10.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And the first thing I want to say is first,""" start="00:27:12.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thank you so much for joining us for this new""" start="00:27:15.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""edition. It's personally my fourth year doing""" start="00:27:19.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the EmacsConf, but if you go to emacsconf-org""" start="00:27:22.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and you see the different sessions,""" start="00:27:24.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you will realize that the first 1 was in""" start="00:27:27.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""2013, which happens to be 10 years ago.""" start="00:27:29.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we are obviously very excited about all of""" start="00:27:33.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this and we'll tell you perhaps a little more""" start="00:27:35.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about what has changed over the last 10""" start="00:27:38.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""years. As usual, you know the pre-recorded""" start="00:27:41.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talks are available right now on the talk""" start="00:27:44.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""page, at least for all those which were""" start="00:27:46.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""pre-recorded. All the ones which happened on""" start="00:27:48.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the Google button, it will take us a little""" start="00:27:50.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""bit of time to figure out how to,""" start="00:27:52.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""well, when to put them available.""" start="00:27:54.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We need to do subtitles and all this jazzy""" start="00:27:56.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""stuff. And we'll also upload them to YouTube""" start="00:27:59.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and other places once we check the audio,""" start="00:28:01.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""especially for the Q&As.""" start="00:28:02.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We need to clean up some of the audios and""" start="00:28:05.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""make sure that we do not publish any personal""" start="00:28:08.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""stuff. All the live talks and Q&As will do""" start="00:28:13.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this in the weeks to come.""" start="00:28:14.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Usually, it takes us about 1 to 2 months to""" start="00:28:16.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""try to get everything out,""" start="00:28:17.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but if it takes longer,""" start="00:28:18.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's fine. Eventually,""" start="00:28:19.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything will be there.""" start="00:28:20.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""The 1 thing we can say is that by EmacsConf""" start="00:28:23.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""2024, when it comes around,""" start="00:28:26.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything should have been uploaded at some""" start="00:28:28.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""point. So that's a wide window.""" start="00:28:30.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So again, and as usual,""" start="00:28:34.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""feel free to spread the word about EmacsConf""" start="00:28:35.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because, you know, we've been doing this for""" start="00:28:38.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a while and every year more people show up to""" start="00:28:42.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""these events and more people watch the videos""" start="00:28:43.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on YouTube and it's wonderful to see,""" start="00:28:46.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, our main goal which is to get cool""" start="00:28:49.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""ideas out of the head of people,""" start="00:28:51.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""shared and viewed by so many people.""" start="00:28:53.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's always amazing. Also,""" start="00:28:56.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I would like to ask you personally,""" start="00:28:58.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""what did you like about this conference?""" start="00:28:59.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Or what do you like, what do you feel was""" start="00:29:01.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""better than last year,""" start="00:29:02.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because the feedback is very useful to us.""" start="00:29:05.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We'd also like to know if you've got any""" start="00:29:07.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""ideas for making things even better.""" start="00:29:08.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And we've got a general conference discussion""" start="00:29:11.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""slash notes slash community message board,""" start="00:29:13.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is pad.emaxconf.org""" start="00:29:14.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""slash 2023. And you can also just mention""" start="00:29:19.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""them. You know, we might open this room for""" start="00:29:22.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people to join us and chat,""" start="00:29:24.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""although Flowy and myself,""" start="00:29:25.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""your up team, needs to go to bed.""" start="00:29:27.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So please be mindful of this.""" start="00:29:28.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If you ask a very interesting question,""" start="00:29:29.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We will both have to make sacrifices to stay""" start="00:29:32.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a while longer because you're too damn""" start="00:29:34.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interesting. Now we'd like to move into""" start="00:29:38.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thanking all the people who make EmacsConf""" start="00:29:41.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""possible. And obviously,""" start="00:29:42.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""first, we have to thank all the speakers,""" start="00:29:45.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all the volunteers, the participants,""" start="00:29:46.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and to all those other people in our lives""" start="00:29:49.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""who make it possible through time and""" start="00:29:51.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""support, thank you so much for allowing us to""" start="00:29:53.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""run EmacsCount. It wouldn't happen without""" start="00:29:55.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you, and without us, I suppose,""" start="00:29:57.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because we are included in this.""" start="00:29:58.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""This year's conference hosts are myself,""" start="00:30:01.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Leo Vivier, Amine Bendali,""" start="00:30:03.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and joining our team of hosts for the first""" start="00:30:05.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time this year, Flobby Coder.""" start="00:30:07.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Thank you so much, Flobby.""" start="00:30:08.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You did a wonderful job.""" start="00:30:09.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's right there. No, dammit.""" start="00:30:11.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""No, I can't. I can never remember if BBB is""" start="00:30:15.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""flipping stuff, so either 1 of those""" start="00:30:17.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""directions. The streams this year,""" start="00:30:19.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as last year, were managed by Sasha Schwa,""" start="00:30:21.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""obviously. And the check-ins by Flobby Coder,""" start="00:30:24.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I'm in with Miscellaneous running around""" start="00:30:27.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""by Corwin Brust, who will be joining us""" start="00:30:30.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""momentarily. Apparently,""" start="00:30:32.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all his USB failed, so he will be with us as""" start="00:30:34.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Roost. Rhymes with Roost.""" start="00:30:38.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Do I have audio now? Alright,""" start="00:30:41.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'll go to work on my camera.""" start="00:30:42.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Hi. Hello?""" start="00:30:43.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: soon as he can. It's Lovely.""" start="00:30:45.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay, I'll keep going.""" start="00:30:46.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I also need to thank, well,""" start="00:30:49.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""need, no, I want to thank all the captioning""" start="00:30:51.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""volunteers, the captioners as we call them.""" start="00:30:53.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You've got Daniel Molina,""" start="00:30:54.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Bala Ramadoui, Durai, sorry,""" start="00:30:57.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Bhavin Gandhi, Amin Zayed,""" start="00:30:59.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yoni Rapkin, who presented 1 of the talk""" start="00:31:02.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""earlier, Daniel Alejandro Tapia,""" start="00:31:04.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Hannah Miller, Ken Huang,""" start="00:31:06.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Jean-Christophe Ellary,""" start="00:31:07.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and James Howell. Also thanking""" start="00:31:10.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Jean-Christophe Ellary,""" start="00:31:11.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Colwyn, Quiliro, Kern,""" start="00:31:13.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and Amin Bendali for helping with the early""" start="00:31:15.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""acceptance process. Sasha,""" start="00:31:18.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""do I read this 1? It's weird to think myself.""" start="00:31:21.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm gonna pat myself on the back,""" start="00:31:22.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I guess. Go on, Sasha.""" start="00:31:24.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'll do it. I'll do it.""" start="00:31:26.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's fine. Thanks to myself for fiddling with""" start="00:31:29.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the audio to get things nicely synced,""" start="00:31:30.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And thanks to myself again and other people,""" start="00:31:34.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we kept the mailing list free from spam.""" start="00:31:36.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Because I'm not sure what happened since May,""" start="00:31:39.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but we've been receiving about 3 to 4 spam""" start="00:31:41.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""emails. And it just happened all of a sudden,""" start="00:31:44.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I was really weirded out by this process.""" start="00:31:46.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Where was I? OK, thanks to Andrew Ducurty for""" start="00:31:51.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""helping with whisper processing.""" start="00:31:53.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Thanks to Ashki Ghekwad for design""" start="00:31:55.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""contribution. Thanks to Yoshin,""" start="00:31:57.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""our grand changro for all the music that""" start="00:31:59.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we've been using for the last 3 years at this""" start="00:32:01.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""point, I think. Also thanks to Rye for the""" start="00:32:04.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""server that we're using for OBS streaming and""" start="00:32:06.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for processing videos.""" start="00:32:07.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And also thanks to the free software""" start="00:32:10.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""foundation for obviously Emacs itself,""" start="00:32:12.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the mailing list that we use,""" start="00:32:14.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and the media.emacsconf-org""" start="00:32:15.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""server where all of the presentations are""" start="00:32:19.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""currently hosted. We'd also like to thank""" start="00:32:22.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""BigBlueButton, Etherpad,""" start="00:32:23.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""IceCast, OBS, The Lounge,""" start="00:32:25.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Libre.chat, FFmpeg, OpenAI,""" start="00:32:28.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Whisper, the E-N-E-S force alignment tool,""" start="00:32:31.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Site Transfer, SubD, and contributors to all""" start="00:32:34.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of the tools and services we used in the""" start="00:32:36.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""making of this conference.""" start="00:32:37.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And obviously, all of them are free,""" start="00:32:39.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as Sasha obviously told you,""" start="00:32:41.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and as we will be telling you again for many""" start="00:32:44.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""years to come. We'd also like again to thank""" start="00:32:47.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everyone for attending the conference and""" start="00:32:49.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""making EmacsConf what it is.""" start="00:32:51.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And for those who were on the general track,""" start="00:32:54.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know Sasha did it in parallel to the last""" start="00:32:56.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talk we had today. She did a wonderful talk""" start="00:32:58.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on how EmacsConf is actually run.""" start="00:33:01.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So there's her talk, there's also an entire""" start="00:33:05.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""page on our wiki about the infrastructure""" start="00:33:07.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that we use. So if you're interested,""" start="00:33:09.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""especially in running an event of your own,""" start="00:33:11.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you've got as much information as you want,""" start="00:33:14.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and as Sacha probably told you,""" start="00:33:15.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we are available for sharing the knowledge""" start="00:33:17.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and enabling your dreams of making a""" start="00:33:20.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference. Amint, do you want to take it""" start="00:33:24.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""over with the fiscal sponsorship""" start="00:33:25.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, sure. Let's see.""" start="00:33:29.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Can you please scroll down a little bit?""" start="00:33:30.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Whoever is kindly sharing the screen.""" start="00:33:33.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: announcements? Okay. Oh,""" start="00:33:34.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I was scrolling on my end.""" start="00:33:36.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sorry.""" start="00:33:36.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thanks, Sasha. Yeah, so kind of super excited""" start="00:33:41.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to finally get into this.""" start="00:33:43.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And this is something that we've been kind of""" start="00:33:45.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hoping to get worked out for a long time""" start="00:33:46.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually and it's finally here.""" start="00:33:48.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So people might have already seen this but as""" start="00:33:52.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of this last Thursday we're actually fiscally""" start="00:33:57.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sponsored by the Free Software Foundation.""" start="00:33:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we joined their Working Together for Free""" start="00:34:03.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Software program. And DFSF published the""" start="00:34:07.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""announcement on their website.""" start="00:34:08.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You're welcome to go and check it out there.""" start="00:34:11.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But I just want to quickly get into a little""" start="00:34:14.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""bit about what it means and some of the""" start="00:34:17.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""benefits, I guess. So as part of this working""" start="00:34:21.719" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""together for a free software fund,""" start="00:34:23.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the FSF provides fiscal sponsorship for a""" start="00:34:26.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""number of important free software and new""" start="00:34:29.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""technical projects, such as the new tool""" start="00:34:30.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""chain and Replicant, which is a free fork of""" start="00:34:33.679" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Android. And starting this year,""" start="00:34:36.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""EmacsConf has joined the program as well.""" start="00:34:38.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And as a fiscal sponsor,""" start="00:34:40.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""DFSF can assist us by providing services""" start="00:34:43.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""required by a legal entity,""" start="00:34:46.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like signing contracts and receiving and""" start="00:34:49.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""processing payments. So to provide some""" start="00:34:53.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""context, eMAXConf is and always has been an""" start="00:34:56.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""independent initiative organized by a very""" start="00:34:58.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""small number of people,""" start="00:34:59.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a small team of people without any corporate""" start="00:35:02.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sponsors. And that's important in part""" start="00:35:05.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because I believe part of our message is that""" start="00:35:08.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we want to showcase that everybody can do""" start="00:35:11.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this and organize a conference like this no""" start="00:35:14.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""matter how small your team is and how modest""" start="00:35:17.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""your resources are, which we will actually""" start="00:35:19.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""get into a little bit later in the closing""" start="00:35:21.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""remarks. But yeah, so now having the FSF as""" start="00:35:25.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""our fiscal sponsor, we're in a better""" start="00:35:27.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""position to accept donations as 1 potential""" start="00:35:30.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""way to contribute or help the conference.""" start="00:35:33.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And just to clarify, we're currently not""" start="00:35:36.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""struggling at all to cover these costs of the""" start="00:35:39.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""servers and such, which we will get into""" start="00:35:41.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""again. But this is just 1 extra avenue if""" start="00:35:44.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people are feeling generous and would like to""" start="00:35:46.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""help, it's much appreciated.""" start="00:35:47.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And yeah, so having a 501c3 nonprofit like""" start="00:35:54.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the FSF, as a fiscal sponsor,""" start="00:35:57.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""many donors will receive tax benefits that""" start="00:36:00.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they otherwise wouldn't receive if they were""" start="00:36:02.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to like donate to like individuals running a""" start="00:36:04.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""project directly. And also donors can know""" start="00:36:07.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that, you know, the funds that they're""" start="00:36:08.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""donating are being handled by an accountable""" start="00:36:10.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""institution. And also importantly,""" start="00:36:14.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""when donating through the FSF,""" start="00:36:16.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Let's see, text changing.""" start="00:36:19.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay, yeah. People can donate without having""" start="00:36:23.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to run any non-free JavaScript,""" start="00:36:24.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is nice. Because unfortunately,""" start="00:36:27.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""usually these days on the web when you do""" start="00:36:29.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""want to buy something or spend money,""" start="00:36:30.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you have to run non-free JavaScript,""" start="00:36:31.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which isn't the case when donating through""" start="00:36:35.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the FSF. Yeah, so we just joined,""" start="00:36:37.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as I said, on Thursday,""" start="00:36:39.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and we've already received our very first""" start="00:36:43.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""donation, so we'd like to extend our thanks""" start="00:36:45.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and gratitude to Scott Ranby,""" start="00:36:46.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""who is actually our first ever kind donor.""" start="00:36:49.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""They agreed to be thanked publicly.""" start="00:36:51.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So thank you, Scott. And yeah,""" start="00:36:55.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so this is a recent development.""" start="00:36:57.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And we plan to add much more information and""" start="00:36:59.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""details about this whole situation to the""" start="00:37:01.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""wiki, including links to the announcements,""" start="00:37:04.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""some more information about the program,""" start="00:37:06.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and our donation page of course,""" start="00:37:08.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in the new future. And in the meantime I'm""" start="00:37:12.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""also happy to help answer any questions as""" start="00:37:15.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""best as I can, So feel free to ping me on IRC""" start="00:37:17.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or just email me at bandalia.guinard.org.""" start="00:37:19.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Which gives me a chance to jump in and just""" start="00:37:26.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""point out 1 question that we know people have""" start="00:37:29.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is just about how much of the money goes to""" start="00:37:32.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""FSF when you make a contribution through the""" start="00:37:35.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""fund toward EmacsConf?""" start="00:37:36.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, exactly. Yeah, and the answer to that""" start="00:37:40.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is that it's 10%, which is for supporting the""" start="00:37:44.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""operation of the Working Together program and""" start="00:37:46.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""also the shared GNU infrastructure,""" start="00:37:48.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which we as EmacsConf use and depend on,""" start="00:37:52.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""along with several hundred GNU packages.""" start="00:37:54.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So, yeah, and it covers things like""" start="00:37:59.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""transaction costs that the FSF's payment""" start="00:38:03.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""processor charges?""" start="00:38:04.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: And then again I'll come back to say this is""" start="00:38:10.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a real fair price. I have some experience""" start="00:38:12.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with working with payment processing and""" start="00:38:15.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things like this and like 10% that's a that's""" start="00:38:19.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""something that you see in Bigger businesses""" start="00:38:22.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that have a model around making money on that""" start="00:38:25.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Transaction so to be able to do that as a""" start="00:38:29.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""nonprofit. We're taking advantage of a really""" start="00:38:31.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""awesome thing there.""" start="00:38:32.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, exactly. And yeah,""" start="00:38:35.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just for a quick plug,""" start="00:38:36.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the FSF is actually doing an end of year""" start="00:38:38.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""fundraiser right now. So if you want to go""" start="00:38:41.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""donate to them, or if you donate to us,""" start="00:38:44.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a part of it will go to the FSF to support""" start="00:38:47.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""their work on free software,""" start="00:38:51.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""helping grow the movement,""" start="00:38:53.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and spread the word about it.""" start="00:38:56.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So, thank you. And I guess now is a good time""" start="00:39:02.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for me to pass the baton to the next""" start="00:39:05.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""organizer who wants to talk about some of the""" start="00:39:08.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""specs of the servers that we use right now.""" start="00:39:11.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: We actually don't have to go about this in""" start="00:39:14.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""detail. I just put it in there in case people""" start="00:39:16.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""were curious about how much it takes to run""" start="00:39:19.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""something like this. Not a lot.""" start="00:39:20.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's just really, you know,""" start="00:39:22.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""2 days of computing is not that expensive in""" start="00:39:26.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""today's world, and all the rest is just""" start="00:39:29.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""volunteer time and a heck of a lot of Emacs""" start="00:39:32.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""lists as previously discussed in our""" start="00:39:34.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""presentation. So, we'll just skip through""" start="00:39:41.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that instead of reading all of it.""" start="00:39:42.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Unless people are specifically curious,""" start="00:39:43.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you can ask questions afterwards.""" start="00:39:44.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But yes, happy birthday,""" start="00:39:46.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""EmacsConf, and here's another wonderful 10""" start="00:39:49.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""years.""" start="00:39:49.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: All right, I think we are at the end of the""" start="00:39:56.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""closing remarks. Have I forgotten anything?""" start="00:39:58.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We haven't had Flowy yet,""" start="00:40:00.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I believe. Sorry for putting you on the spot""" start="00:40:03.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""again.""" start="00:40:03.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: I guess I have nothing really to say besides""" start="00:40:07.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""what you have already said.""" start="00:40:09.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So thank everybody to make a presentation,""" start="00:40:12.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to do anything here. Thanks for all of you""" start="00:40:15.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that I could be a part of it.""" start="00:40:16.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have to admit it also.""" start="00:40:17.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So thank you all. And yeah,""" start="00:40:21.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""nothing to say probably.""" start="00:40:22.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: And I also want to send the thanks to Flowy""" start="00:40:25.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for, you know, stepping in.""" start="00:40:27.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We kind of like throw this on you like at the""" start="00:40:29.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""last second, but Flowy actually stepped in""" start="00:40:31.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and hosted graciously a couple of the talks""" start="00:40:33.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on the Dev track today.""" start="00:40:34.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So, which I think went very well.""" start="00:40:36.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So congrats and thank you.""" start="00:40:38.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: Thank you.""" start="00:40:39.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Speaking of which we were not monsters.""" start="00:40:41.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We kindly asked Floey yesterday because""" start="00:40:43.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything was going so well.""" start="00:40:44.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And now we can say it,""" start="00:40:45.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, I can say things are going well.""" start="00:40:46.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Usually it's a bad thing when you're doing a""" start="00:40:48.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""broadcast to say things are going well right""" start="00:40:50.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""now because it tends to backfires at some""" start="00:40:53.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Hours of notice, hours of notice.""" start="00:40:56.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That, that's planning.""" start="00:40:58.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: point. But yesterday- So hours of notice,""" start="00:41:02.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Flowy didn't sleep all that much because we""" start="00:41:04.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tasked him with hosting,""" start="00:41:06.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so he was turning in his bed all night""" start="00:41:08.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thinking, oh, I'm going to host MaxCons.""" start="00:41:09.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But Flowy, you did a wonderful job and I am""" start="00:41:13.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so glad that not only you were able to join""" start="00:41:15.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""us again this year, but that also you were""" start="00:41:17.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""able to host. Because last year,""" start="00:41:19.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""had we asked you to host,""" start="00:41:20.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you would have said no.""" start="00:41:21.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""First time we asked you this year was yes,""" start="00:41:25.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but give me some time to think about it.""" start="00:41:27.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: Next year it is yes completely.""" start="00:41:30.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: If we've done a good job,""" start="00:41:32.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it will be yes directly.""" start="00:41:33.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""All right, so since we are at the end of the""" start="00:41:38.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thankings and I did say europe team needs to""" start="00:41:41.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""go to bed in about 12 minutes that leaves us""" start="00:41:43.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about 12 minutes to try to answer as many""" start="00:41:45.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""points as you'd like to raise.""" start="00:41:47.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sasha, I think the Q&A room is still open""" start="00:41:50.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because we are technically still in the Emacs""" start="00:41:52.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference room currently.""" start="00:41:53.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So, if you... We're going to put the link""" start="00:41:56.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""again if you need to find it.""" start="00:41:57.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Otherwise, scroll up and find the 1 on there.""" start="00:41:59.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: I think I can change the redirect.""" start="00:42:04.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Maybe. I will go figure this out.""" start="00:42:07.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Keep talking in the background.""" start="00:42:08.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Right. So, whilst we figure this out in the""" start="00:42:12.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""background, it would be nice if you could""" start="00:42:13.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""join us and ask questions,""" start="00:42:14.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""either by dropping them.""" start="00:42:15.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I see plenty of people have already left some""" start="00:42:18.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""comments. We have 2 places,""" start="00:42:19.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right now it's more about a chitchatting""" start="00:42:21.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about the end of the conference.""" start="00:42:23.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If you've got general feedback,""" start="00:42:24.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we've mentioned it at the top,""" start="00:42:26.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but if you want to write your general""" start="00:42:28.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""feedback here, it will find its way at some""" start="00:42:30.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""point in the years of the relevant people who""" start="00:42:32.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""can make things change.""" start="00:42:33.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So don't worry too much about where you put""" start="00:42:35.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""your feedback, it'll be fine.""" start="00:42:37.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But now, how about we start reading some of""" start="00:42:40.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the notes that people have said or questions""" start="00:42:42.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that""" start="00:42:43.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: have been asked. So here's 1 for Amin.""" start="00:42:47.094" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Do you have any stats on how many people""" start="00:42:48.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""watched for an IRC and BBB over the 2 days?""" start="00:42:52.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, yeah, so I guess for IceCast,""" start="00:42:58.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which I can answer more readily,""" start="00:43:00.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think yesterday we were averaging around""" start="00:43:03.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""240, 250 concurrent viewers at a time.""" start="00:43:08.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And today, so today it varied.""" start="00:43:12.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think the maximum was again like around 200""" start="00:43:16.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to 20-ish with the average being more around""" start="00:43:19.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""180, 190 viewers. We've had a lot of hits to""" start="00:43:24.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the actual web pages for the Emacs Conf Wiki""" start="00:43:28.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or the pad, which are all being served on 1""" start="00:43:31.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""server. I pulled some numbers.""" start="00:43:34.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm not sure if they're correct.""" start="00:43:36.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I'm like a little bit hesitant to discuss""" start="00:43:38.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""them. Safe to say they're easily in the tens""" start="00:43:41.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of thousands, maybe in the hundreds of""" start="00:43:44.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thousands of total visits over the past,""" start="00:43:47.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Maybe the pad makes a lot of small requests.""" start="00:43:52.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: I guess, 48 hours. Right,""" start="00:43:53.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""okay. So, yeah, that's why I'm hesitant to""" start="00:43:57.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""say. But yeah, easily in the thousands or""" start="00:43:59.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: You know""" start="00:44:01.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: who you are anyway, the crowd,""" start="00:44:02.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know how many you are,""" start="00:44:04.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you do not need exact numbers""" start="00:44:05.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: tens of thousands. Yeah,""" start="00:44:08.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so I don't have the exact numbers but I guess""" start="00:44:11.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's always kind of fun to maybe try to pull""" start="00:44:13.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""some numbers and look at it that way but you""" start="00:44:15.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""know of course we all know that what we do,""" start="00:44:18.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""every single person counts.""" start="00:44:19.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I don't know, trying to look at turning""" start="00:44:24.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people into abstract numbers isn't,""" start="00:44:27.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know, inspiring to me very much,""" start="00:44:30.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but it's cool. So.""" start="00:44:31.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: All right. So how about we go into the""" start="00:44:36.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""questions. So Sasha is now in the viewport""" start="00:44:37.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""where we can see some questions.""" start="00:44:39.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So how about we take some of them.""" start="00:44:41.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can read them or if anyone of the""" start="00:44:43.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""organizers wants to do this,""" start="00:44:45.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""feel free, especially those who haven't""" start="00:44:46.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talked to a whole lot this year.""" start="00:44:48.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Cohen, do you want to try it?""" start="00:44:53.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I didn't make my motive clear.""" start="00:44:54.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I did and I'm done. I took the first""" start="00:44:59.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""question, I picked the bottom question off""" start="00:45:01.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the list because I knew exactly who it was""" start="00:45:02.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""going for. The person who wants to answer or""" start="00:45:05.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""direct the next question is welcome.""" start="00:45:07.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sorry, I could have given a little better""" start="00:45:10.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""stage direction there.""" start="00:45:11.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm not prepared to answer how many emaxers""" start="00:45:13.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""are from Nordic countries other than to say""" start="00:45:16.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""definitely yes and several.""" start="00:45:17.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I haven't looked close enough at the""" start="00:45:21.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""suggestion yet.""" start="00:45:22.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Right, okay. I can take the question about""" start="00:45:27.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the BBB limitations. So it's the second 1,""" start="00:45:30.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the red 1. Small suggestion,""" start="00:45:31.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""likely out of your control,""" start="00:45:33.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but anyway, the blue button seems to work""" start="00:45:36.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""very well, but it would be a bit more""" start="00:45:38.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""watchable if the webcam frames were lined up""" start="00:45:40.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""vertically on 1 side, because it would allow""" start="00:45:42.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the screen share frames to be larger and""" start="00:45:44.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""would make much better use of the viewable""" start="00:45:47.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""space. Maybe worth a bug report to upstream.""" start="00:45:49.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I agree, BBB has been really good.""" start="00:45:53.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Amine, did you want to say something?""" start="00:45:54.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I'm going""" start="00:45:55.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: to continue and then I'll add something at""" start="00:45:56.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the end.""" start="00:45:56.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Okay, sure. So BBB has been really good for""" start="00:45:59.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""us. It allows us to have many parallel rooms""" start="00:46:04.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which are all recording service side at the""" start="00:46:07.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""same time. And it's wonderful for us because""" start="00:46:09.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we can gather. At some point,""" start="00:46:11.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think last year, we had 4 concurrent talks""" start="00:46:13.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""being recorded because people were just so""" start="00:46:15.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interested in what was going on in rooms.""" start="00:46:17.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And you know, we only,""" start="00:46:19.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like this year, the co-organizers,""" start="00:46:21.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's the 5 people you see in a room""" start="00:46:23.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""currently. And if we had all of us to be in a""" start="00:46:26.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""separate room, having to record on the""" start="00:46:28.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""machine, it wouldn't work.""" start="00:46:29.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we are able to demultiply the amount of""" start="00:46:32.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""content that we produce thanks to BBB,""" start="00:46:33.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but sadly, we are also quite limited by the""" start="00:46:37.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interface of BBB. Another problem that is""" start="00:46:39.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""dear to me is that audio tends to be fairly""" start="00:46:43.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""bad at some points depending on the speakers""" start="00:46:46.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because BBB has really funky audio correction""" start="00:46:50.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""stuff going in the background,""" start="00:46:51.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and sometimes it works,""" start="00:46:52.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sometimes it doesn't work,""" start="00:46:53.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and especially on my machine,""" start="00:46:55.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the specs are above in the document if you're""" start="00:46:58.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interested, but BBB and OBS do not play well""" start="00:47:02.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""at all. You might have heard me speaking with""" start="00:47:04.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""some clicks in my voice at some point.""" start="00:47:06.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's another problem of BBB.""" start="00:47:07.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Anyway, I mean, you wanted to add something""" start="00:47:09.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as well.""" start="00:47:09.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, yeah, I kind of empathize and also""" start="00:47:14.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""emphasize the problems with audio on BBB""" start="00:47:17.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sometimes, but about the specific suggestion""" start="00:47:19.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""here of like lighting things up at least""" start="00:47:22.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""visually, I think that's like much more""" start="00:47:24.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""doable even if you don't open a bug upstream.""" start="00:47:26.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I believe the Free Software Foundation for""" start="00:47:30.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""their LibrePlanet conference,""" start="00:47:31.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""either last year or the year before,""" start="00:47:33.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they had some custom, like clients signed""" start="00:47:36.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""into browser, custom CSS,""" start="00:47:38.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""where it would do exactly something like""" start="00:47:40.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that. It would like enlarge the shared screen""" start="00:47:44.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on the 1 side and then stack up all of the""" start="00:47:46.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""webcam feeds on 1 side.""" start="00:47:48.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we might be able to use something like""" start="00:47:50.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that.""" start="00:47:50.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: So I'll tack on to that.""" start="00:47:53.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And now I feel like a heel as soon as I""" start="00:47:56.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""opened my mouth, because I think I almost get""" start="00:47:59.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the sense Floyd wants to jump in here and""" start="00:48:01.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we're all talking, everyone except Sasha who""" start="00:48:03.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually wrote OBS, you know,""" start="00:48:06.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the OBS WebSocket plugin that is probably the""" start="00:48:10.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""answer to all the different questions""" start="00:48:12.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everyone is bringing up.""" start="00:48:13.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I guess I'll leave my input at that And""" start="00:48:15.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Chloe, did you have anything to say,""" start="00:48:16.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or can we pick on Sasha?""" start="00:48:17.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: Nothing to say.""" start="00:48:20.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: I need to update the OBS WebSocket plugin for""" start="00:48:25.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the protocol change, because I think the""" start="00:48:27.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""protocol change was from 4 to 5.""" start="00:48:29.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's 1 of those things that I haven't gotten""" start="00:48:32.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool. But""" start="00:48:35.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: around to. yeah, so we'll try to solve it in""" start="00:48:37.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""CSS. So if I can tinker with the CSS or if""" start="00:48:41.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""somebody else would like to volunteer to move""" start="00:48:44.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things around, then that would be fantastic""" start="00:48:45.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because front-end should be things.""" start="00:48:48.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Okay, oh, what order of magnitude hours do""" start="00:48:53.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you each of you think you devote to the""" start="00:48:55.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference yearly? I have I expected someone""" start="00:48:58.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""would ask this question.""" start="00:48:59.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I have I have my the past 11 years of time""" start="00:49:07.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""analysis. This is my Emacs category,""" start="00:49:11.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so it also includes Emacs news.""" start="00:49:12.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So this is my Emacs hours by month and year.""" start="00:49:15.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So you can see last year,""" start="00:49:17.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it spiked up a lot. But this year,""" start="00:49:21.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it has taken less time.""" start="00:49:23.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So last month, it was about 93 hours.""" start="00:49:26.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And the month before that was just about 87""" start="00:49:29.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hours of prep. And this actually includes""" start="00:49:31.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things like captioning and,""" start="00:49:33.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and coordination. And then you can see a""" start="00:49:36.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""little bit of time here like the EMAX news""" start="00:49:38.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and and harvesting q&a and adding chapter""" start="00:49:42.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""index indices and things like that.""" start="00:49:43.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I, I like it, it's it's my form of fun.""" start="00:49:47.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And Otherwise, I'm mostly just,""" start="00:49:50.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, helping the kiddo go to play dates""" start="00:49:52.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and carrying things around.""" start="00:49:54.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And, you know, so this is the stuff that I do""" start="00:49:57.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to keep my brain happy.""" start="00:49:58.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And if you're wondering,""" start="00:50:00.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""okay, well, do you sleep?""" start="00:50:01.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's the next question I expected people""" start="00:50:03.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""ask. The answer is yes,""" start="00:50:04.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we still actually do manage to sleep,""" start="00:50:06.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or at least I do. Less so now that I have a""" start="00:50:09.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""kid, this is like 2016,""" start="00:50:10.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""had a kiddo, and then suddenly much less""" start="00:50:13.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sleep, but still a reasonable amount of""" start="00:50:14.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sleep. So Emacs stuff happens,""" start="00:50:16.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can still sleep, and it's a lot of fun.""" start="00:50:19.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Now that's data for you folks.""" start="00:50:23.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, we can't top that at all.""" start="00:50:26.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: It's a blog post also,""" start="00:50:30.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yeah.""" start="00:50:30.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Especially, you start like this,""" start="00:50:33.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""how do you expect all of us to say anything""" start="00:50:36.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""after this? Whatever we say is not going to""" start="00:50:38.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""be backed up by data, it's not going to be as""" start="00:50:40.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""many hours, and it's not going to be as""" start="00:50:42.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""qualitative in general.""" start="00:50:43.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can remark on something because for me it's""" start="00:50:53.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""my fourth year helping to organize EmacsConf""" start="00:50:56.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and there's a definite change this year.""" start="00:50:59.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I did spend, usually I get into EmacsConf""" start="00:51:02.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""mode in late September when I start worrying""" start="00:51:05.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about the CFP, the call for proposal is""" start="00:51:07.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""finishing, and then we need to start running""" start="00:51:09.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""after speakers to secure the proposals to""" start="00:51:12.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""make sure, oh, can you do this?""" start="00:51:13.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Can you do maybe a 10-minute format instead""" start="00:51:16.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of a 20-minute format,""" start="00:51:17.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, all this jazzy stuff.""" start="00:51:18.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And usually it kind of looks like Sasha for""" start="00:51:21.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""me in terms of involvement,""" start="00:51:22.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or at least it did for the previous year.""" start="00:51:24.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But this year, now that I've been gainfully""" start="00:51:28.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""employed as a software developer,""" start="00:51:30.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I found it much harder to find the time to""" start="00:51:33.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""invest into MaxComp. But 1 of the things that""" start="00:51:36.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""allowed me to still stay efficient at my day""" start="00:51:39.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""job is the fact that I knew that Sasha and""" start="00:51:42.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all the work that we did in previous years""" start="00:51:43.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""would come to help us organize this year's""" start="00:51:46.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference. And I'm not kidding,""" start="00:51:48.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this year, I've been keeping an eye,""" start="00:51:49.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""obviously, and we've been chatting with all""" start="00:51:51.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the organizers, but it's mostly been Sasha""" start="00:51:53.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""holding the fort from the end of the CFP in""" start="00:51:56.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""September to right about end of November.""" start="00:52:00.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I'll use the opportunity,""" start="00:52:02.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as well my fellow co-organizers will,""" start="00:52:04.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to thank you Sasha for putting so much time""" start="00:52:07.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and energy into this. Not only Sasha from""" start="00:52:09.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this year, but also Sasha from last year,""" start="00:52:11.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and last year, and last year.""" start="00:52:12.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I will not be able to give you a figure""" start="00:52:19.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of how much time it takes.""" start="00:52:20.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can tell you that the 2 days of Emacs Con""" start="00:52:22.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""are a bloody marathon because we cannot share""" start="00:52:28.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""our screens with you, but Sasha has given you""" start="00:52:31.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a little bit of pointers about,""" start="00:52:32.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, how much stuff we need to monitor.""" start="00:52:34.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sasha just switches constantly between""" start="00:52:36.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""workspaces. I just put everything on 1""" start="00:52:38.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""workspace and my screen looks absolutely""" start="00:52:41.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""mental. And then I wonder why my microphone""" start="00:52:44.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is clipping on BVB, I suppose.""" start="00:52:46.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""All right, that's all for me.""" start="00:52:47.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Anyone wants to say anything about how much""" start="00:52:48.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time it takes? Sasha, please.""" start="00:52:49.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: I have a nice setup this year because I""" start="00:52:52.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually have a Matthew Lent donated a""" start="00:52:55.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""computer to me that can handle the big""" start="00:52:57.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""monitor and I'm stealing my husband's big""" start="00:53:00.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""monitor over there. See,""" start="00:53:01.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So this is my setup today.""" start="00:53:02.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's got like conference stuff on my laptop""" start="00:53:05.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then just IOC on the other big screen and""" start="00:53:08.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the 480p so I can see,""" start="00:53:10.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can make sure it doesn't fall down.""" start="00:53:12.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yes, so I have a nice setup today.""" start="00:53:14.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Anyone wants to comment about how much time""" start="00:53:22.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it takes for them to organize the MaxCon for""" start="00:53:24.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""2, you know, including everything,""" start="00:53:25.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""be it the brainstorming,""" start="00:53:26.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the answering volunteers and stuff like this?""" start="00:53:28.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Or we can move to another question,""" start="00:53:31.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of course.""" start="00:53:31.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: I mean, I know for myself,""" start="00:53:34.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I kind of dropped the ball this year,""" start="00:53:36.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""somewhat unintentionally or unintentionally.""" start="00:53:38.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Well, yeah, I didn't have any other choice,""" start="00:53:41.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""basically, at least in like September through""" start="00:53:44.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like early November or mid November.""" start="00:53:46.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But I think like, it sort of differs,""" start="00:53:51.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I guess, from year to year.""" start="00:53:52.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sometimes life happens,""" start="00:53:53.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and no matter how much you would love to put""" start="00:53:57.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a ton of time into something,""" start="00:53:59.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you just can't. And maybe next year you can""" start="00:54:01.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""do a lot more. So I'm optimistic I'll be able""" start="00:54:04.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to put in much more time into things for""" start="00:54:07.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""EmacsConf next year, but that's just me.""" start="00:54:09.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: I just want to say something before Robin""" start="00:54:12.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""drops in. Sasha, go please first.""" start="00:54:13.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: And I think people shouldn't like feel bad""" start="00:54:18.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about having those. I think designing""" start="00:54:20.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference systems or processes so that they""" start="00:54:24.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""can take advantage of little pockets of time""" start="00:54:26.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is the way to go. I love the fact that we now""" start="00:54:30.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have a system where hosts can show up on the""" start="00:54:33.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""day of and just rock it,""" start="00:54:35.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? So this is great.""" start="00:54:36.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It is good that we can get by with less time""" start="00:54:41.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""throughout the process and just take""" start="00:54:43.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""advantage of whatever time people have.""" start="00:54:45.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Whether it's, you know,""" start="00:54:46.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they've got 2 hours, they want to caption a""" start="00:54:49.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talk, that sort of stuff is already totally""" start="00:54:51.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""awesome.""" start="00:54:52.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: And yeah, you both, thank you.""" start="00:54:57.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yeah, you both stole my Thunder and then put""" start="00:55:00.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a quarterback in me. I couldn't agree more""" start="00:55:03.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with everything you said.""" start="00:55:04.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's something that just typifies what is""" start="00:55:09.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""amazing about this conference,""" start="00:55:10.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? It's a kind of accessibility,""" start="00:55:12.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""isn't it? Having some work I can give you""" start="00:55:17.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that helps you give back to your community""" start="00:55:19.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that is at your level,""" start="00:55:21.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that fits your time budget,""" start="00:55:23.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that is something that you're willing to go""" start="00:55:26.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""care about because it intersects,""" start="00:55:28.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, the world you live in in some""" start="00:55:31.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""practical way and therefore you can make time""" start="00:55:34.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for it. We all live in a lot of different""" start="00:55:37.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""trenches and making them intersect is 1 of""" start="00:55:40.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the things Emacs does in a technical way""" start="00:55:42.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: and""" start="00:55:43.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: through this conference at least in a very""" start="00:55:47.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""community way. Okay, and it brings me back""" start="00:55:51.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""also on the OBS front.""" start="00:55:52.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think that's what really excited me""" start="00:55:54.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""too. When I think about the potential that's""" start="00:55:56.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""out there and getting a bunch of people""" start="00:55:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""looking at the work you've already done with""" start="00:56:01.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""OBS WebSocket and thinking about,""" start="00:56:03.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, oh, we want more timers that count""" start="00:56:06.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things down and we want each organizer to be""" start="00:56:09.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""able to have a little palette of them,""" start="00:56:10.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""some of which are gonna be handed to you by""" start="00:56:12.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the conference director and some of which you""" start="00:56:14.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""can add yourself because they help you and""" start="00:56:16.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that's right. And, you know,""" start="00:56:19.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have, you know, keeping things really fast""" start="00:56:21.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and loose so we can make the artistic""" start="00:56:24.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""decisions on the fly that make our conference""" start="00:56:26.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""what it is, but then making,""" start="00:56:30.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, a simple automated tool chain that""" start="00:56:33.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""anyone can learn and that we know how to""" start="00:56:36.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""execute the steps of manually.""" start="00:56:37.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's the actual design pattern that you've""" start="00:56:41.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""implemented here that's working so well.""" start="00:56:42.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So the""" start="00:56:47.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: 1 thing I wanted to ask about Amin saying,""" start="00:56:50.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, I've dropped the ball this year.""" start="00:56:51.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Amin's, just to be clear with everyone,""" start="00:56:53.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Amin's definition of dropping the ball is""" start="00:56:55.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""securing a sponsorship with the FSF.""" start="00:56:56.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So that's dropping the ball for you.""" start="00:56:58.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Well attending a weekly meeting,""" start="00:57:02.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We take 1 week off a month where we""" start="00:57:04.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""coordinate infrastructure issues between this""" start="00:57:08.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and other FSF supported projects using quote""" start="00:57:13.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""unquote GNU infrastructure.""" start="00:57:14.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's kind of a, GNU is really an umbrella""" start="00:57:16.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""term once you get kind of close to it.""" start="00:57:19.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You know, it's like GNU is all of the""" start="00:57:22.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""volunteers helping with this vision we have""" start="00:57:25.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of user rights.""" start="00:57:25.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: 1 last thing I wanted to add about how much""" start="00:57:31.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time we spend on this.""" start="00:57:32.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's just the fact that we've experimented""" start="00:57:33.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""over the 4 years I've been part of this.""" start="00:57:36.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You know, the first year we had so many""" start="00:57:38.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""meetings because we thought this would be the""" start="00:57:40.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""way to know 1 another and this would be the""" start="00:57:42.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""way to create qualitative notes.""" start="00:57:44.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And we've come back to this.""" start="00:57:46.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: That is what I saw. I can't help but""" start="00:57:48.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interrupt you again. This is all I do.""" start="00:57:49.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Leo This is why I keep off the microphone""" start="00:57:52.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""until the last 20 minutes of the conference""" start="00:57:54.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""once everybody already wants to hang up Then""" start="00:57:56.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I know you'll be honest with me But I have to""" start="00:57:58.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""say when I looked at that table of data all I""" start="00:58:01.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""saw was 200 hours of Sasha's life that she""" start="00:58:05.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""spent talking to the, you know,""" start="00:58:06.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all many of us were involved.""" start="00:58:08.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's not just the 4 or 5 of us that,""" start="00:58:10.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, that have done this last 2 years""" start="00:58:13.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""convention, right? It's,""" start="00:58:14.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, there's been many people that have""" start="00:58:17.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""come in, shared wise thoughts,""" start="00:58:19.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""helping us form the, I don't know,""" start="00:58:22.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""ethos or all of the things that we're""" start="00:58:24.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""carrying forward into 2024.""" start="00:58:26.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sorry, Leo.""" start="00:58:31.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: No, no,""" start="00:58:32.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: you're fine, You're fine.""" start="00:58:33.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean, you pretty much continued with what I""" start="00:58:35.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""was going to talk about.""" start="00:58:37.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I'm looking at the time and I've already""" start="00:58:41.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""extended by 5 minutes the amount of time I""" start="00:58:44.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""was supposed to stay and Flowy is looking at""" start="00:58:46.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""me with very teary eyes because he's thinking""" start="00:58:50.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about the meeting he's going to have at 9am""" start="00:58:51.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tomorrow, as will I by the way.""" start="00:58:53.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yeah, don't you have to""" start="00:58:54.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: be commuting like right now Flowy?""" start="00:58:56.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean aren't you supposed to be...""" start="00:58:58.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I hope you get to sleep before work.""" start="00:59:01.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Thank you so much for your awesome work this""" start="00:59:04.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year.""" start="00:59:04.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: I mean, I didn't do so much at the Emojis""" start="00:59:07.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Conference, so I'm just here like from""" start="00:59:09.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Friday. At first, I was looking at the""" start="00:59:13.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""website, which talks we're having,""" start="00:59:14.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So it's all fine. So maybe next year or the""" start="00:59:17.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""coming year, I can do a little bit more""" start="00:59:19.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""privacy.""" start="00:59:19.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: A little more, like again,""" start="00:59:23.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like with Amin, Flowy's definition of doing,""" start="00:59:25.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""not having done much is hosting 1 of many of""" start="00:59:30.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the Dev talks. So you could be kind of""" start="00:59:34.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""worried about it. All right,""" start="00:59:35.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""folks, considering the question that we have""" start="00:59:38.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right now, we still see people adding""" start="00:59:40.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""questions, but I think we are all pretty""" start="00:59:42.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tired and we need to get on with the rest of""" start="00:59:44.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""our weekends or nights.""" start="00:59:46.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So do I go into parting words now everyone?""" start="00:59:49.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Are we okay with this?""" start="00:59:50.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'll take this for a yes.""" start="00:59:55.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'll ask Sasha, yeah?""" start="00:59:56.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh I think I basically have until the kiddo""" start="01:00:00.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yells at me to come for dinner so I can hang""" start="01:00:03.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""out with people after.""" start="01:00:04.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and do the wrapping up.""" start="01:00:09.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: But I""" start="01:00:09.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: All right, splendid. Go ahead know,""" start="01:00:10.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right, I'll do the wrapping up for the""" start="01:00:12.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""perhaps the stream. We might leave it up""" start="01:00:13.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""because there's no impetus for us to close""" start="01:00:16.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it. But at least to officially close while""" start="01:00:20.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we're still there, EmacsConf 2023,""" start="01:00:22.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I will have again to thank everyone,""" start="01:00:25.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all the speakers, all my co-organizers for""" start="01:00:28.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""making this possible. You've seen all the""" start="01:00:31.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""care that we put into it,""" start="01:00:32.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and we are glad every year that all this work""" start="01:00:34.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is doing something in terms of community""" start="01:00:37.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""building, in terms of leading more people to""" start="01:00:41.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""join us every year as speakers,""" start="01:00:42.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or just join us as a user of Emacs.""" start="01:00:45.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it's always a pleasure to organize the""" start="01:00:49.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference, to host it,""" start="01:00:51.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and to work with everyone in the room""" start="01:00:53.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""currently. Corwin and I are constantly joking""" start="01:00:56.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""when we are backstage making jokes.""" start="01:00:59.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think it's Corwin we said last year during""" start="01:01:03.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the closing remarks that there was no other""" start="01:01:06.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""place they'd rather be than in the backstage.""" start="01:01:09.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And for me, even though many things have""" start="01:01:12.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""changed in my life over the last year,""" start="01:01:15.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""many good things have happened,""" start="01:01:16.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's good to come back to Emacs Cons as this""" start="01:01:19.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""milestone and say, oh yeah,""" start="01:01:22.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm exactly where I want to be,""" start="01:01:23.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with the people I want to be with,""" start="01:01:25.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I see myself and I cannot wait to see""" start="01:01:29.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""myself again in the situation next year.""" start="01:01:30.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So thank you so much everyone.""" start="01:01:32.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If you want to join us,""" start="01:01:34.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""ask questions, we'll still be here for a""" start="01:01:36.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""while. Floey might drop out,""" start="01:01:37.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I might drop out, Sasha might drop out,""" start="01:01:39.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but we'll be here to answer as many questions""" start="01:01:41.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as you want for as long as we can.""" start="01:01:43.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Bye bye everyone and let's get started with""" start="01:01:46.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the after show now.""" start="01:01:46.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Bye Leo, bye Chloe! I'll drop out eventually""" start="01:01:51.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""when the kiddo yells at me.""" start="01:01:53.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I can't tell you how much fun this is,""" start="01:01:56.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yeah. The way to remember what I said,""" start="01:01:58.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Leo, it's 100% true. Oh man,""" start="01:02:00.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""turning off your lights,""" start="01:02:01.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm doing it. I'm doing it too.""" start="01:02:02.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sorry y'all. Oh, yeah,""" start="01:02:04.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""bye-bye lights""" start="01:02:05.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, that's every year that's how we finish""" start="01:02:10.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we just turn off the the big lights that we""" start="01:02:12.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have in our faces all the day especially the""" start="01:02:14.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hosts""" start="01:02:14.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: and Tell me if there's too much back chatter""" start="01:02:19.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: get off my headphones,""" start="01:02:22.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""too, so I can""" start="01:02:24.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: when I hear you in the room.""" start="01:02:25.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Can I hear you now? Yeah.""" start="01:02:28.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Is it feeding back pretty bad?""" start="01:02:31.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Hello? there is some echo.""" start="01:02:34.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, there is some echo.""" start="01:02:37.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I think Okay. Fine. I can live with my""" start="01:02:41.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""headset a little longer.""" start="01:02:42.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I give 1 ear a break at a time.""" start="01:02:44.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thanks for your sacrifice.""" start="01:02:47.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Oh, well, you know, it's a small,""" start="01:02:50.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""small, small price to pay to get to smooth""" start="01:02:53.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with y'all. Yeah, I was just looking at that""" start="01:02:56.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""chart and I was thinking about all of those""" start="01:02:58.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""meetings that we had like 18 months we were""" start="01:03:01.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just on this death march to organize this and""" start="01:03:05.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's just such an amazing accomplishment that""" start="01:03:09.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you you have here Sasha like I'm sorry to""" start="01:03:11.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""pick on you personally but the work that you""" start="01:03:14.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""put in keep being able to keep it the whole""" start="01:03:16.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""technical project in your mind,""" start="01:03:18.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all the way down to presenting it at this""" start="01:03:21.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year's conference and like kind of spoon""" start="01:03:24.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""feeding it to people that want to run off in""" start="01:03:26.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""their own damn direction and then handing""" start="01:03:27.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""them an org is the 1 that people keep bugging""" start="01:03:31.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""us about. So if you're looking for a project,""" start="01:03:33.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""here it is. Just really well done.""" start="01:03:37.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I no longer feel like we wasted a lot of time""" start="01:03:43.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there. I mean, you remember I enjoyed so much""" start="01:03:46.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all of our check ins and all of that stuff.""" start="01:03:48.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But we had so many ideas,""" start="01:03:51.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you can imagine that I wondered,""" start="01:03:53.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, I wondered if we should have had""" start="01:03:56.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more focused meetings and all that.""" start="01:03:58.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I was glad when we stopped having like""" start="01:04:01.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""weekly meetings, because you know what I mean""" start="01:04:04.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""To keep this much power in the room once a""" start="01:04:06.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""week, it feels creepy.""" start="01:04:08.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""This much intellectual power.""" start="01:04:10.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Anyway, that's it. I think that's it for me.""" start="01:04:18.525" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, and I'll say, I mean,""" start="01:04:19.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can't obviously speak for Sash or anyone""" start="01:04:22.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""else. Yeah, the regular meetings were a""" start="01:04:24.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""little bit intense than we had the year""" start="01:04:26.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""before, but I'm kind of also super glad that""" start="01:04:29.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we did do them. And, you know,""" start="01:04:31.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in a way, it did help us sort of connect and""" start="01:04:34.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""get to know each other much more regularly or""" start="01:04:38.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""much more which is great and I see thumbs up""" start="01:04:41.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""from Leo and Corwin so yeah happy we did""" start="01:04:44.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""them. Might want to have some kind of""" start="01:04:49.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually irregular ones every once in a while""" start="01:04:51.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""if we have to decide on something.""" start="01:04:53.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But if like this year,""" start="01:04:55.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything can be worked out pretty much ad""" start="01:04:57.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hoc, whenever needs be,""" start="01:04:58.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like over asynchronous communications.""" start="01:05:00.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I see Sasha nodding very excitedly.""" start="01:05:03.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""This also works. So yeah.""" start="01:05:07.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I also see some questions coming in here""" start="01:05:10.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in BBB. If other folks want to join,""" start="01:05:14.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""please feel free to do that as well.""" start="01:05:16.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yeah, I don't think we have an issue tracker""" start="01:05:18.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right now, but our whole website is a wiki.""" start="01:05:22.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So if you wanna like create a new page or""" start="01:05:24.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there might be a page,""" start="01:05:26.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know. You can of course go in and""" start="01:05:28.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""edit it to your heart's content.""" start="01:05:29.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah. Hilarious, I couldn't,""" start="01:05:36.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like I almost managed to type that as fast as""" start="01:05:39.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you could say it, you know.""" start="01:05:40.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's fine. I get the same answer in the""" start="01:05:43.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""chat. Yep. Our website's a wiki and we""" start="01:05:46.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""definitely use ideas here.""" start="01:05:48.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If you want to implement them or you know""" start="01:05:50.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""document them enough that even Corwin can""" start="01:05:53.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""code it then you know I'll do that.""" start="01:05:55.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Also I'll go through all the etherpads at""" start="01:05:58.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""some point to harvest them and I think I have""" start="01:06:00.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yeah I have an Emacs list function that does""" start="01:06:02.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this for me. So that I can go through that""" start="01:06:05.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thing and include that in our organizers""" start="01:06:06.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""notebooks, lessons learned and ideas for next""" start="01:06:09.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year.""" start="01:06:09.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah.""" start="01:06:11.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, because something that you know,""" start="01:06:15.010" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We were talking about the different models""" start="01:06:16.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""between having many, many meetings and how it""" start="01:06:18.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""paid off eventually. The thing is,""" start="01:06:20.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this year we had no meetings.""" start="01:06:22.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We met Friday morning on Mumble and we were""" start="01:06:27.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""ready to go. We did chat things up a little""" start="01:06:29.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""bit on ISE, obviously,""" start="01:06:30.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but no meeting this year.""" start="01:06:31.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I'm tempted to say that,""" start="01:06:33.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yes, we could have off-hand meetings,""" start="01:06:34.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but I think it's mostly because we want to""" start="01:06:36.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""see 1 another, not because we need""" start="01:06:38.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""necessarily for those meetings to prepare""" start="01:06:40.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs cons. But what I wanted to say as well""" start="01:06:45.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is that I think it's a testament to the bets""" start="01:06:49.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that Sasha took last year to automatize a lot""" start="01:06:52.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of things. I mean, we'd already been""" start="01:06:54.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""automatizing a lot of stuff,""" start="01:06:55.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like writing scripts for every single thing""" start="01:06:58.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in ESPire, but last year we made a big bet to""" start="01:07:02.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""say, what if we had OBS in the cloud?""" start="01:07:04.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""What if we had a streaming platform that was""" start="01:07:06.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""running on a machine? And this is what""" start="01:07:08.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""allowed us to very smoothly have 2 tracks,""" start="01:07:11.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the general track and the dev track.""" start="01:07:13.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think the beauty of this system is""" start="01:07:16.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that, obviously, because we get more and more""" start="01:07:19.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""speakers submitting talks,""" start="01:07:20.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we are starting to think maybe we actually""" start="01:07:22.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""need a third track or something and no 1 is""" start="01:07:26.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""stressed in the room when Sasha says this.""" start="01:07:28.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You know, there's not the reaction that's""" start="01:07:31.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like, oh no it's gonna be tough,""" start="01:07:32.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we're gonna need more hosts,""" start="01:07:33.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""organizers, it's just a calm...""" start="01:07:34.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Now, point of order, Now Flowy is stressed""" start="01:07:37.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""when Sasha says this.""" start="01:07:39.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: That was just a-""" start="01:07:44.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: I didn't know, Colin, we could put you in the""" start="01:07:46.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""spot next year. You'd be like,""" start="01:07:47.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, hey, Colin, what do you feel about""" start="01:07:49.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hosting?""" start="01:07:49.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: You know, I'm happy to do it.""" start="01:07:53.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I feel, I mean, just to jump in there and""" start="01:07:56.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""say, yes, exactly. No,""" start="01:07:59.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there's no concern on the part of the""" start="01:08:01.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""organizer committee that we could expand""" start="01:08:03.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this. If you said we needed to expand to 4""" start="01:08:06.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tracks, I think we would gulp and consider""" start="01:08:08.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it, you know, from there,""" start="01:08:10.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it gets a little crazy,""" start="01:08:11.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but strictly because there aren't that many""" start="01:08:13.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people that we know want to commit.""" start="01:08:16.399" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""What did we see there?""" start="01:08:18.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""80 hours of potential work that,""" start="01:08:20.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, that could go into organizing next""" start="01:08:23.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year's conference if you find that it's a""" start="01:08:25.439" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""rabbit hole for you and being a streamer""" start="01:08:26.979" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""means you want to read every email and""" start="01:08:28.979" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""respond to every, as Sasha has done this last""" start="01:08:31.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year, right? So when I look at her numbers""" start="01:08:34.439" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for total participation,""" start="01:08:35.359" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that's really a high watermark.""" start="01:08:38.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sasha really took care of this convention,""" start="01:08:43.439" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, like a producer might.""" start="01:08:46.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And the fact that what used to take 200 hours""" start="01:08:52.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""before, I mean, I can't harp enough on the""" start="01:08:56.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""story that that's telling you,""" start="01:08:57.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? And as I think about it with a project""" start="01:09:00.399" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""manager hat on, right?""" start="01:09:01.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm saying, okay, well,""" start="01:09:02.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that's, you know, that work can potentially""" start="01:09:07.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""be amplified to many thousands of hours of""" start="01:09:09.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""work, considering the automation and the""" start="01:09:11.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""potential for bringing people in.""" start="01:09:13.279" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So if you thought about it as a money-making""" start="01:09:14.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thing, If we were trying to make money by""" start="01:09:16.319" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""having these conventions,""" start="01:09:16.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you would think we have a very profitable""" start="01:09:19.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""business here because we can amplify the""" start="01:09:23.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talent that walks in the door really""" start="01:09:25.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""effectively, if that makes sense,""" start="01:09:28.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""through the tools and the training.""" start="01:09:29.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: So we should clarify that if anyone wants to""" start="01:09:33.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""volunteer as a host or just check in,""" start="01:09:35.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""let's just talk host. It's really just a""" start="01:09:38.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""matter of showing up, making sure your BVB""" start="01:09:40.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""works so you can talk.""" start="01:09:42.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If you want to share your webcam,""" start="01:09:43.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you can. You can skip it if you don't want""" start="01:09:44.899" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to. You can share the screen with the pad.""" start="01:09:46.359" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then you just sit there and you chat with""" start="01:09:48.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a speaker and you read the questions off the""" start="01:09:51.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""pad in case they don't read the questions off""" start="01:09:53.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""themselves. So it can be a very low effort,""" start="01:09:56.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""low stress way to get into it and just there""" start="01:09:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""kind of helping the speaker have somebody to""" start="01:10:02.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talk to. It doesn't have to take 80 hours.""" start="01:10:05.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It can take 2 hours and that's cool.""" start="01:10:08.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: And the same, and that's just like the""" start="01:10:10.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""transcription task. Yeah,""" start="01:10:11.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sorry, I probably missed the lead there,""" start="01:10:13.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? Every individual part of this is""" start="01:10:16.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""really easy. So it's an open-ended commitment""" start="01:10:19.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to come and kind of meet a part of the""" start="01:10:22.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""committee, a part of the community,""" start="01:10:24.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? To come in and say,""" start="01:10:27.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""maybe you're really excited about org,""" start="01:10:29.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you could review talks and just review the""" start="01:10:33.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""org ones. There's not an obligation that says""" start="01:10:35.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you're going to look at every talk that's""" start="01:10:37.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""submitted, right? Share your thoughts on the""" start="01:10:40.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talks that you have a chance to review the""" start="01:10:42.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""proposals. That's the submissions review""" start="01:10:44.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""part, right? So there's a way to help with""" start="01:10:48.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""almost any appetite for I'd like a little""" start="01:10:51.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""extra work in the Emacs department here like""" start="01:10:54.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""if you want to feel like you're part of the""" start="01:10:56.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""team this this team is really easy to get""" start="01:10:59.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: think that's""" start="01:11:02.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: involved with. I I mean,""" start="01:11:03.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""please. Go ahead,""" start="01:11:04.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: No, no, please. I've talked enough.""" start="01:11:06.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: sort of the... Leo. Well,""" start="01:11:08.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't get tired of hearing you talk,""" start="01:11:10.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but yeah, I was going to say,""" start="01:11:13.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yeah, I feel like that's the general message""" start="01:11:16.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""here is that we're all just a bunch of people""" start="01:11:19.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""who are interested in this.""" start="01:11:21.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And of course, being humans,""" start="01:11:24.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""each of us have different kinds of lives and""" start="01:11:26.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""different kinds of availabilities and""" start="01:11:27.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""different kinds of interests.""" start="01:11:28.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And there is something for everybody,""" start="01:11:29.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""both in terms of the kinds of tasks that you""" start="01:11:34.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""need doing, but also in terms of the amount""" start="01:11:37.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of time that you want or are able to put in.""" start="01:11:39.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So yes, if you do think this is something""" start="01:11:43.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that you might be interested in helping with""" start="01:11:46.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for future additions and such,""" start="01:11:47.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or even some of the post-conference work that""" start="01:11:51.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""needs doing after this year.""" start="01:11:52.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Please reach out there's something for""" start="01:11:55.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everybody and I would love to have""" start="01:11:57.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: you. I can confirm there was an easy access""" start="01:12:03.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so I came here last year just doing some""" start="01:12:06.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""checking in and the process of getting,""" start="01:12:08.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's called a trained in was really,""" start="01:12:10.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""really short. There was a lot of""" start="01:12:12.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""documentation how to do something.""" start="01:12:13.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean, there's a pad that gets sent and what""" start="01:12:17.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to do, when to do, and what to ask is like""" start="01:12:20.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""really incredible. So thank you for that.""" start="01:12:22.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Just come here, write an email,""" start="01:12:26.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""join us. It's really, really cool.""" start="01:12:28.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it's a great experience to be honest.""" start="01:12:30.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Thank you. And while Sasha is speaking about""" start="01:12:35.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the update of the wiki,""" start="01:12:36.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh Coleman did you want to say something?""" start="01:12:38.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: No I was just I was just gonna embarrass""" start="01:12:41.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Floey Coder further but you go ahead.""" start="01:12:44.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I was just gonna say I think you're pretty""" start="01:12:51.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""quick, you're pretty quick,""" start="01:12:52.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you took to it really quickly or you show""" start="01:12:55.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just kind of a reflexive calm.""" start="01:12:57.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Like you know how to not talk over people.""" start="01:12:59.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You're already better at it than I am.""" start="01:13:01.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Now, you know, I think,""" start="01:13:06.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yeah, I hope you're enjoying the new stuff""" start="01:13:09.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that you're starting to take on because you""" start="01:13:10.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""seem to be doing great with it.""" start="01:13:12.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And yeah, I hope you're not sitting there""" start="01:13:14.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thinking that you're taking,""" start="01:13:15.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, that you're coming on,""" start="01:13:17.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that you're not taking on enough""" start="01:13:19.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""responsibility or anything like that,""" start="01:13:21.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or I don't know, maybe.""" start="01:13:23.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I picked up like a little undercurrent of""" start="01:13:26.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like, I don't do that much,""" start="01:13:28.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I hope you don't feel that way because I""" start="01:13:31.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just enjoyed really having your help the last""" start="01:13:33.719" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""couple of years. Thank you very much.""" start="01:13:38.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, that's how they get you,""" start="01:13:47.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, they just tell you,""" start="01:13:48.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, could you do check-ins?""" start="01:13:49.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Like I showed up for 4 years ago saying,""" start="01:13:51.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, I'd like to help and look at me now.""" start="01:13:54.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think I did I host on the first year?""" start="01:13:56.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm pretty sure I did.""" start="01:13:57.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Like it took 2 months basically of onboarding""" start="01:14:00.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to convince me to do some of the hosting and""" start="01:14:02.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""back then oh it was so tough for us to do the""" start="01:14:06.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hosting because we didn't have all the fancy""" start="01:14:08.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""setup we have this year and we were""" start="01:14:10.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""struggling with OBS with bid rates with""" start="01:14:13.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sharing scenes I'm glad we are where we are""" start="01:14:18.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""today, where I don't have to worry as much""" start="01:14:20.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about this. But it's also nice,""" start="01:14:21.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's also 1 thing, we do have a culture of""" start="01:14:24.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""documentation as Sasha exemplified,""" start="01:14:25.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and like Flo mentioned,""" start="01:14:28.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""documentation on the roles.""" start="01:14:29.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yes, We did do this to help people join us.""" start="01:14:33.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But really, I'm the host of General,""" start="01:14:39.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but it could be just anyone else because we""" start="01:14:41.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have so much documentation on how to do""" start="01:14:43.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things. Obviously, when a co-organizer is""" start="01:14:46.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""doing a role, we tend to have an eye on how""" start="01:14:48.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the infrastructure is going.""" start="01:14:49.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But really, if you want to join us,""" start="01:14:51.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we will make sure that the jobs that you""" start="01:14:54.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have, first, you like them and it's something""" start="01:14:57.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that interests you, and we will also make""" start="01:14:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sure that on our end, everything goes well""" start="01:15:04.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for you. Like we'll be monitoring the streams""" start="01:15:06.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and every time we have a new person join us,""" start="01:15:08.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it is as much energy and mental availability""" start="01:15:13.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to invest into, oh, maybe we could do this.""" start="01:15:17.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Oh, 0, we have a fire going out because the""" start="01:15:19.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""speaker hasn't checked in yet.""" start="01:15:21.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So it's all about sharing expertise,""" start="01:15:24.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's all about making people level up in""" start="01:15:27.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""terms of skills that are really useful.""" start="01:15:28.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I will attribute a lot of my success in""" start="01:15:34.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""public speaking to the work I do with""" start="01:15:35.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""EmacsConf, and I'm sure plenty of people""" start="01:15:38.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""would gain from joining us and learning these""" start="01:15:43.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""skills. All right, It's about 30 minutes past""" start="01:15:47.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the official time. Do we want to go a little""" start="01:15:49.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""longer? Are we still available to go?""" start="01:15:51.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""All right, well, let's keep going.""" start="01:15:55.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't see any more people joining us on the""" start="01:16:00.443" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: We have Bob,""" start="01:16:00.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Blue Button. who was 1 of the speakers today""" start="01:16:01.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in the room. Bob, do you want to maybe unmute""" start="01:16:03.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yourself and ask us some questions?""" start="01:16:05.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Or just thank us. I mean,""" start="01:16:08.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm just begging for something.""" start="01:16:09.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But I know you've been very helpful.""" start="01:16:10.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: Yes. How are you? No, I've really had fun.""" start="01:16:15.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""No, I'm exhausted. I'm exhausted for you,""" start="01:16:18.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think. So I learned something.""" start="01:16:22.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Everybody wants to record their videos,""" start="01:16:25.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which of course, is great,""" start="01:16:26.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then you have the subtitles and""" start="01:16:28.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everything. But I saved a lot of time by""" start="01:16:31.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""doing it live this year and not going in and""" start="01:16:35.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tweaking and doing all the editing and""" start="01:16:38.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""spending all the time that we do.""" start="01:16:39.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it was kind of fun to do it that way too.""" start="01:16:42.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So just a little note there.""" start="01:16:44.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But I look forward to seeing 1 of my talks""" start="01:16:48.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""subtitled someday. So no,""" start="01:16:53.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I love what you do. It's fun.""" start="01:16:55.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I've only seen part of Sasha's talk,""" start="01:16:57.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so I'll go and review that about how you're""" start="01:17:00.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""automating all this. You know,""" start="01:17:03.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's a little sad for me personally that of""" start="01:17:06.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""course, Org gets all the attention,""" start="01:17:09.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but you know, we're exposing hyperbole more""" start="01:17:14.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""now and There's definitely a growing interest""" start="01:17:16.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on Reddit and you know,""" start="01:17:18.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think it's kind of like EmacsConf.""" start="01:17:20.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Give it a few years. We went away for a long""" start="01:17:23.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time and then we came back.""" start="01:17:24.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We'll start to see it permeate the Emacs""" start="01:17:30.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""first. But I was thinking that,""" start="01:17:33.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, I think people who like Emacs and""" start="01:17:36.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""stuff, they read things online,""" start="01:17:38.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they come to this conference,""" start="01:17:40.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but we're always hearing about,""" start="01:17:43.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""well, the next generation.""" start="01:17:44.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We have to deal with that.""" start="01:17:47.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think a lot of people get exposed to""" start="01:17:50.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs in college. Now a professor turns them""" start="01:17:52.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on to it and makes them use it,""" start="01:17:55.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then they go out into the real world,""" start="01:17:57.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and there's no encouragement anymore,""" start="01:17:59.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and they just drop it.""" start="01:18:01.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And with all of what you're putting together""" start="01:18:05.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""here, it seems like if there was some reach""" start="01:18:09.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""out to universities and college students,""" start="01:18:14.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You know, we might get a whole new big crowd""" start="01:18:18.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of people coming in. You know,""" start="01:18:22.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just as I think OREG has really attracted a""" start="01:18:25.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""lot of people in the sciences,""" start="01:18:26.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""since that's what it was originally developed""" start="01:18:30.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for. So just a thought,""" start="01:18:32.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, maybe if you get any volunteers who""" start="01:18:35.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""can help in the reach out or just,""" start="01:18:38.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, sending things around to""" start="01:18:40.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""universities that might really extend who""" start="01:18:43.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""gets exposed to this stuff.""" start="01:18:45.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I think that's a great and very""" start="01:18:49.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interesting idea. And it sort of touches on a""" start="01:18:51.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""couple of different things.""" start="01:18:52.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sort of like you mentioned,""" start="01:18:53.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""well, with org, it sort of really drew into""" start="01:18:56.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sciences, folks. It would be interesting to""" start="01:19:00.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""see other parts of Emacs doing that for other""" start="01:19:03.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""kinds of communities, but also specifically,""" start="01:19:05.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I guess, for colleges and universities.""" start="01:19:08.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yeah, it would be cool if we had local groups""" start="01:19:14.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or local meetups, because so far right now,""" start="01:19:17.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think the most common ones are like by city""" start="01:19:20.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like for example a Toronto Emacs meetup or""" start="01:19:22.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""something like that yeah if you could maybe""" start="01:19:25.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""encourage or help foster a university level""" start="01:19:28.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""type of thing you know University of blah""" start="01:19:32.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""blah Emacs group or something like that and""" start="01:19:35.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know seeing what their needs would be or""" start="01:19:39.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""trying to think also what features of Emacs""" start="01:19:42.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""would be very useful in an academic slash""" start="01:19:46.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""educational setting. Yeah,""" start="01:19:48.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""lots of food for thought there.""" start="01:19:50.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So thank you for mentioning this.""" start="01:19:52.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: Sure. And I guess, yeah,""" start="01:20:02.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""OBS is coming up here.""" start="01:20:04.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I worked with that a bit,""" start="01:20:06.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yes, last year. You know,""" start="01:20:08.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""another powerful piece of software with a""" start="01:20:12.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sort of, I think, a weak user interface,""" start="01:20:15.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, for the newbies coming along on it.""" start="01:20:20.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And maybe, you know, if there's,""" start="01:20:23.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""if that's kind of what people use,""" start="01:20:25.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""figuring out or putting some information in""" start="01:20:29.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the wiki about how to do that,""" start="01:20:32.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, work with it or...""" start="01:20:34.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Oh, good idea.""" start="01:20:36.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I can comment. It is definitely the""" start="01:20:43.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""preeminent streamer software out there,""" start="01:20:46.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""well beyond the free software community.""" start="01:20:49.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's used by most streamers on Twitch and""" start="01:20:54.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other like commercial for-profit things but""" start="01:20:59.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of course those companies are making money""" start="01:21:01.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""off people trying to give money to the""" start="01:21:04.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""streamers. Those streamers aren't getting any""" start="01:21:07.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""software help. So actually most of them are""" start="01:21:10.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""dependent for their income on free software""" start="01:21:13.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like OBS and OBS in specific or by some kind""" start="01:21:18.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of forked brand name is the primary tool.""" start="01:21:23.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: If I'm not mistaken I believe Stefan has""" start="01:21:28.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""joined us right now in the room.""" start="01:21:29.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm putting you on the spot,""" start="01:21:33.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""if you want to stay muted you can.""" start="01:21:34.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Oh, you have unmuted yourself.""" start="01:21:35.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: I managed to click the unmute button.""" start="01:21:38.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yes, I'm here. How are you guys doing?""" start="01:21:41.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Doing good, surviving here.""" start="01:21:43.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Congratulations.""" start="01:21:44.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Late in your time.""" start="01:21:45.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Really amazing work organizing the""" start="01:21:50.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference. I really have to congratulate""" start="01:21:51.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everyone. So I just hopped on here to sort of""" start="01:21:56.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""say that I'm extremely impressed.""" start="01:21:58.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think this is an example to follow for""" start="01:22:04.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other conferences and for Emacs in general.""" start="01:22:07.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think we need more of this community-type""" start="01:22:09.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""organizing and just getting people interested""" start="01:22:12.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and involved on all kinds of levels can only""" start="01:22:15.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""help Emacs. Because we are in this for the""" start="01:22:20.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""long haul. That's it.""" start="01:22:22.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Oh, what a great point.""" start="01:22:25.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If I can comment, that's 1 of the things that""" start="01:22:28.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""drew me to trying to contribute to free""" start="01:22:30.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""software when I was a kid,""" start="01:22:32.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like we're talking now 30 plus years ago,""" start="01:22:35.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the idea like, and I recognized it from""" start="01:22:38.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Stallman's initial manifestos on the topic,""" start="01:22:42.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? He was clearly in this for the long""" start="01:22:45.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""haul. Like I am building the library of""" start="01:22:47.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Alexandria here and like linking the work""" start="01:22:50.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that we're trying to do to community that I""" start="01:22:52.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""don't know how you could touch my heart you""" start="01:22:54.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""know more surely because that's that's""" start="01:22:57.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""exactly what we want to do not necessarily""" start="01:22:59.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""any given talk or comment but the idea that""" start="01:23:03.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we have to get together and share our ideas""" start="01:23:07.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and the place that we do that has to be just""" start="01:23:10.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""has to be a buffet and not a crucible.""" start="01:23:14.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: And look, we're standing on the shoulders of""" start="01:23:17.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""giants, really, when we're looking at Emacs""" start="01:23:19.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and sort of what we have achieved.""" start="01:23:21.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And the galaxy of talent that exists in the""" start="01:23:24.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs community is also like truly""" start="01:23:27.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""impressive, I think. So There's a lot of work""" start="01:23:30.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to be done, but we've also achieved some""" start="01:23:34.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""pretty impressive things so far.""" start="01:23:37.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So let's just keep at it.""" start="01:23:38.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm sure we'll have a fantastic future for""" start="01:23:43.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs.""" start="01:23:44.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: You know, I'm kind of interested in what""" start="01:23:52.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Stefan's here. You know,""" start="01:23:56.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just the common tropes that go around.""" start="01:24:00.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I just hear it so much on the net,""" start="01:24:05.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, is Emacs still alive?""" start="01:24:07.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Do people still use it?""" start="01:24:09.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You know, and of course,""" start="01:24:11.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's like you have an older piece of software""" start="01:24:13.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that started so long ago,""" start="01:24:15.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people don't realize that it's still up,""" start="01:24:17.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but it's also because of the trends,""" start="01:24:20.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? You know, we've got the electron-based""" start="01:24:22.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""development and Visual Studio is slick out of""" start="01:24:28.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the box. So what's in the core Emacs""" start="01:24:32.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""developers realm, obviously you guys are""" start="01:24:36.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""taking this longer term perspective,""" start="01:24:38.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which makes sense, but what do you think""" start="01:24:44.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about this issue, the shorter term and how to""" start="01:24:48.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""alleviate those concerns that some people""" start="01:24:52.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""represent?""" start="01:24:52.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Of course, yes. I mean,""" start="01:24:54.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this is something that,""" start="01:24:55.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean, clearly people are discussing and as""" start="01:24:59.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you say, It's almost like a trope at this""" start="01:25:01.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""point. And it's been discussed on EmacsDevil,""" start="01:25:04.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""what can we do to promote Emacs more and to""" start="01:25:07.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""what extent should we care about that?""" start="01:25:10.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I mean, my reply to that is usually just,""" start="01:25:15.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the rumors of my death are very accurate.""" start="01:25:19.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think this is true also for Emacs.""" start="01:25:24.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we are very much here.""" start="01:25:29.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think what has happened also is reflective""" start="01:25:31.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of basically that there are just more""" start="01:25:34.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""programmers on the planet,""" start="01:25:36.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: And we""" start="01:25:38.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: right? haven't been able to sort of catch""" start="01:25:39.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that segment as it's been growing,""" start="01:25:41.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but also we have more Emacs users I think""" start="01:25:44.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""today than probably ever before.""" start="01:25:47.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We have more packages,""" start="01:25:48.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we have more stuff going on.""" start="01:25:50.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I think it's a challenge as well,""" start="01:25:55.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like to what extent do we wanna be like a""" start="01:25:58.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""niche and to what extent do we wanna be the""" start="01:26:00.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""text editor for programmers.""" start="01:26:03.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think there's a tension there because""" start="01:26:06.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we want to stay true to what Emacs is and to""" start="01:26:09.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""its sort of core values of what makes Emacs""" start="01:26:12.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""great, but can we still make some changes to""" start="01:26:16.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sort of stay relevant.""" start="01:26:18.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think that's a huge win.""" start="01:26:21.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And clearly these discussions are going on on""" start="01:26:24.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the Emacs level and in the minds of core""" start="01:26:26.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""developers, I think, every day.""" start="01:26:29.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Even though, I mean, most of our work is just""" start="01:26:32.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""trying to keep adding new features,""" start="01:26:35.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""make sure that we have that sort of core""" start="01:26:38.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""infrastructure in place,""" start="01:26:40.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is part of the reason why I gave the""" start="01:26:42.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talk I did yesterday, to invite more people""" start="01:26:44.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to come on board. Because I see a lot of""" start="01:26:46.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people have opinions about Emacs,""" start="01:26:48.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is amazing, and we need more of that.""" start="01:26:50.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But I think, let's say,""" start="01:26:54.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""patches speak louder than words.""" start="01:26:56.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Software. And it's definitely true in Emacs""" start="01:27:01.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""development.""" start="01:27:01.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I want to just piggyback on,""" start="01:27:04.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like attack the premise of the question a""" start="01:27:06.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""little bit, right? Remember that we are sort""" start="01:27:09.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of in a trench warfare with commercial""" start="01:27:11.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interests that are dependent on dominating""" start="01:27:15.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""software ecosystems in order to exploit users""" start="01:27:20.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for money. Like that is a necessary thing to""" start="01:27:24.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a lot of people's business model.""" start="01:27:26.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And so we live in a world where software is""" start="01:27:30.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more than tools. It is clothing.""" start="01:27:32.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And so when I put on my Mac and I put on my""" start="01:27:38.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""UI skin, I'm not just choosing whether I like""" start="01:27:42.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sliders or radio buttons or check boxes or""" start="01:27:46.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the other UI mechanics that give that""" start="01:27:49.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""heuristic and make it make me think it's easy""" start="01:27:53.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to use, easy to learn to use,""" start="01:27:55.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? I'm also choosing a whole line of""" start="01:27:59.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""implementation detail that I'm being actively""" start="01:28:02.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""trained not to try to understand by,""" start="01:28:06.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, kind of the dark side of the force""" start="01:28:08.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""over here. So when I think about,""" start="01:28:11.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, make Emacs more like Toaster,""" start="01:28:14.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: you know,""" start="01:28:18.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I, 1 of my responses is every time that""" start="01:28:21.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""question asks, you know,""" start="01:28:22.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""an angel grows, gets asked,""" start="01:28:24.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""an angel grows its wings.""" start="01:28:25.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""A developer submits a patch,""" start="01:28:27.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a bug gets opened that we can,""" start="01:28:30.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, with enough information to actually""" start="01:28:31.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""do something about it,""" start="01:28:33.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the ecosystem gets better,""" start="01:28:34.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? Whether a new user comes or not,""" start="01:28:38.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like somebody's actually asking a question""" start="01:28:40.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that's going to lead them someday to pick a""" start="01:28:42.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""better tool.""" start="01:28:43.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Yeah, it's true. I mean,""" start="01:28:47.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we have powerful enemies and they are not""" start="01:28:50.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""working for us. And when they are working on""" start="01:28:52.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""improving VS code, you can't be under any""" start="01:28:54.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""illusion that they are doing that in the""" start="01:28:56.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interest of the users.""" start="01:28:57.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""They're doing that in their interest of the""" start="01:28:59.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""corporate owners. So this is the reality that""" start="01:29:02.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we have to face and Emacs is just not like""" start="01:29:04.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that. And this is of course part of the""" start="01:29:07.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""reason why it's so important that we continue""" start="01:29:09.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this work for the future of being able to do""" start="01:29:14.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""computing in a free way and in a way that is""" start="01:29:17.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually, you know, supports the types of""" start="01:29:20.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""workflows that we know and love.""" start="01:29:21.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Something that I'd like to add to this is""" start="01:29:26.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that, you know, you've mentioned we need more""" start="01:29:29.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""programmers in the world.""" start="01:29:30.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And in light of what we're doing with""" start="01:29:33.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""EmacsConf, perhaps we need more people to be""" start="01:29:35.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""at EmacsConf talking, not necessarily""" start="01:29:36.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""programmers, but just people apprehending""" start="01:29:38.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs and talking about it.""" start="01:29:40.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It feels like we've got different missions""" start="01:29:42.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that we're trying to accomplish with this.""" start="01:29:44.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We are... Okay, you...""" start="01:29:45.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Go ahead, Colin.""" start="01:29:47.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I can't leave that alone.""" start="01:29:49.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I almost came in there on the previous point.""" start="01:29:52.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yeah, I actually Completely agree with that""" start="01:29:55.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Leo. That's something that and I mean to be""" start="01:29:58.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""fair. I owe a good I owe dev al a good email""" start="01:30:02.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on this topic, but we desperately need more""" start="01:30:05.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""project managers, more solutions architect,""" start="01:30:07.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more business process analysts,""" start="01:30:10.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more systems analysts,""" start="01:30:12.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more, you know, and the best tech,""" start="01:30:15.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, some of the best threads start with""" start="01:30:17.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""quite a bit of an analytical work done on the""" start="01:30:23.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""part of an engineer who's come along.""" start="01:30:24.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But actually, Larry Wall has this quote,""" start="01:30:29.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? Where he says, consider 3 solutions""" start="01:30:31.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and build 1. And I think we struggle with""" start="01:30:34.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that as a community because getting a patch""" start="01:30:36.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is a lot of work and a lot to ask for""" start="01:30:39.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""somebody. So asking 3 people to submit a""" start="01:30:42.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""patch means you're saying no to a lot of""" start="01:30:45.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""blood, sweat and tears on the part of like 2""" start="01:30:47.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people, maybe 2 teams of people.""" start="01:30:48.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: And 1 thing I think is a big expansion is""" start="01:30:55.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""usability and user experience design.""" start="01:31:02.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think, and not in the sense like,""" start="01:31:05.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, CUA mode or,""" start="01:31:08.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, people don't realize that Emacs key""" start="01:31:12.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""bindings are actually ergonomic,""" start="01:31:13.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but more, you know, like for myself,""" start="01:31:16.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I did a lot of work in sort of bringing out""" start="01:31:20.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs features and did a lot of things""" start="01:31:24.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""creating this info doc,""" start="01:31:26.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, which is sort of like Space Max or""" start="01:31:28.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""something in the old days.""" start="01:31:30.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But the process, yeah,""" start="01:31:33.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""kept a lot of that from ever making it into""" start="01:31:38.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""CoreDMX and, you know,""" start="01:31:40.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just a lack of time on my part to follow up.""" start="01:31:44.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But if you had somebody,""" start="01:31:46.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, who sort of coalesced all the""" start="01:31:51.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""technical work on like,""" start="01:31:52.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""here's how we can put it together and make it""" start="01:31:56.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""more accessible, I've seen that go a long way""" start="01:32:01.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in certain environments.""" start="01:32:02.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I imagine, you know,""" start="01:32:06.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's just not the experience of,""" start="01:32:08.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, most people on the core team.""" start="01:32:11.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Yeah, for sure. I mean,""" start="01:32:14.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We don't have, I mean,""" start="01:32:16.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we're mostly a bunch, we're a bunch of""" start="01:32:18.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""programmers. That's what we are,""" start="01:32:20.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? We don't have graphical signers or any""" start="01:32:22.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of the stuff that you're talking about.""" start="01:32:24.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we don't have really any UX experts on""" start="01:32:28.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""board. So perhaps that would be welcome.""" start="01:32:30.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But then again, how do you even fit the EMAX""" start="01:32:35.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""paradigm into what is typically taught and""" start="01:32:38.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""discussed in UX? I mean,""" start="01:32:40.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""maybe there is a way. I'm sure there are""" start="01:32:43.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""general principles and a lot that we could""" start="01:32:45.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""learn, But then there is also like this,""" start="01:32:47.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we have to stay true to what Emacs is to some""" start="01:32:52.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""extent and what does that look like""" start="01:32:53.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""concretely. There are discussions to be had""" start="01:32:56.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for sure, but we would definitely benefit""" start="01:32:58.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""from that type of specific input.""" start="01:33:02.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Well, I""" start="01:33:04.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: mean, like a simple example today is I looked""" start="01:33:06.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""at the conference guidelines I always stay in""" start="01:33:09.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""dark mode and it said well use light mode for""" start="01:33:13.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""your presentation so okay I'll switch to""" start="01:33:16.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""light mode let me load a theme so I go into""" start="01:33:19.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""all the default themes and,""" start="01:33:21.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, start going through the light ones""" start="01:33:23.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then I check all the faces and,""" start="01:33:28.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, there are at least 3 to 5 faces""" start="01:33:31.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that have nearly invisible text as a result""" start="01:33:35.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of the background highlighting on them.""" start="01:33:38.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I'm like, you know,""" start="01:33:40.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so there's low hanging fruit like that where""" start="01:33:43.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people would deal with the structure of the""" start="01:33:46.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""menus, the actual faces,""" start="01:33:49.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the themes, that don't have to do anything""" start="01:33:53.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""affecting core Emacs except make the""" start="01:33:57.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""presentation much better.""" start="01:33:59.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Yeah, definitely. If people want to send such""" start="01:34:03.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""polishing patches for various aspects,""" start="01:34:06.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I spent some time making a new help screen.""" start="01:34:09.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know if you noticed,""" start="01:34:10.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know how many people press Control H,""" start="01:34:12.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Control H on their keyboards,""" start="01:34:14.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But it's like with new sections and it's""" start="01:34:17.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sorted a little bit better.""" start="01:34:18.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It didn't take much. I mean,""" start="01:34:20.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it took a time obviously,""" start="01:34:21.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but it's not like it required some fantastic""" start="01:34:23.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""technical knowledge or deep expertise in""" start="01:34:28.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs Lisp to do that.""" start="01:34:29.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's Basically anyone can do stuff like that.""" start="01:34:31.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So definitely if you're interested in doing""" start="01:34:34.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that type of work, start discussing with us.""" start="01:34:37.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Let's talk about what we can do and get doing""" start="01:34:41.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it, really.""" start="01:34:41.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, this is exactly in line with your""" start="01:34:44.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""presentation from yesterday,""" start="01:34:45.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Stefan, as well, because you were just""" start="01:34:47.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""inviting people who are not contributing to""" start="01:34:50.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the core of Emacs to do so.""" start="01:34:51.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You were talking to package developer on""" start="01:34:53.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""MailPub, but you were also talking just about""" start="01:34:55.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the average Joe or Jane just doing their own""" start="01:34:58.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things or encountering a problem.""" start="01:34:59.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Now, yes, we talked about,""" start="01:35:01.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, you need to build master and all this,""" start="01:35:02.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but at the end of the day,""" start="01:35:03.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""low-hanging fruits like the ones Bob just""" start="01:35:06.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""described. If everyone does this at the end,""" start="01:35:09.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you end up with something that is extremely""" start="01:35:11.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""polished. Perhaps you do not need to have a""" start="01:35:13.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""UX specialist to tell you that,""" start="01:35:14.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""oh, those 2 colors are actually very close to""" start="01:35:18.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""1 another. I think it's kind of a discussion""" start="01:35:21.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about same defaults as well that you had""" start="01:35:23.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yesterday. Ultimately,""" start="01:35:25.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we do not need... Yes,""" start="01:35:27.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we need more programmers in the world.""" start="01:35:28.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We want more people to use Emacs.""" start="01:35:30.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But you don't know. Like,""" start="01:35:33.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is it going to be someone in computer science""" start="01:35:36.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that's going to be the next giant on whose""" start="01:35:38.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""shoulders we're going to stand?""" start="01:35:39.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: computer science? Is it going to be someone""" start="01:35:41.003" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in computer science that's going to be the""" start="01:35:41.066" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""next giant""" start="01:35:41.082" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: on whose shoulders we're going to stand?""" start="01:35:41.137" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Is it someone who did not""" start="01:35:41.184" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Is it someone who did not study study""" start="01:35:41.192" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""computer science? Is it going to be someone""" start="01:35:42.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""who did something completely different?""" start="01:35:44.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We do not know the prototypical user of""" start="01:35:46.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs. We have some idea about the fact that""" start="01:35:49.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""they might be using you know,""" start="01:35:51.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs for their programming,""" start="01:35:52.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but more and more, and as is evidenced by the""" start="01:35:55.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""talks we received with EmacsConf,""" start="01:35:56.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's just people doing writing or taking""" start="01:36:01.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""notes for their classes.""" start="01:36:01.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So it's really interesting to see how and to""" start="01:36:06.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""explore for us how we can give back to the""" start="01:36:09.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""core of Emacs in a way that is mutually""" start="01:36:11.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""constructive because again,""" start="01:36:12.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to go back to the philosophy or the political""" start="01:36:14.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""agenda that we have is for more people to use""" start="01:36:17.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""software that is not the liberties.""" start="01:36:19.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Exactly.""" start="01:36:20.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: So right. Yeah. I mean,""" start="01:36:24.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that's a good spot for me to come right back""" start="01:36:25.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in. And that's exactly where I do.""" start="01:36:27.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Right. Because that's that's what it's all""" start="01:36:30.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about. In the In terms of a tool user,""" start="01:36:33.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, the evolution of using tools as,""" start="01:36:36.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, these creatures have fought,""" start="01:36:38.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs is fire. Emacs is the ability to learn""" start="01:36:42.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""languages, the ability to manipulate other""" start="01:36:45.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tools. I mean, it's almost like,""" start="01:36:48.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, God Emperor of Dune level,""" start="01:36:50.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, some Frank Herbert type of powers""" start="01:36:53.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that you have over your computer and you are""" start="01:36:56.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""not required to understand how all those""" start="01:36:58.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things work. So from a support standpoint""" start="01:37:02.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that puts us in a challenging position,""" start="01:37:04.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? I spend a lot of time on Pound Emacs""" start="01:37:06.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and the questions that go by there,""" start="01:37:07.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I feel bad for people that feel like they""" start="01:37:09.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have to answer every question that goes by in""" start="01:37:12.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the channel because no 1 could.""" start="01:37:14.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""No 1 can give an intelligent answer to the,""" start="01:37:16.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, everything from,""" start="01:37:18.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Hey, how do I change my default font on this""" start="01:37:21.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""operating system? You've never heard of to,""" start="01:37:23.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, how do you know this list code?""" start="01:37:26.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's 40 lines long doesn't work.""" start="01:37:28.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I think it was a recent change that was""" start="01:37:30.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""made to the P case macro.""" start="01:37:31.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Do you agree? Right? And as deep as that,""" start="01:37:39.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""well is, if you turn it 90 degrees,""" start="01:37:42.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the Emacs is that kind of tool to the""" start="01:37:45.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""operating system level.""" start="01:37:46.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's letting me walk across to other systems,""" start="01:37:48.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""multi-hop, become the super user,""" start="01:37:51.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? And, you know, the just the power,""" start="01:37:55.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the amplification of power there,""" start="01:37:57.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's like the lever combined with the magnet,""" start="01:38:02.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""etc, etc. I mean, just,""" start="01:38:08.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yeah, I don't know. So I guess where we kind""" start="01:38:14.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of jump off, where that gets stuck,""" start="01:38:16.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right, is trying to change something like the""" start="01:38:18.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""defaults in the user experience.""" start="01:38:19.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I imagine, you know,""" start="01:38:22.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we don't get 1 great idea about user""" start="01:38:26.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""experience, we'll get 3,""" start="01:38:28.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? And then Once again,""" start="01:38:30.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we have to send our brave developers off to""" start="01:38:32.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""build 1 to 3 patches, some of which won't see""" start="01:38:36.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the light of day. I think that's where the""" start="01:38:41.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""breakthrough is needed.""" start="01:38:41.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Another evolution in the packaging thought,""" start="01:38:46.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or maybe it's not packaging.""" start="01:38:48.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Maybe it's the compilation step.""" start="01:38:50.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Maybe it's the distribution step.""" start="01:38:52.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Maybe we want the Debians of the world to""" start="01:38:56.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""deliver Emacs as 2 different pieces now.""" start="01:38:59.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And there's a UX piece that we want you to""" start="01:39:03.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""package each 1 that you package,""" start="01:39:05.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""each 1 per window manager that you support or""" start="01:39:09.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""at the intersection of each window manager""" start="01:39:11.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and display manager you port.""" start="01:39:12.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And the other one's just the server and you""" start="01:39:15.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""don't even have to package that if I'm only""" start="01:39:17.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""offering the CLI or there's a you know like""" start="01:39:19.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm making all this up and I can't code a""" start="01:39:21.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""single thing like what I just said,""" start="01:39:23.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but I think that there's a technical""" start="01:39:26.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""opportunity. Pretty high level for technical""" start="01:39:31.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there of just thinking about a way to accept""" start="01:39:35.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""contributions of experience with maybe a""" start="01:39:40.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""little less rigor and a little less ground""" start="01:39:43.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""into the marble.""" start="01:39:44.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: Yeah it makes me think of somebody at work""" start="01:39:50.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just brought up pair programming and he's in""" start="01:39:54.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""love with it. He wants to pair up and do it,""" start="01:39:58.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which is not true of all programmers.""" start="01:40:01.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But I said, okay, so you spearhead that.""" start="01:40:05.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If we, I think it is a very high barrier to""" start="01:40:10.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""get your patches in because of course they""" start="01:40:13.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""need to meet the quality standard of Emacs.""" start="01:40:15.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So if people who are doing day-to-day""" start="01:40:20.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""understand that process and can do it well,""" start="01:40:24.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""could work with some of the people who can't""" start="01:40:28.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""quite contribute at that level,""" start="01:40:30.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but have ideas that are on the level that""" start="01:40:35.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""should go in, pairing them up could really""" start="01:40:39.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""move a lot of that forward.""" start="01:40:41.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Like Lars, I don't know what his,""" start="01:40:46.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I get the feeling maybe he's retired.""" start="01:40:50.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So, you know, maybe he has some time,""" start="01:40:54.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, and he's really good at going back""" start="01:40:58.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in and saying, you know,""" start="01:41:00.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""these areas haven't gotten attention in a""" start="01:41:02.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""while, so I'm going to go kill some bugs and""" start="01:41:05.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""look at them and fix them up.""" start="01:41:08.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I would think he would be good to do that""" start="01:41:13.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with someone. But you know,""" start="01:41:15.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Again, I've got years of code that would just""" start="01:41:22.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""require somebody to work through it to update""" start="01:41:25.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to the latest code base and diff against it.""" start="01:41:28.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But it does things like,""" start="01:41:30.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean, like if anybody used RMAIL anymore,""" start="01:41:32.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I made the summary mode of RMAIL exactly""" start="01:41:36.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""compatible key-wise with the main buffer,""" start="01:41:40.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""which it never was, and fixed a number of""" start="01:41:43.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other features. Dured made operations""" start="01:41:46.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""reversible, where you mark something and you""" start="01:41:49.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""unmark it, and you can go up and down.""" start="01:41:51.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And there are all these little""" start="01:41:53.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""incompatibilities that kind of add up across""" start="01:41:56.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time, and they never seem to get addressed.""" start="01:42:00.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We could just fix them and people would start""" start="01:42:06.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to say, oh, this is smoother and they are""" start="01:42:09.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""getting more of that experience because it""" start="01:42:12.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""feels like the systems maybe 80,""" start="01:42:15.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""85% of the way there in a lot of thoughtful""" start="01:42:20.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""design. But that last 15% could be the""" start="01:42:26.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""difference between an iPhone and an Android""" start="01:42:29.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""phone of usability-wise.""" start="01:42:32.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So that's a thought. That's a""" start="01:42:38.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: brilliant idea, and it probably can be""" start="01:42:41.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""applied far wider than emacs.""" start="01:42:42.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's something that that FSF should""" start="01:42:46.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""consider suggesting across,""" start="01:42:48.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, GNU packages,""" start="01:42:49.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for example, like a matchmaking project seems""" start="01:42:54.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like something that FSF community teams""" start="01:42:56.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""should think about. Yeah,""" start="01:43:04.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I was going""" start="01:43:04.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's so... to say also,""" start="01:43:04.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I noticed that the name Debian came up a""" start="01:43:08.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""while ago and now we were talking about""" start="01:43:09.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""programming and such and Mentoring maybe and""" start="01:43:14.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Debian has this service or part of their site""" start="01:43:17.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or community called Mentors.""" start="01:43:19.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""They have a website, mentors.debian.net,""" start="01:43:22.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""where the idea is that people who want to get""" start="01:43:26.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""into contributing to Debian,""" start="01:43:28.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for example, to package things,""" start="01:43:29.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but obviously don't have upload rights right""" start="01:43:33.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""away. This is where they can go to,""" start="01:43:35.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and this is separate from their mailing list""" start="01:43:38.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or bug trackers. They can basically build""" start="01:43:42.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""their changed packages and upload them here,""" start="01:43:44.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and then Debian developers who have commit or""" start="01:43:48.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""upload rights to the Debian archive can go""" start="01:43:51.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and review and give them feedback or ask them""" start="01:43:55.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to change something or if it's good,""" start="01:43:57.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""then just easily upload the package right""" start="01:44:01.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""from there. And I wonder if it might make""" start="01:44:04.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sense to have something kind of like that in""" start="01:44:07.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like the context of Emacs or the GNU project""" start="01:44:10.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as a whole, where we have like some kind of""" start="01:44:13.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""a, like loosely defined mentoring thing,""" start="01:44:15.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""where we could pair up people who are more""" start="01:44:18.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""experienced, who, for example,""" start="01:44:20.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""have commit rights in the Emacs core""" start="01:44:22.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""repository to match them up with someone who""" start="01:44:27.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is just making your very first patches or""" start="01:44:29.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""contributions to Emacs or whatever other GNU""" start="01:44:31.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""package. Just some food for thought,""" start="01:44:34.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: Yeah, sounds good.""" start="01:44:38.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: I guess. Yeah, and then I guess 1 feature of""" start="01:44:44.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""such a system which would be nice is that it,""" start="01:44:47.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""at least in terms of, you know,""" start="01:44:49.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the mentors that Debbie and that,""" start="01:44:50.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that it has a web UI, which,""" start="01:44:52.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""is nice because mailing lists might be""" start="01:44:56.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""intimidating for someone who is just getting""" start="01:44:58.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""started, like in these communities.""" start="01:44:59.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Or, you know, just making patches like that,""" start="01:45:03.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or just have a series of concrete""" start="01:45:05.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""instructions. Like with mentors at""" start="01:45:08.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Devian.net, I feel like you can't go wrong in""" start="01:45:11.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""terms of finding the steps of figuring out""" start="01:45:13.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""what you need to do to put together some""" start="01:45:16.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""change. Which I think the same idea could""" start="01:45:19.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""apply to Emacs, for example,""" start="01:45:20.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""as well.""" start="01:45:20.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: I think this is a good point about lowering""" start="01:45:24.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""barriers, and how email is a barrier to""" start="01:45:27.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people. I mean, so on the 1 hand,""" start="01:45:28.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you have us guys on Emacs level,""" start="01:45:31.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we're very used to the email workflow.""" start="01:45:32.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Like we're not just using it for fun.""" start="01:45:35.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You know what I mean? Like this is a""" start="01:45:37.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""workhorse. It really is.""" start="01:45:38.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it's tried, it's battled,""" start="01:45:41.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""tested. It has some quirks,""" start="01:45:42.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but we know them extremely well on the other""" start="01:45:45.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hand. So, but still we want more people""" start="01:45:48.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""involved, right? And we realized that,""" start="01:45:50.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, times are changing as well.""" start="01:45:52.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And people are more used to doing stuff from""" start="01:45:54.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the web browser, perhaps.""" start="01:45:55.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we do want to move to a forge,""" start="01:46:00.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""or at least start looking into that.""" start="01:46:01.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But there are some obstacles.""" start="01:46:03.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we are looking for volunteers to do that""" start="01:46:06.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""work. I'm not just saying it,""" start="01:46:07.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like we are very serious.""" start="01:46:08.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm very seriously asking people in the""" start="01:46:11.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""community to consider,""" start="01:46:12.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hey, could you dedicate some time?""" start="01:46:14.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean, it will take some dedication for sure""" start="01:46:18.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it will take some time and it will take some""" start="01:46:20.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""describe probably even you know Be prepared""" start="01:46:23.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to be frustrated at times right,""" start="01:46:24.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but if you're serious about doing that type""" start="01:46:26.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of work, okay now""" start="01:46:28.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I believe you Well, I'm just I'm just teasing""" start="01:46:32.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but but but yes exactly any I mean it's it's""" start="01:46:35.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""not even a joke right Any serious undertaking""" start="01:46:38.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""having to do with any free software project,""" start="01:46:41.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just because we are open to the entire world""" start="01:46:45.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and we pride ourselves on trying to take""" start="01:46:47.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""seriously all input. And if it's a logical""" start="01:46:50.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""argument, then we'll go ahead and take the""" start="01:46:51.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""time to combat with you,""" start="01:46:53.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""even though the maintainer has 300 other""" start="01:46:54.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things to do. Like, man,""" start="01:46:57.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this""" start="01:46:58.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: is just the way it is,""" start="01:47:00.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right? It just, It's not like Emacs is way""" start="01:47:02.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""harder to change than any other project of""" start="01:47:06.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""its longevity and size.""" start="01:47:08.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's just these things take time.""" start="01:47:10.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Try getting a change into Debian.""" start="01:47:13.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's an uphill battle.""" start="01:47:15.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't even know where to start with that.""" start="01:47:16.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""That's huge, right? And I have tremendous""" start="01:47:19.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""respect for the people doing that type of""" start="01:47:21.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""work because it takes dedication,""" start="01:47:22.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it takes effort. So we really need someone to""" start="01:47:26.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""step up from the community,""" start="01:47:27.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I think, to be a champion for something like""" start="01:47:29.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this and work together with us on Emacs Devil""" start="01:47:33.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and off Emacs Devil, probably with me and Eli""" start="01:47:37.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and perhaps some other people that could be""" start="01:47:40.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in the mail thread, and we could coordinate""" start="01:47:41.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this type of work. I would be super excited""" start="01:47:44.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""if someone wanted to get the ball rolling.""" start="01:47:46.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can't do everything.""" start="01:47:48.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I wish I could. Like, I thought about it.""" start="01:47:51.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Should I just put everything to the side and""" start="01:47:52.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""do this? But then, I mean,""" start="01:47:53.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there are some, there are other""" start="01:47:54.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""responsibilities as well.""" start="01:47:56.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So we need someone to step up.""" start="01:47:57.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We need help here.""" start="01:47:58.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: you're gonna speak. I was totally gonna pick""" start="01:48:03.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""on you. Go ahead.""" start="01:48:04.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so. Oh, good, Thanks,""" start="01:48:05.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yeah, I was just gonna say,""" start="01:48:06.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yeah, I echo Stefan's sentiments.""" start="01:48:08.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And that, yeah, in terms of like maybe""" start="01:48:11.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""experimenting with a different Forge or a""" start="01:48:14.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""better Forge and like,""" start="01:48:15.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, supplementing Savannah.""" start="01:48:16.124" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And supplementing Savannah.""" start="01:48:16.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I actually did some initial work a couple of""" start="01:48:20.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""months ago to get a SourceFed instance""" start="01:48:23.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""installed for the new project.""" start="01:48:24.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I've done some work on and off,""" start="01:48:28.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but then life happens,""" start="01:48:29.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""especially from September onwards.""" start="01:48:32.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But even from earlier in the year,""" start="01:48:35.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the project has been semi-dormant,""" start="01:48:36.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but I have been meaning to get to that.""" start="01:48:38.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I'm like 1 such person who's interested in""" start="01:48:42.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that type of work and driving it forward and""" start="01:48:44.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I would love you know if anyone's and anyone""" start="01:48:47.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""else has the kind of time and energy and the""" start="01:48:50.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interest to help with something like that.""" start="01:48:52.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Yes, please reach out to all of us,""" start="01:48:55.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""to Emacs core developers,""" start="01:48:56.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of course, and to myself.""" start="01:48:58.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""This is something that could be very useful,""" start="01:49:01.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""not just for GNU Emacs and Emacs developers,""" start="01:49:04.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but also for any other GNU package as well.""" start="01:49:09.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So yeah, that's 1 area of potential""" start="01:49:13.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""contribution and 1 thing that we sort of,""" start="01:49:15.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I guess, regularly meet with the FSF""" start="01:49:17.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""sysadmins to discuss these kinds of projects""" start="01:49:20.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and things as Corwin would know.""" start="01:49:22.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, that's kind of, I mean,""" start="01:49:24.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you knew exactly where I was going to,""" start="01:49:26.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and I'm glad that you volunteered yourself""" start="01:49:27.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""personally because that's the best choice.""" start="01:49:30.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""If you're hearing this and you're thinking,""" start="01:49:32.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, maybe I should do some sysop stuff,""" start="01:49:35.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""literally reach out to Amin.""" start="01:49:38.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And because it's complicated,""" start="01:49:41.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there are a lot of projects to volunteer for.""" start="01:49:43.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""They're all very worthy.""" start="01:49:44.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And it's sort of political to figure out what""" start="01:49:48.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we're gonna try to change for whom first to""" start="01:49:52.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""demonstrate we can do all the things we wanna""" start="01:49:55.940" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""do to make it better without losing all the""" start="01:49:58.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things that are important about how it is""" start="01:50:00.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""today. And we'll do it in a measured way like""" start="01:50:04.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everybody's just like room full of rocking""" start="01:50:06.500" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""chairs everybody's got a long tail it's a""" start="01:50:09.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hard project but you will do something that""" start="01:50:12.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just a lot like as a Savannah hacker which I""" start="01:50:15.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""am with Amin So that's how I know about his""" start="01:50:17.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""work on that project. We worked together on""" start="01:50:20.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the Savannah Forge. I'm aware of his work""" start="01:50:22.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""piloting SourceHut recently and just with a""" start="01:50:26.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""working group there to look at the next""" start="01:50:29.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""generation of forges for GNU.""" start="01:50:30.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs of course as a GNU package could go do""" start="01:50:34.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""its own thing. FFS would most likely give""" start="01:50:36.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""cash to go do its own thing,""" start="01:50:38.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""even if it didn't like it.""" start="01:50:39.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We know, you know, as a,""" start="01:50:41.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like if I put on, I'm not FSF,""" start="01:50:42.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but if I put on that hat,""" start="01:50:44.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I imagine that we must know.""" start="01:50:45.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs is a flagship thing that people in the""" start="01:50:50.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""real world depend on. If I get this ancient""" start="01:50:52.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""computer, I get a working Linux distribution""" start="01:50:55.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and Emacs. Maybe it's not Microsoft Word as a""" start="01:50:59.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""word processor, but you guys,""" start="01:51:00.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you can learn a language on it for sure,""" start="01:51:03.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know And you can do your homework on it""" start="01:51:05.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and you know It's it makes your you can edit""" start="01:51:08.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""things and then you can edit your system""" start="01:51:10.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""files and teach yourself how to manage a GNU""" start="01:51:13.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""system and you can You know so Emacs is""" start="01:51:17.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""really powerful as a practical tool.""" start="01:51:19.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Like I keep coming back to that point when I""" start="01:51:21.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""think about Emacs, like I really put it as""" start="01:51:25.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like, it's an important tool on the like""" start="01:51:27.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""humans inventing tools level just because it""" start="01:51:31.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""lets me make this editor into whatever I need""" start="01:51:35.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it to be to get my actual work done.""" start="01:51:37.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Whether that's getting the length,""" start="01:51:39.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""maybe that's making the font big enough that""" start="01:51:41.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can see it, or making it easy enough to""" start="01:51:43.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""change from this font to that font,""" start="01:51:44.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""changing the background colors,""" start="01:51:45.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like your basic vision,""" start="01:51:47.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""accessibility issues, right?""" start="01:51:49.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""All, you know, solved,""" start="01:51:52.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can bake that customization in and I can""" start="01:51:55.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""pretty much depend on,""" start="01:51:56.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""no matter what we change in Emacs,""" start="01:51:57.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm gonna accept the new version,""" start="01:51:59.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""it's gonna be on the next computer I get,""" start="01:52:01.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm going to install the package and my""" start="01:52:03.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""configuration that sets all that up will be""" start="01:52:05.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""there for me. Right? It's like back to""" start="01:52:10.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Stefan's point, what, 6 and a half hours ago,""" start="01:52:13.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean, you know, 20 minutes ago about""" start="01:52:16.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""just... Oh gosh, I lost it.""" start="01:52:23.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Boy, I really thought I had handed that""" start="01:52:27.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""neatly back to you.""" start="01:52:29.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: No problem, Yeah, I think we're in general in""" start="01:52:36.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""agreement.""" start="01:52:36.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: If we are now in the realm of Concord,""" start="01:52:41.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""of harmony, and the realm of midnight in""" start="01:52:44.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Europe, Should we bring this discussion to a""" start="01:52:47.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""close or we could go all night,""" start="01:52:49.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""but I'll need to explain to my employer why""" start="01:52:51.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""my eyes are barely open tomorrow.""" start="01:52:52.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I think that's probably a good idea.""" start="01:52:56.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I see some folks starting to slowly sign off.""" start="01:52:59.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, also, you know, Leo,""" start="01:53:02.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you could leave and just miss out.""" start="01:53:04.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""What?""" start="01:53:05.460" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Hey, Sasha, can I say something like what an""" start="01:53:13.620" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""amazing job with everything you're doing in""" start="01:53:15.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the community over the years?""" start="01:53:16.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm so impressed with Emacs News.""" start="01:53:18.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""What a great resource to stay up to date in""" start="01:53:22.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Emacs. Just really hats off to you for a""" start="01:53:24.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""whole lot.""" start="01:53:25.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Thank you""" start="01:53:26.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: very much. It actually turned out to be quite""" start="01:53:29.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""timely that John Wheatley had suggested it""" start="01:53:31.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""back when he was maintainer because when I""" start="01:53:35.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""had the kiddo, I suddenly had 0 time to""" start="01:53:36.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""actually write new things.""" start="01:53:38.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But reading things is fine.""" start="01:53:39.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I can just speed read all the Reddit things""" start="01:53:41.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and put the links together.""" start="01:53:43.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So I'm very glad that Emacs news is helpful.""" start="01:53:45.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: it really is, yeah.""" start="01:53:49.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: It is, So, okay, now let's try to go for our""" start="01:53:55.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""closing thoughts here while Leo's still here.""" start="01:54:00.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And then if we wanna keep rolling,""" start="01:54:01.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""even after Leo drops, we won't tell him,""" start="01:54:04.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we'll tell him we're stuck.""" start="01:54:06.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: I guess that was a beacon to me to perhaps go""" start="01:54:12.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""for the second close of the day I've already""" start="01:54:14.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""done it I can do it again But I will prove""" start="01:54:18.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Sasha wrong this time.""" start="01:54:19.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I will miss out if need be because really,""" start="01:54:21.020" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I have been very impressed with the sleep""" start="01:54:24.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""record that you had and I am very envious""" start="01:54:28.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""right now of your past ability to sleep more""" start="01:54:32.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""than 9 hours per night.""" start="01:54:33.160" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""And I wish I would be able to go back to""" start="01:54:35.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""this. But anyway, folks,""" start="01:54:37.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm going to drop out.""" start="01:54:38.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""People might hang out for a little while""" start="01:54:40.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""longer. Bear in mind that Sasha might get""" start="01:54:42.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""called at any point to go take care of Kido.""" start="01:54:44.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""So this might wrap up very fast afterwards.""" start="01:54:47.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""But at any rate, it was my pleasure to be the""" start="01:54:49.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""host today. Stefan, thank you for joining.""" start="01:54:51.420" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Bob, thank you for joining and interacting""" start="01:54:53.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""with us and making this a little more""" start="01:54:56.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""interactive and more plural than just the""" start="01:54:58.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""co-organizers. And on that note,""" start="01:55:01.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I will be leaving. So have a wonderful night,""" start="01:55:03.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everyone. And we'll see you next year for the""" start="01:55:05.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""next edition, potentially.""" start="01:55:06.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Thank you, Leo. You're my hero.""" start="01:55:09.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I take everything I said on mumble back.""" start="01:55:11.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""You're amazing.""" start="01:55:12.280" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: bye everyone.""" start="01:55:14.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right, Thank you all.""" start="01:55:16.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Take care. Bye. I will""" start="01:55:17.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: also say bye bye. I also need to go to bed.""" start="01:55:20.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Thank you all for this cool conference and""" start="01:55:22.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hopefully we're here through the year and at""" start="01:55:24.920" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""least in 1 year.""" start="01:55:25.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: You've probably made the rest of the rest of""" start="01:55:30.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the victorious. You really stepped up.""" start="01:55:34.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: your contributions.""" start="01:55:38.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Thanks so much for Yeah,""" start="01:55:38.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: thanks so much for being a part of it,""" start="01:55:40.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""specifically you, Floey,""" start="01:55:41.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and just everyone. Thank you all.""" start="01:55:43.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 6]: Have a nice day or night and we'll hear each""" start="01:55:48.180" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""other. Bye!""" start="01:55:48.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 1]: See you. Okay, well,""" start="01:55:51.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Thanks, Zen. I'll go next.""" start="01:55:51.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm the next newest, I think.""" start="01:55:53.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Well, I want to say also,""" start="01:55:59.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you know, Bob and Stefan,""" start="01:56:01.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""thank you so much for jumping in and""" start="01:56:03.660" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""participating in the closing remarks.""" start="01:56:04.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I too think it's a lot of,""" start="01:56:06.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like, it's fun to just,""" start="01:56:08.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like, share the buzz after the convention.""" start="01:56:10.760" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We've got all these millions of ideas and""" start="01:56:13.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""then to have a group, a little group think""" start="01:56:16.120" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about what we're walking away from that with.""" start="01:56:18.960" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""What is the temperature of the fire in your""" start="01:56:22.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""belly? And it's just...""" start="01:56:24.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I mean, this is 1 of the highlights of my""" start="01:56:28.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""year in a way that it's just...""" start="01:56:30.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't think other people...""" start="01:56:31.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't think I dare explain it to other""" start="01:56:33.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""people. I think my wife understands and I""" start="01:56:35.880" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""will do. So thank you very much for this""" start="01:56:40.600" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference and the opportunity to participate""" start="01:56:42.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""in it. You know, just the conversation,""" start="01:56:45.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""how vibrant the chat is on IRC,""" start="01:56:48.540" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""how the variety of talks,""" start="01:56:52.080" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""some of the talks that look like television""" start="01:56:54.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""content to me and others that look a lot like""" start="01:56:59.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""my talk. And working through your slides and""" start="01:57:03.840" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""doing it live and you know I appreciate that""" start="01:57:06.100" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""we make a place for all those levels and and""" start="01:57:10.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""show people how to improve our craft as well.""" start="01:57:12.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm not actually dropping or going anywhere.""" start="01:57:26.140" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'll continue to talk about eMAX until I get""" start="01:57:29.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""the dinner time bell. I've probably got an""" start="01:57:30.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hour here. I'll tell you what will happen""" start="01:57:40.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""though is I'm guaranteed to light a""" start="01:57:42.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""cigarette. You can already see me kind of""" start="01:57:43.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""hovering about my room because I'm trying to""" start="01:57:45.860" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""avoid like smoking on camera.""" start="01:57:47.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know where that came from.""" start="01:57:49.300" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm giving it up in approximately 5 seconds.""" start="01:57:52.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Yeah I'm gonna hop off.""" start="01:57:58.980" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It's possibly right here.""" start="01:58:00.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'll work tomorrow.""" start="01:58:02.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I took the next 2 days off.""" start="01:58:06.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I'm actually going camping,""" start="01:58:07.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Stefan. I know I've learned that this""" start="01:58:11.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""conference leaves me completely emotionally""" start="01:58:12.800" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""exhausted. I just like,""" start="01:58:16.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I don't know, I watch all,""" start="01:58:18.700" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I feel like I just connect with all the,""" start="01:58:20.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""like it's this time where I connect with all""" start="01:58:23.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""these people that spend as much time thinking""" start="01:58:25.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""about Emacs as I do.""" start="01:58:26.580" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right, so maybe we should wrap up before""" start="01:58:31.480" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you have like, you know,""" start="01:58:32.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that overflow error and just...""" start="01:58:35.380" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: In buster thrill, okay.""" start="01:58:38.000" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Thank you""" start="01:58:41.720" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 0]: so much, everyone. Let us actually wrap up""" start="01:58:45.200" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""then. Everyone can find the recordings if you""" start="01:58:47.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""want to keep the conversation going.""" start="01:58:48.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""There are meetups, there are people's blog""" start="01:58:51.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""posts and video channels and mailing lists""" start="01:58:54.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""and all those other things.""" start="01:58:55.320" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I often I list a lot of meetups in Emacs news""" start="01:58:58.820" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""so that's another great way to stay connected""" start="01:59:00.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""through the year and we hope to see everybody""" start="01:59:02.560" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""next year at EmacsConf 2024.""" start="01:59:04.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Thanks Sasha for the send off and goodbye to""" start="01:59:11.260" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""everyone. Oh Sasha I think you were muted but""" start="01:59:16.740" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""yes I was still there I assume that's what""" start="01:59:18.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""you just said. I lied.""" start="01:59:21.220" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I was staying around like Corwin was.""" start="01:59:23.680" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I just said goodbye, but then I wait in the""" start="01:59:25.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""bushes, waiting for the ambush.""" start="01:59:26.520" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: Well I'm personally surprised,""" start="01:59:29.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""speaking for myself. I wouldn't have guessed""" start="01:59:32.780" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""that would happen. All right,""" start="01:59:36.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: The perfect moment. well,""" start="01:59:36.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""I guess that's a wrap then.""" start="01:59:37.360" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Thank you, everyone, and see you next year.""" start="01:59:39.060" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: I thought we were clear like 10 minutes ago.""" start="01:59:43.440" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""Are we not? We are, right?""" start="01:59:45.340" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""We're definitely clear.""" start="01:59:47.400" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 5]: OK, I'm""" start="01:59:48.040" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 3]: hanging up now. Good night.""" start="01:59:49.240" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""It was wonderful to meet you.""" start="01:59:50.640" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 7]: Take care Corwin""" start="01:59:51.900" video="qanda-emacsconf" id="subtitle"]]
+[[!template text="""[Speaker 4]: Bye Stefan. Bye. Bye all""" start="01:59:56.520" video="qanda-emacsconf" id="subtitle"]]
+
+Questions or comments? Please e-mail [sacha@sachachua.com](mailto:sacha@sachachua.com?subject=Comment%20for%20EmacsConf%202023%20emacsconf%3A%20EmacsConf.org%3A%20How%20we%20use%20Org%20Mode%20and%20TRAMP%20to%20organize%20and%20run%20a%20multi-track%20conference)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/emacsconf-before.md b/2023/info/emacsconf-before.md
new file mode 100644
index 00000000..817bc045
--- /dev/null
+++ b/2023/info/emacsconf-before.md
@@ -0,0 +1,37 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 16-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="emacsconf-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="emacsconf-mainVideo" data="""
+00:00.000 Intro
+00:16.580 Reasons
+01:09.400 Information
+02:09.160 Properties
+03:53.120 Timezones
+04:29.720 Scheduling
+05:41.780 Templates
+06:48.400 Wiki
+08:04.380 Etherpad
+08:28.200 E-mail
+09:05.920 BigBlueButton web conferences
+10:08.121 Shortcuts
+10:36.700 Logbook
+11:03.680 Captions
+12:13.220 Crontabs and playing the talks
+13:11.280 Transitions
+13:49.880 Wrapping up
+
+"""]]<div></div>Duration: 15:05 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.opus">Download --main.opus (8.3MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--main.webm">Download --main.webm (37MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/eX2dXG3xMtUHuuBz4fssGT">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="emacsconf-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="emacsconf-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--answers.opus"></audio></div><div></div>Duration: 2:00:43 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--answers.json">Download --answers.json (5.8MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--answers.opus">Download --answers.opus (71MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsconf--emacsconforg-how-we-use-org-mode-and-tramp-to-organize-and-run-a-multitrack-conference--sacha-chua--answers.webm">Download --answers.webm (317MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/emacsconf-nav.md b/2023/info/emacsconf-nav.md
new file mode 100644
index 00000000..a633568d
--- /dev/null
+++ b/2023/info/emacsconf-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/test">What I learned by writing test cases for GNU Hyperbole</a>
+Next by track: <a href="/2023/talks/sat-open">Saturday opening remarks</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/emacsen-after.md b/2023/info/emacsen-after.md
new file mode 100644
index 00000000..d45b44d7
--- /dev/null
+++ b/2023/info/emacsen-after.md
@@ -0,0 +1,1671 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="emacsen-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""Hello, my name is Fermin.""" start="00:00:00.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Today, I'm going to talk about the Emacsen family,""" start="00:00:03.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the design of an Emacs, and the importance of Lisp.""" start="00:00:06.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So we're going to talk about Lisp.""" start="00:00:11.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I want to start from the end.""" start="00:00:13.520" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Why Lisp matters""" start="00:00:17.000" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""The first question I want to ask is""" start="00:00:17.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""why I think Lisp matters.""" start="00:00:19.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""When I'm talking about Lisp here,""" start="00:00:21.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I'm talking about the idea of Lisp,""" start="00:00:22.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""so the family of languages that are Lisp.""" start="00:00:27.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""But given that there's no formal specification of Lisp,""" start="00:00:30.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""so the opinion might vary. I will expect that Lisp,""" start="00:00:34.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""most of the Lisp have these kind of features.""" start="00:00:40.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""The first one is homoiconic:""" start="00:00:44.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the code is data, basically.""" start="00:00:46.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""They also have a REPL: read-eval-print loop.""" start="00:00:49.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""That is very powerful and can help in development.""" start="00:00:52.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Also, I think a good Lisp""" start="00:00:57.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""should have a powerful macro system.""" start="00:01:00.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I'm good with compile-time macros,""" start="00:01:03.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but read-time is also interesting.""" start="00:01:05.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""There's a lot of Lisp that you can choose.""" start="00:01:07.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""There's the main three ones, of course,""" start="00:01:10.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""with Scheme, Common Lisp, and Clojure.""" start="00:01:12.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Scheme by Guile, Common Lisp by Common Lisp,""" start="00:01:13.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and Clojure by Clojure or ClojureScript.""" start="00:01:19.675" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Why Emacs Lisp was chosen""" start="00:01:26.640" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""So let's talk about Emacs Lisp.""" start="00:01:26.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I didn't mention Emacs Lisp.""" start="00:01:28.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I'm going to talk about why Emacs Lisp""" start="00:01:29.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""was chosen for an Emacs editor.""" start="00:01:32.520" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""We're going to explore this kind of design of the Emacs.""" start="00:01:35.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And Emacs Lisp is the main language of it. Why?""" start="00:01:39.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Given that there were a few alternatives at the time,""" start="00:01:42.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""why Emacs Lisp was chosen?""" start="00:01:44.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So RMS, Richard Stallman, needed a Lisp,""" start="00:01:48.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and there wasn't one available at the time.""" start="00:01:51.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Keep in mind, this was the early 80s.""" start="00:01:54.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Stallman was writing at that point the GCC, I think,""" start="00:01:57.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and he was writing the core components""" start="00:02:03.241" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""of what is going to become GNU.""" start="00:02:07.975" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""He needed an editor. He wanted Lisp. He wanted Emacs.""" start="00:02:10.441" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So he wrote Emacs Lisp. So at that time,""" start="00:02:15.500" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the functionality was more important than &quot;perfection.&quot;""" start="00:02:20.281" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""What I mean [by] &quot;perfection&quot; is: we programmers""" start="00:02:24.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""sometimes like to make everything good""" start="00:02:26.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""or very, very good when sometimes, indeed,""" start="00:02:33.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""it's more important that it works""" start="00:02:36.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""to do the task that it should.""" start="00:02:39.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And it's not a bad language.""" start="00:02:42.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's not that bad. At that time, it was mostly nice.""" start="00:02:44.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Today, it's good enough, I think.""" start="00:02:50.240" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Other "Emacsen"""" start="00:02:54.841" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""He wasn't the first one, the GNU Emacs,""" start="00:02:54.841" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""nor the only one, of course.""" start="00:02:59.461" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""There were others: Hemlock, Zmacs, and Climacs...""" start="00:03:02.541" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Two of them, I think, were written in Common Lisp,""" start="00:03:06.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and Zmacs was written in a Lisp from a Lisp machine,""" start="00:03:08.981" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""so it was an implementation of Emacs.""" start="00:03:14.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Not GNU Emacs, but the original idea""" start="00:03:16.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""of Emacs for a Lisp machine.""" start="00:03:19.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So Hemlock was written in Common Lisp,""" start="00:03:22.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but it's no longer used and no longer developed,""" start="00:03:23.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""as far as I know. And Climacs, it was developed,""" start="00:03:26.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but it was abandoned, I think.""" start="00:03:29.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So three of them failed for different reasons.""" start="00:03:31.520" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Zmacs was because of the Lisp machine market crash,""" start="00:03:33.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and yeah, it also failed.""" start="00:03:37.880" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Why not Common Lisp?""" start="00:03:38.581" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""So Emacs got alone. And in the 90s, interesting to explore,""" start="00:03:38.581" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""some people suggest that why""" start="00:03:44.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""now that we have a standard Lisp, right,""" start="00:03:46.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""because Common Lisp was standardized in '94,""" start="00:03:49.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""why don't we change Emacs Lisp to Common Lisp?""" start="00:03:52.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""These are the other reasons I think are important,""" start="00:03:56.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""because that's why Stallman didn't choose Common Lisp.""" start="00:03:59.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""But I think the main one""" start="00:04:01.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""that I didn't write here""" start="00:04:02.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""is that Stallman wasn't a big fan of Common Lisp,""" start="00:04:03.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and he was at the time the main developer""" start="00:04:09.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and maintainer, of course, for Emacs.""" start="00:04:12.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So he chose not to move to Common Lisp.""" start="00:04:14.041" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""But other reasons may be why...""" start="00:04:16.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Because he had a late and painful standardization.""" start="00:04:18.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Keep in mind, the first book that Guy Steele wrote""" start="00:04:22.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""was in 1984. The standardization finished in 19--""" start="00:04:28.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""sorry, in 1984 was the first book""" start="00:04:32.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and the standardization finished in 1994.""" start="00:04:38.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So, like, 10 years of difference from one to the other.""" start="00:04:44.421" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""10 years of a lot of talk, a lot of money,""" start="00:04:48.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and a lot of pain probably.""" start="00:04:51.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""The Lisp usage declined in the 90s""" start="00:04:56.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""due to the AI winter.""" start="00:04:59.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""We all know about the Lisp machine market crash.""" start="00:05:00.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And the failure of commercial Lisp machine was""" start="00:05:03.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""inevitable at that point.""" start="00:05:08.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So all the potential Emacs friends died.""" start="00:05:12.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And also a lot of Emacs Lisp was already available.""" start="00:05:17.161" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Emacs was already an amateur utility.""" start="00:05:21.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Unix won the war of the operating system, as we know,""" start="00:05:24.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and Emacs Lisp was available in Unix,""" start="00:05:29.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""or in GNU/Linux, as we know,""" start="00:05:33.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is the most successful implementation of Unix.""" start="00:05:36.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Sorry, BSD. Okay.""" start="00:05:40.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So Emacs won by being the &quot;better&quot; alternative.""" start="00:05:44.208" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I'm quoting &quot;better&quot; here because""" start="00:05:48.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I think Emacs does have a better design""" start="00:05:50.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and, well, it was the one that survived, right?""" start="00:05:53.700" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Which is the more important thing for a software or,""" start="00:05:56.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""you know... So Emacs won by being free,""" start="00:06:00.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""also in price, which I think the Lisp machine wasn't.""" start="00:06:05.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So that was also very good. It was included.""" start="00:06:08.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It had, and it still has, of course,""" start="00:06:11.520" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""a nice collection of packages""" start="00:06:14.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""that improve the standard functionality.""" start="00:06:15.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It was easy to extend because of the nature of Lisp.""" start="00:06:20.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And it has a very good integration with GNU/Linux,""" start="00:06:23.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""of course. It was created to write it.""" start="00:06:26.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It makes sense that it's very good""" start="00:06:29.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""for a system administration perspective.""" start="00:06:31.080" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Common Lisp is still not dead or is always dead""" start="00:06:39.120" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""But I think Common Lisp is not dead yet.""" start="00:06:39.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Or some people say that it's always dead,""" start="00:06:43.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""so you cannot kill the something that is always dead.""" start="00:06:45.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So I don't always code in C,""" start="00:06:48.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but when I do, it's Lisp. I'm not a big fan of C""" start="00:06:50.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""for a lot of things, but yeah.""" start="00:06:54.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Why I think Common Lisp is still relevant""" start="00:06:58.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and can be used for all kind of application,""" start="00:07:02.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""both commercially and non-commercially.""" start="00:07:05.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""The first one is the main implementation""" start="00:07:09.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""of Common Lisp, which is called SBCL, which is awesome.""" start="00:07:11.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's fast. It's a very good extension.""" start="00:07:16.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Basically, it's the reference one today.""" start="00:07:19.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""The namespaces of common Lisp,""" start="00:07:21.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I really like the implementation.""" start="00:07:25.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Some people don't like it. It's a matter of taste.""" start="00:07:26.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""But I think it's really good.""" start="00:07:28.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I have a timeless standard. So it was standardized""" start="00:07:29.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""in the 90s, as I said.""" start="00:07:32.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And it doesn't really need a new standard.""" start="00:07:35.980" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Some people say it does need, but I don't think so.""" start="00:07:38.881" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Also it does have macro readers,""" start="00:07:44.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which I think is a very nice feature of Common Lisp""" start="00:07:46.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""that other Lisp doesn't seem to have,""" start="00:07:49.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""or a lot of them don't: in my mind, Emacs Lisp and Clojure.""" start="00:07:51.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Also, it's image-based development,""" start="00:07:56.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is also quite unique to Common Lisp.""" start="00:07:58.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I don't know all the Lisp that does have this.""" start="00:08:00.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Basically, you develop a REPL""" start="00:08:04.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and then you dump the entire REPL into an image.""" start="00:08:05.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Java would be like a core dump.""" start="00:08:10.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And you create an executable.""" start="00:08:12.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Which at the time, I guess in the 90s,""" start="00:08:14.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""was a huge one, right?""" start="00:08:17.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Because you have the entire language, and the REPL,""" start="00:08:18.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and the code. But today are like 20 MB,""" start="00:08:20.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which in today's standard is nothing.""" start="00:08:23.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""There's pictures in your phone larger than 20 MB.""" start="00:08:26.600" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Lem is a nice Emacsen implementation""" start="00:08:30.080" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""So there's a new Emacs in town--well, Emacs, not Emacs,""" start="00:08:30.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Which is Lem. I think it's a very good Emacs implementation.""" start="00:08:39.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""What I mean by &quot;Emacs&quot; here is not a clone of GNU Emacs,""" start="00:08:43.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but an Emacs-inspired editor with similar characteristics,""" start="00:08:46.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and written in a Lisp,""" start="00:08:51.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is why I said that Lisp was very important.""" start="00:08:53.520" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Why not just use GNU Emacs?""" start="00:08:58.260" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""So first, I'm going to address the elephant in the room,""" start="00:08:58.260" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and the question that maybe most""" start="00:09:01.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""of you are now thinking.""" start="00:09:05.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Why not just use GNU Emacs? It's the project.""" start="00:09:06.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's the main one, right? Why choose another one?""" start="00:09:12.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So Lem is relatively new, 2018.""" start="00:09:15.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And it can explore different ideas.""" start="00:09:18.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It was developed by Sasaki-san.""" start="00:09:20.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Basically, it was mostly a one-month project,""" start="00:09:21.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but we are getting there. I'm not the maintainer.""" start="00:09:26.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I'm a developer of Lem. So given that it's""" start="00:09:31.941" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""relatively new, it can explore different ideas.""" start="00:09:36.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""You're not bound to a community or backwards compatibility.""" start="00:09:39.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""You can explore different ideas,""" start="00:09:43.520" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and I think that's always nice.""" start="00:09:45.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Having multiple options creates competition,""" start="00:09:46.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which benefits the community. So Emacs and Vim,""" start="00:09:49.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the competition between the two""" start="00:09:52.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""always create nice packages like evil or, you know...""" start="00:09:54.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's really good to have some kind of a competition,""" start="00:09:59.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""healthy competition.""" start="00:10:03.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And it doesn't share any code base with GNU Emacs.""" start="00:10:06.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I want to clarify this because some people think that""" start="00:10:08.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Lem is kind of a, you know, Spacemacs or Doom.""" start="00:10:12.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""No, it doesn't share any code.""" start="00:10:16.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It has zero Emacs. So that's it.""" start="00:10:19.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Getting this out of the way.""" start="00:10:27.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Why I think Lem is interesting.""" start="00:10:29.200" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Why Lem""" start="00:10:31.080" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""I'm going to show why Lem.""" start="00:10:31.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Why? You can try Lem, and maybe you like it.""" start="00:10:32.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""First thing, these are the features""" start="00:10:37.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""that I really like from it.""" start="00:10:41.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Can be different from person to person,""" start="00:10:42.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but I think these are the main ideas""" start="00:10:45.575" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""it brings to the table and are really interesting.""" start="00:10:48.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I want to say that Lem is not a research project.""" start="00:10:50.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's not like some people did that""" start="00:10:53.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and it's still in development. No, no.""" start="00:10:55.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is a usable product that can be used""" start="00:10:57.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""to [do] day-to-day programming""" start="00:11:00.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""in a very good experience.""" start="00:11:02.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is not like--I want to clarify this""" start="00:11:04.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""because some people bring some exploratory projects.""" start="00:11:06.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is not that one. This is finished.""" start="00:11:08.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Well, finished in the way that you can use it.""" start="00:11:10.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's not, you know, have everything in place.""" start="00:11:14.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So let's continue.""" start="00:11:17.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's written 100% in Common Lisp.""" start="00:11:20.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I say this because Emacs is not""" start="00:11:22.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""100% in Emacs Lisp.""" start="00:11:23.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""You have to modify the C code,""" start="00:11:26.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I think, well, if you... You don't have to,""" start="00:11:28.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but if you want to change the internals, you do.""" start="00:11:31.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I think that given that Lem does not care""" start="00:11:34.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""about the implementation of the language itself--""" start="00:11:38.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""so for example, Lem doesn't have to deal with""" start="00:11:41.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""how Common Lisp works, it just used the language, right?""" start="00:11:44.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's on top of the language.""" start="00:11:48.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""You can say that. Emacs Lisp is Emacs and Emacs Lisp,""" start="00:11:50.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""so you have to, you have both in the same place,""" start="00:11:53.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is, well, it's a double-edged sword, right?""" start="00:11:56.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Then you have the both--similar to Emacs--""" start="00:12:00.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""you have ncurses and SDL2 frontends.""" start="00:12:03.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""One is terminal-based and the other is graphical""" start="00:12:05.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""using the SDL2 library,""" start="00:12:08.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which you can do a lot of crazy things.""" start="00:12:10.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Of course, it's meant to program games and stuff,""" start="00:12:13.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but Lem uses, and it works fairly well.""" start="00:12:16.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""You can program games if you want.""" start="00:12:19.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Not that you need to or anything, but we have Tetris.""" start="00:12:21.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So there's that.""" start="00:12:27.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Also, separate front-end interface.""" start="00:12:29.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So like I said, you have two, but you can create more.""" start="00:12:31.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""In the past, had an electron one,""" start="00:12:34.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but it got abandoned for obvious reasons, I think. Sorry.""" start="00:12:36.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This idea is taken from Neovim that had a lot of frontends.""" start="00:12:41.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""In fact, we don't have that many,""" start="00:12:45.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but not that many people we have two.""" start="00:12:48.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""That works fairly well.""" start="00:12:49.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""We have superb development experience thanks to SLIME.""" start="00:12:51.675" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So we have Micro,""" start="00:12:56.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is a SLIME version for Lem, basically.""" start="00:13:01.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""SLIME is awesome and Micro is also awesome.""" start="00:13:04.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""We have a very strong development experience""" start="00:13:09.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""that we don't have for a Lisp,""" start="00:13:12.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which I think is very important.""" start="00:13:15.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""If you want someone to develop packages or to use your tool,""" start="00:13:17.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""your Emacs at least,""" start="00:13:20.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""you need to have a very good development experience,""" start="00:13:22.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which enhance the extensions for the editor.""" start="00:13:28.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So we have also Vim-like integration.""" start="00:13:34.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This for me was mostly mandatory""" start="00:13:36.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""because I'm an evil-mode user, and I think it's really good.""" start="00:13:39.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Because evil-mode is very good and the VMode,""" start="00:13:44.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which it's called, even though it's more like Vim mode,""" start="00:13:49.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""it's called VMode. It's written by""" start="00:13:51.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Fukamachi-san and it's really good.""" start="00:13:54.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So yeah, that's the thing that I think Lem brings to""" start="00:13:59.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the table and that's really interesting.""" start="00:14:01.960" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Similarities and differences""" start="00:14:03.080" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""So I'm going to do a small demo of Lem, a Emacs example.""" start="00:14:03.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""First, the similarities,""" start="00:14:10.520" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the nomenclature is very similar: modes, buffers,""" start="00:14:11.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""commands... The commands are very similar in nature.""" start="00:14:14.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It was written with GNU Emacs in mind""" start="00:14:17.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""to mimic a lot of things.""" start="00:14:20.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I think GNU Emacs is the best Emacs implementation""" start="00:14:24.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""in that way. So why not just take what is working, right?""" start="00:14:29.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I have similar command,""" start="00:14:33.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but flexible to add other default ones.""" start="00:14:35.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's not like Emacs that you have Emacs commands.""" start="00:14:39.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Lem has Emacs command by default,""" start="00:14:42.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but you can easily change that""" start="00:14:45.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""with other default ones, right?""" start="00:14:47.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's like, you can think of it like a major mode, right?""" start="00:14:49.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Well, more like a global mode,""" start="00:14:52.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""sorry. That's a global mode of Emacs commands,""" start="00:14:54.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""or something like that.""" start="00:14:57.961" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""In general, the feeling is really close.""" start="00:14:59.361" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So you will tell that it's really close to how both work,""" start="00:15:01.520" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""similar commands, and that shows.""" start="00:15:05.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Differences, Common Lisp is not Emacs Lisp,""" start="00:15:07.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""it's similar in the surface.""" start="00:15:12.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So it uses `defun`, you know, have parentheses""" start="00:15:13.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and yada, yada, but it's not the same language, really,""" start="00:15:16.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and sometimes you will find""" start="00:15:18.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""that the differences are substantial.""" start="00:15:20.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""The internals are completely different,""" start="00:15:23.260" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""of course, nothing, well, completely.""" start="00:15:24.860" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""They have a buffer implementation and other things,""" start="00:15:27.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""but in general, yeah, aside from that,""" start="00:15:29.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""it's completely different.""" start="00:15:32.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And it's true that GNU Emacs""" start="00:15:34.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""has a better documentation tutorial.""" start="00:15:36.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So GNU Emacs for me, I think it's""" start="00:15:37.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""one of the best-documented software ever.""" start="00:15:39.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""We're trying to go there, but we're still not there.""" start="00:15:41.760" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template new="1" text="""Demo""" start="00:15:49.600" video="mainVideo-emacsen" id="subtitle"]]
+
+[[!template text="""Let's do the demo. So to open Lem, you compile it,""" start="00:15:49.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and then you have it available,""" start="00:15:54.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and you open Lem. As you can see,""" start="00:15:55.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""we have the temporary buffer. On the top left is the mode--""" start="00:15:57.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""not mode,""" start="00:16:00.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the beam, insert, normal, visual. This is the V mode, right?""" start="00:16:03.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""In the top right corner, we have fundamental,""" start="00:16:07.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is the major mode, then paredit,""" start="00:16:10.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is like the minor mode, but you know,""" start="00:16:11.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""this is like the paredit for Emacs.""" start="00:16:15.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""In the top left buffer,""" start="00:16:16.080" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""you have the current buffer.""" start="00:16:19.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So let's open the... Emacs, we all know how to do this.""" start="00:16:22.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is a command, like explore this command,""" start="00:16:26.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""like `open-init-file`. This opens the init file,""" start="00:16:29.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is in this directory, in `~/.lem/init.lisp`.""" start="00:16:31.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""As you can see, this is very similar, right?""" start="00:16:34.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""You define a command, which is not interactive,""" start="00:16:38.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and then you get the buffer, right?""" start="00:16:40.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is a... So my personal command...""" start="00:16:42.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Let's go to the one that I just opened. Init file, right?""" start="00:16:44.920" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So this is a command that I did,""" start="00:16:48.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is `find-file`.""" start="00:16:52.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is very similar to [??], but just `find-file`.""" start="00:16:53.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""As you can see, very similar.""" start="00:16:56.600" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is the way that you program in Lem.""" start="00:16:58.400" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is the major mode, which is Lisp,""" start="00:17:01.760" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""that we're seeing at the top, right?""" start="00:17:04.840" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""And we can connect if we `slime-self-connect`.""" start="00:17:06.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is the prompt. This is the REPL.""" start="00:17:10.480" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So if we... Keep in mind that this is Common Lisp,""" start="00:17:14.120" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""so this has different things.""" start="00:17:17.960" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So we have to go to the Lem package,""" start="00:17:20.440" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which is very important. This has namespaces, right?""" start="00:17:22.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's not the same. And we can say, okay,""" start="00:17:26.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""`current-buffer`. We get the buffer.""" start="00:17:29.040" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""We can explore everything that is in it, right?""" start="00:17:32.320" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""We have all this stuff. This is... If you're familiar""" start="00:17:35.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""with SLIME or Sly, this is it.""" start="00:17:38.560" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""It's just that we can say, buffer, I think it's `buffer-name`.""" start="00:17:41.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Yes. And we can take this,""" start="00:17:46.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and then we'll give you the name.""" start="00:17:49.160" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So as you can see, the development experience""" start="00:17:50.800" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""is really powerful. We can also `lisp-scratch`,""" start="00:17:54.360" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""which transform... basically apply""" start="00:17:57.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the major mode of Lisp to the temporary buffer.""" start="00:18:00.680" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""This is very similar to Emacs.""" start="00:18:02.640" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Let's go back to the theme. I think that's it.""" start="00:18:06.720" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Thank you all very much for listening to me.""" start="00:18:12.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I think I point out""" start="00:18:13.880" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""the Emacsen family is really interesting.""" start="00:18:15.240" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""Lisp is really good, and GNU Emacs is really good,""" start="00:18:17.000" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""and I think Lem is also pretty awesome.""" start="00:18:19.280" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""So thank you all very much.""" start="00:18:21.200" video="mainVideo-emacsen" id="subtitle"]]
+[[!template text="""I'll be answering the question now. And happy hacking.""" start="00:18:23.120" video="mainVideo-emacsen" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="emacsen-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Here.""" start="00:00:00.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right. Yeah. So thanks,""" start="00:00:05.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Fermin, for the great talk.""" start="00:00:06.279" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""People have questions,""" start="00:00:08.039" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""please post them on the pad or the IRC as""" start="00:00:12.179" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""well and we'll take them up.""" start="00:00:13.259" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Thank you very much. The guests will be here""" start="00:00:17.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to answer questions. Let's see.""" start="00:00:21.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yep.""" start="00:00:23.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 1]: And also, Fermin, if you later want to""" start="00:00:28.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""clarify anything or fix any URLs or such,""" start="00:00:30.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you're always welcome to do that either like""" start="00:00:32.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""on the Wiki page, or if you like email any of""" start="00:00:36.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the organizers, they should be able to help""" start="00:00:37.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""with that as well.""" start="00:00:38.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay. Yeah, I put the wrong URL.""" start="00:00:41.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yeah, not a big deal really,""" start="00:00:46.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""if you look it up. Yeah,""" start="00:00:48.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that's really better. Thank you very much.""" start="00:00:50.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Checking, no questions.""" start="00:00:56.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Very good to be in touch.""" start="00:00:58.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, we have a question here in the big blue""" start="00:01:17.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""button chat.""" start="00:01:17.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, public chat. I see.""" start="00:01:21.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Is LEM an acronym? I think it is,""" start="00:01:26.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I never remember. The complete name is""" start="00:01:32.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like something... It's also a circle,""" start="00:01:36.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like, you know, a self-referencing,""" start="00:01:38.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you know, recursive name.""" start="00:01:41.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I never remember it, sorry.""" start="00:01:42.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's like... Yeah, someone...""" start="00:01:45.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Okay, someone asked about the DEM community,""" start="00:01:50.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""how big it is. So I don't remember,""" start="00:01:56.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to answer the question,""" start="00:01:57.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't remember the acronym,""" start="00:01:58.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but it is an acronym. I just never...""" start="00:02:00.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And it's not written anywhere,""" start="00:02:04.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think, or someone...""" start="00:02:06.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I never check it. So I...""" start="00:02:09.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: I forgot.""" start="00:02:12.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: My maintainer told me once and then So,""" start="00:02:15.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""whole large, does Leia have a package""" start="00:02:17.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""manager? We do have a package manager,""" start="00:02:19.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""funnily enough. We use the QuickLisp""" start="00:02:21.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""infrastructure to get packages,""" start="00:02:26.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so it's very easy to install packages.""" start="00:02:29.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So basically, we don't have a package manager""" start="00:02:33.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""as in Emacs, half a packet.l.""" start="00:02:35.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""We're using the same common list""" start="00:02:39.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""infrastructure to provide the different""" start="00:02:41.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""packages. We also have a talk with the""" start="00:02:45.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Ultralisp, which is like a,""" start="00:02:47.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you know, QuickLisp is like,""" start="00:02:48.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you can think quickly of Melpa.""" start="00:02:50.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Ultralisp is like a fast Melpa,""" start="00:02:52.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""very fast Melpa, that every,""" start="00:02:54.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think every day you can get a package from""" start="00:02:58.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""them. And We have a tag system that you can""" start="00:03:01.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""submit a package and get a tag,""" start="00:03:02.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and Theory can download those packages with""" start="00:03:08.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the lem tag. So the thing is,""" start="00:03:13.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's not yet, it doesn't have a user""" start="00:03:17.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""interface to install packages.""" start="00:03:18.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Still, it's 2 external packages.""" start="00:03:22.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""For now, imagine this is like the early""" start="00:03:25.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs, right? Everything is going to the core""" start="00:03:27.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for now, because we need that functionality.""" start="00:03:29.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""In the future, we probably will split it up""" start="00:03:32.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""way more. But let me first answer a question""" start="00:03:37.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in the other part. How large is the LEN""" start="00:03:42.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""community? Hope it's a chance of survival""" start="00:03:44.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""long term. So we are a very small community,""" start="00:03:47.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mostly because Sasaki-san,""" start="00:03:51.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the main developers of the community,""" start="00:03:54.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""are from Japan and some of them,""" start="00:03:57.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""or most of them, don't know English.""" start="00:03:58.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""At the beginning, LEM was a very""" start="00:04:01.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Japanese-centric tooling because barrier of""" start="00:04:05.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""language, most of the users are from Japan.""" start="00:04:06.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So different communities.""" start="00:04:08.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And also, I don't know why,""" start="00:04:12.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but the main maintainer,""" start="00:04:13.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is Asaki-san, very good guy and a very,""" start="00:04:17.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""very talented developer.""" start="00:04:19.079" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""He doesn't like to, you know,""" start="00:04:21.779" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""at first the project was all in Japanese,""" start="00:04:24.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so he doesn't care if someone uses the""" start="00:04:27.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""project or not. He's more focused on the,""" start="00:04:28.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I guess, quality of the features of it.""" start="00:04:32.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So that creates a problem that doesn't really""" start="00:04:35.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mind the community. So the community doesn't""" start="00:04:38.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mind in a good way. It's to focus more on""" start="00:04:41.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""technicality rather than the user,""" start="00:04:43.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which I mean, I cannot blame him.""" start="00:04:46.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's very hard work to build an Emacs and""" start="00:04:49.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""editor from scratch. It's not a trivial task.""" start="00:04:52.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So yeah, we're a very small community.""" start="00:04:56.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But I think the chance of survival is very""" start="00:04:58.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""good because LEM is written in ANSI Common""" start="00:05:01.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Lisp, so it should be used in any...""" start="00:05:04.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Well, it works in a lot of Common Lisp""" start="00:05:07.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""implementation. For people who don't know,""" start="00:05:10.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Common Lisp is a language that was""" start="00:05:12.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""standardized in the 94.""" start="00:05:13.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I explained that in the talk,""" start="00:05:14.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I'll say it again.""" start="00:05:15.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So, if Common Lisp exists,""" start="00:05:18.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in theory, LEM should also exist.""" start="00:05:21.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And also if nCursor doesn't break or doesn't""" start="00:05:24.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""stop to exist, which is even less likely.""" start="00:05:27.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So that's the main idea.""" start="00:05:30.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And you can use LEM for very good Common Lisp""" start="00:05:33.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""development already. If Common Lisp doesn't""" start="00:05:36.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""change that much, it should disappear.""" start="00:05:39.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""We are not bound to any company or any...""" start="00:05:42.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Even Sasaki-san, God forbid,""" start="00:05:46.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""disappears instantaneously.""" start="00:05:47.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""There are a few people,""" start="00:05:50.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""me included, that know very well the code""" start="00:05:52.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""base and we can continue the development.""" start="00:05:54.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So it's not like 1, there's no one-man""" start="00:05:56.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""project. Maybe a four-man project or 5,""" start="00:05:58.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but not 1. Okay, I'll answer the 1 in the""" start="00:06:04.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""chat, on the blue button.""" start="00:06:08.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Is it best to learn Common Lisp before""" start="00:06:10.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""learning to use LEM? I think this is similar""" start="00:06:13.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to Emacs and EmacLisp,""" start="00:06:15.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""right? Should you use EmacLisp before using""" start="00:06:18.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs? Doesn't make too much sense,""" start="00:06:20.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""right? You see Emacs and then you go learning""" start="00:06:23.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Common Lisp. I think it's the same,""" start="00:06:28.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""sorry, EmacsLisp. And it's the same with LEM.""" start="00:06:30.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can start using LEM with a non-common""" start="00:06:32.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Lisp, which is fine. You can use it to edit""" start="00:06:37.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""your things. It's like an editor.""" start="00:06:39.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But like Emacs, LEM puts a lot of focus on""" start="00:06:42.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""extensibility. So it's very probable that you""" start="00:06:46.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""will learn how to write Common Lisp.""" start="00:06:49.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I have to say that a lot of people that use""" start="00:06:53.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""LEM, well, me and most of the people,""" start="00:06:56.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""come from Emacs. So if you come from Emacs""" start="00:06:59.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and you know a little bit of Emac Lisp,""" start="00:07:00.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Common Lisp is like an uncle or cousin""" start="00:07:04.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""distance that shares some similarities.""" start="00:07:07.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So you will... Well, it's not going to be""" start="00:07:09.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that. I can show... Sorry about that.""" start="00:07:12.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""For example, I show that in the...""" start="00:07:14.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I can show... So the...""" start="00:07:21.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's not that different from Emacs regarding""" start="00:07:27.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""configuration. So for example,""" start="00:07:28.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this command doesn't exist on LEM.""" start="00:07:31.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And Sasaki-san didn't want to copy one-to-one""" start="00:07:35.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the command from Emacs,""" start="00:07:36.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the airgrip, the cursor grip command of""" start="00:07:39.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs. And I said, okay,""" start="00:07:41.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""then I'm going to implement it myself.""" start="00:07:43.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And it's something like this,""" start="00:07:44.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is you will do something similar to""" start="00:07:47.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs, right? This will be like things at""" start="00:07:50.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""point symbol or something like that.""" start="00:07:52.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And then you have a prompt,""" start="00:07:54.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""very prompt for directory with Emacs would be""" start="00:07:59.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""something similar. And then you then launch""" start="00:08:01.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""grep with the command that you want.""" start="00:08:02.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""This is not that far from Emacs,""" start="00:08:06.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this, really. If you don't know neither of""" start="00:08:10.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""those, you can still use LEM,""" start="00:08:12.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""though as with Emacs, extensibility will be,""" start="00:08:16.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""well, you couldn't extend it if you don't""" start="00:08:22.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""know combo disp. Should I answer the question""" start="00:08:28.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""on the etherpad writing it at the same time?""" start="00:08:33.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 1]: You're welcome to, but you don't have to.""" start="00:08:36.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can just answer here on stream,""" start="00:08:38.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: on the Google button. Okay.""" start="00:08:40.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Okay. Are there any Lisp machine capabilities""" start="00:08:43.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you're trying to provide that GNU image""" start="00:08:45.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""lacks? The type objects capability in the""" start="00:08:46.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""editor, as an example.""" start="00:08:47.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, there were a few discussions about""" start="00:08:53.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the Lisp machines and LEM and all the big""" start="00:08:59.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""projects that tries to get some capability of""" start="00:09:03.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it. But we don't really...""" start="00:09:05.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""We try to improve the development experience""" start="00:09:09.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for Common Lisp and for LEM,""" start="00:09:12.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""imitating a lot of things that the Lisp""" start="00:09:18.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""machine had. I'm going to try to do a thing""" start="00:09:21.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that I don't know if it's going to work.""" start="00:09:23.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So to explain this, let's see.""" start="00:09:26.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm going to recompile them now live.""" start="00:09:35.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Let's see how it works.""" start="00:09:42.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And compiling the, yes,""" start="00:09:47.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it doesn't work. OK. What if I do?""" start="00:09:51.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""No, it doesn't work. OK.""" start="00:09:53.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I was trying to compile the SDL2,""" start="00:09:55.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I do have the codebase modifier.""" start="00:09:57.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I should be able to compile this.""" start="00:10:00.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Oh, that was really bad.""" start="00:10:05.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""What about example? I have the code base,""" start="00:10:13.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so let me check. I'm going to do this.""" start="00:10:17.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Oh, yeah, I have this modified.""" start="00:10:19.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I stash this. OK. I have this modified.""" start="00:10:31.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Now it should work. OK.""" start="00:10:33.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Sorry. I was going to show the writing""" start="00:10:42.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""capabilities of it, similar to the Lisp""" start="00:10:45.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""machine of navigating of classes.""" start="00:10:47.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So the answer of that question is,""" start="00:10:52.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""not really. We don't try to emulate this""" start="00:10:57.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""machine, nor any like of that.""" start="00:10:58.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But yeah. Let me, I'm going to try to,""" start="00:11:05.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""okay, now I'm back at them.""" start="00:11:07.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Okay. So what about using them for things""" start="00:11:12.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""other than common, common,""" start="00:11:13.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that markets? Okay. So yes,""" start="00:11:16.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""we do have, so I'm going to show the code""" start="00:11:18.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""base a little bit. Like I said before,""" start="00:11:20.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""we don't have yet too much external packages""" start="00:11:25.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because of the size of the community.""" start="00:11:26.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I have a question. Go ahead,""" start="00:11:30.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you can write it, Michael.""" start="00:11:32.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yeah. So, yes, as you can see here,""" start="00:11:37.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this is almost all, or 99% of the major modes""" start="00:11:43.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""we have. We use the same terminology of""" start="00:11:46.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""SkinnyMemax in that way.""" start="00:11:47.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""For example, the C mode,""" start="00:11:49.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""if you go inside, you see that this is the""" start="00:11:51.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""fine major mode. So in that regard,""" start="00:11:53.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's very similar to Emacs.""" start="00:11:54.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And we have something called a JIT,""" start="00:11:56.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is like a maggot.""" start="00:11:58.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And you can edit files.""" start="00:12:00.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can use not only for common lists.""" start="00:12:02.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""In my configuration, which is written,""" start="00:12:06.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I will post that later,""" start="00:12:11.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but if you go to my code burg you can see my""" start="00:12:15.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""configuration which is,""" start="00:12:16.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which I do have. So for example you can use""" start="00:12:20.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it for a scheme. We have a swank server.""" start="00:12:22.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""This is the configuration to use it.""" start="00:12:24.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can use it for JavaScript because we have""" start="00:12:25.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""a native LSP client written in.""" start="00:12:28.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And we have Dired. Yeah,""" start="00:12:29.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this is Dired. We have Dired indeed.""" start="00:12:33.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""No, it's not Dired, you know.""" start="00:12:35.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's called directory.""" start="00:12:36.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Sasaki-san, which is the main maintainer,""" start="00:12:38.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""doesn't like to copy one-to-one Emacs names,""" start="00:12:43.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but we are the same. We also have projects,""" start="00:12:48.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is like projectile.""" start="00:12:51.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So, you know, they're very similar but not""" start="00:12:55.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the same. We also have a VI configuration,""" start="00:12:56.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""as you can see. I'm using the VI commands and""" start="00:12:59.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""stuff, and it's very good.""" start="00:13:00.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I will say not as good as an evil because it""" start="00:13:03.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""still needs some polish,""" start="00:13:06.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but it's getting there.""" start="00:13:08.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So we can also program in JavaScript and a""" start="00:13:13.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""lot of LSP things, and Elixir,""" start="00:13:16.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which was recently added by myself.""" start="00:13:18.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And yeah, it's very fun to add new modes.""" start="00:13:21.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""OK, what else next? What about user-level""" start="00:13:27.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""things other than coding?""" start="00:13:28.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""What about using this in conjunction with""" start="00:13:31.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Nix? Oh, so there's a big,""" start="00:13:34.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so like I said before,""" start="00:13:36.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""there were like an issue that 3 main common""" start="00:13:40.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""list project were talking,""" start="00:13:40.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""some of the users. So the 3 main projects are""" start="00:13:46.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""LEM, probably, Nixed, and then StamWM,""" start="00:13:49.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the 3 main, well, 3 big,""" start="00:13:52.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""common list projects that are trying to""" start="00:13:55.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""emulate an Emacs experience in different""" start="00:13:57.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""fields. 1 is Editor, the other 1 is Window""" start="00:14:00.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Manager, and the 1 is the browser.""" start="00:14:01.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The problem is that the design of the 3 are""" start="00:14:06.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""very different. So Nix is very focused on the""" start="00:14:11.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""browser. You can connect to Nix.""" start="00:14:14.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So given that they're both a common list,""" start="00:14:16.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you can connect to Nix from them and vice""" start="00:14:18.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""versa. And you can send commands and you can,""" start="00:14:21.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so you have this kind of interoperability""" start="00:14:22.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""with both. But no, you cannot combine both to""" start="00:14:31.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""have 1 LEMNIX. That would be very sick.""" start="00:14:35.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I would love it. But the effort is just too""" start="00:14:39.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""much. Keep in mind we are a very small""" start="00:14:41.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""community. The LEM, like I said,""" start="00:14:44.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""we are like 345 developers that write""" start="00:14:49.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""packages and answer questions and stuff.""" start="00:14:51.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Now we need users in that way to test things.""" start="00:14:55.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So what is the license of LEM?""" start="00:14:58.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The license of LEM is MAT.""" start="00:15:00.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""We have some components of all the various""" start="00:15:02.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""licenses, but the main 1 is MAT.""" start="00:15:04.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I didn't choose the license of it.""" start="00:15:07.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I would highly prefer a more like GPL 1,""" start="00:15:11.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but like I said I'm not a maintainer,""" start="00:15:13.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so the license is MAT.""" start="00:15:15.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""This question, I realize,""" start="00:15:19.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""how far is LEM from being able to remove a""" start="00:15:22.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""list libraries? OK, that's a big question""" start="00:15:26.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""indeed. And Funny enough,""" start="00:15:30.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""2 years ago in the EmacsConf,""" start="00:15:31.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I talk about this, not with LEM,""" start="00:15:34.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but with Common Lisp and Emacs Lisp in""" start="00:15:36.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""general. So I'm not the only 1 thinking about""" start="00:15:41.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this. In fact, I'm talking with someone that""" start="00:15:44.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""is trying to write like a Emacs Lisp""" start="00:15:46.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""interpreter to work with them.""" start="00:15:48.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The thing is that Emaclist libraries,""" start="00:15:52.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so the API is just very different.""" start="00:15:55.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That's the main problem.""" start="00:15:57.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That's really the problem.""" start="00:15:58.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can, so you can, let me see.""" start="00:16:02.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So, you can have an Emacs list buffer of LEM.""" start="00:16:13.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""This is an Emacs list rebel.""" start="00:16:15.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I wrote an LRSP client so you can connect to""" start="00:16:21.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs and send things and stuff.""" start="00:16:23.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So you're friends that we share stuff.""" start="00:16:25.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But having a complete Emacless implementation""" start="00:16:28.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""with LEM and work with both API will be a""" start="00:16:37.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""huge work. Very like, it's even if they share""" start="00:16:42.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""very similar thing, in fact,""" start="00:16:43.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""API in some places is very similar.""" start="00:16:46.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Down the line infrastructure,""" start="00:16:48.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so the code is, so it's completely different.""" start="00:16:52.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It will be very hard. We do have a clone of""" start="00:16:56.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""maggot that works, more or less.""" start="00:16:58.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Well, it does work, but maggot's just better.""" start="00:17:01.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But it's getting there.""" start="00:17:03.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So like I said, we're trying to,""" start="00:17:05.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""not to copy one-to-one,""" start="00:17:06.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but to adapting each tool to LEM.""" start="00:17:09.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""How are LEM buffer designs similar to Emacs?""" start="00:17:13.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So yeah, that would be,""" start="00:17:19.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so how a blend buffer design,""" start="00:17:21.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""similar to Emacs. So similar in what way,""" start="00:17:24.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""actually with properties.""" start="00:17:26.319" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think that you've seen,""" start="00:17:29.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so you do have like a font lock,""" start="00:17:31.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""different kind of properties,""" start="00:17:32.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but it's not exactly how Emac does it with""" start="00:17:37.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""overlays and stuff. You can,""" start="00:17:41.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so if you're very interested,""" start="00:17:43.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't want to go too much deep into the,""" start="00:17:45.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""let me go to, I don't want to go too much""" start="00:17:51.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""deep into the technicality of things now,""" start="00:17:55.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but you can go. So LEM is written 100% in""" start="00:17:57.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Common Lisp. So if you know Common Lisp,""" start="00:18:00.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you can go to buffer. You can check all the""" start="00:18:03.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""codes here. Always we have,""" start="00:18:08.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""we also have this, which is like StreamX.""" start="00:18:12.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Sorry to that, I don't.""" start="00:18:17.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But yeah, So you can see.""" start="00:18:21.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So yeah, if you go to the code base,""" start="00:18:24.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""maybe some of you can check this problem.""" start="00:18:26.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Well, not problem, but yeah.""" start="00:18:28.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That's this Japanese comment.""" start="00:18:30.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can see here why it's very,""" start="00:18:35.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you have to translate and stuff,""" start="00:18:38.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is sometimes a little bit annoying.""" start="00:18:39.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But yeah, some of them are in English.""" start="00:18:44.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So this play is not the same.""" start="00:18:47.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So if you're interested,""" start="00:18:48.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you can go to the buffer and check it out for""" start="00:18:51.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yourself. But I think it uses the overlay in""" start="00:18:53.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""a different way. So the implementation is""" start="00:18:58.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""different that way. Oh,""" start="00:19:04.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: This module. Oh, this is very low.""" start="00:19:10.875" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: this is fairly low. What other things or""" start="00:19:12.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""experiences that I can show you?""" start="00:19:15.559" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Just like you show you.""" start="00:19:15.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Any marks?""" start="00:19:18.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Okay, very interesting question.""" start="00:19:32.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""What are the things...""" start="00:19:34.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So that's interesting.""" start="00:19:37.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Let me see. So forgive me,""" start="00:19:42.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you answered this. I talked briefly in the""" start="00:19:49.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""talk about this, but basically I like""" start="00:19:53.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Komaldisp, I have the mascot here.""" start="00:19:55.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 3]: a very""" start="00:19:58.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: It's Italian thing. I like Common Lisp and I""" start="00:20:04.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""think GmagLisp is a very good friend of""" start="00:20:08.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Common Lisp in the way that Serious Software""" start="00:20:10.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Analysis is a very good uncle.""" start="00:20:11.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Let me answer first the 1.""" start="00:20:18.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So I like to extend it in Common Lisp.""" start="00:20:24.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I like the Common Lisp libraries.""" start="00:20:25.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And I think them have a better design in""" start="00:20:30.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""terms of its 1 language,""" start="00:20:31.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which I think is a nice strength.""" start="00:20:33.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Like, 1 of the things that put me off when I""" start="00:20:36.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""was using Emacs, I love to extend the editor""" start="00:20:38.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and to go inside and stuff.""" start="00:20:40.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And 1 of the things that I'm not a big fan of""" start="00:20:43.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""C. If you're a fan of C,""" start="00:20:44.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you will be very pleasant with finding C""" start="00:20:47.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""stuff, but I don't. So when I'm trying to""" start="00:20:50.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""hack an Emacs and go inside the things,""" start="00:20:52.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I will control C code.""" start="00:20:54.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That's not that interactive as the Emaclist""" start="00:20:56.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""1, and that would be like a fuzzball for me.""" start="00:20:59.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I was always dreaming about that stuff,""" start="00:21:03.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""having like everything in 1 language.""" start="00:21:05.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The thing that LEM does to me is like it""" start="00:21:08.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""allows me to extend the editor to modify""" start="00:21:12.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""also, to modify in Common Lisp.""" start="00:21:14.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Also, I like the language and technology.""" start="00:21:17.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's a bold thing, right?""" start="00:21:19.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's a world language that I love,""" start="00:21:21.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and Emacs that I love.""" start="00:21:23.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs, I'm a big fan of,""" start="00:21:25.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""or a user of GNU Emacs.""" start="00:21:27.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And LEM is like Emacs plus Common Lisp,""" start="00:21:29.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but with a different design.""" start="00:21:30.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't want to, It's not a clone.""" start="00:21:32.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I want to get this very clear that LEM is not""" start="00:21:37.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""a clone of Emacs. The sign is very different""" start="00:21:40.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in a lot of ways. But it's very inspired,""" start="00:21:43.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and that cannot be denied.""" start="00:21:44.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 1]: I can jump in for a second.""" start="00:21:48.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think we're like 15 minutes into the lunch""" start="00:21:51.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""break, but you're welcome to continue""" start="00:21:52.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""answering questions. But if anyone on the""" start="00:21:55.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""stream or folks want to go grab lunch,""" start="00:21:57.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""feel free to do that. I'm probably going to""" start="00:21:59.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""do that as well. But yeah,""" start="00:22:01.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""we can either continue keeping this on the""" start="00:22:03.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""stream, or if people would like to come join""" start="00:22:06.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""here on BigBlueButton and talk to Fermin,""" start="00:22:08.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like folks have already done that,""" start="00:22:11.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yeah, you're welcome to.""" start="00:22:12.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, go ahead. No problem.""" start="00:22:14.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Thank you. Thank you, Vitaliy.""" start="00:22:16.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Cheers. Cheers. So finishing the answer to""" start="00:22:25.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the question, I think LEM does tries to fix""" start="00:22:30.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""some Emacs problems, can we fix problems""" start="00:22:31.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""regarding the internal API,""" start="00:22:35.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which makes sense, right?""" start="00:22:37.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs have like 40 years,""" start="00:22:39.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is a lot. And yeah,""" start="00:22:42.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is, that's what makes me happy.""" start="00:22:44.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I use both now. I use Maggis and Emacs for""" start="00:22:47.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""some languages and then I use LEM for Common""" start="00:22:50.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Lisp and other languages.""" start="00:22:51.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can also use LEM for EmacLisp,""" start="00:22:55.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which makes LEM the second best editor for""" start="00:22:59.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""EmacLisp. It was a funny thing to do.""" start="00:23:02.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""OK, so do you think LEM will continue to have""" start="00:23:05.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""a lot of Japanese documentation?""" start="00:23:06.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So there's not that many Japanese""" start="00:23:11.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""documentation, really.""" start="00:23:12.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So there's a few comments here and there,""" start="00:23:18.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but it's not full. We have a web page with a""" start="00:23:20.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""lot of documentation in English.""" start="00:23:22.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So you can take a look at that.""" start="00:23:25.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But we do have to improve the documentation""" start="00:23:29.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and translate it to English.""" start="00:23:30.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Sasaki-san is up to it,""" start="00:23:32.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but he just doesn't feel that comfortable""" start="00:23:35.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""translating it himself.""" start="00:23:36.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So yeah.""" start="00:23:38.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 3]: So, this is Peter on BigBlueWem.""" start="00:23:42.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yeah, it's neat that Wem even exists,""" start="00:23:49.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because there's always chatter on the Emacs""" start="00:23:55.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mailing list to rewrite Emacs and some other""" start="00:23:58.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""language. And to see that it's already to see""" start="00:24:03.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that I mean, you have an implementation""" start="00:24:05.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""sitting there and, and the thing I was""" start="00:24:08.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""wondering while I was listening in on the,""" start="00:24:10.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""on the Q and A was do you have Dured?""" start="00:24:14.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Do you have Maggot? And some,""" start="00:24:15.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""somebody else wrote that question into,""" start="00:24:17.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""into Etherpad. But I was happy to see that""" start="00:24:20.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you have Dured or something like it""" start="00:24:22.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""implemented. Because I think that's like the,""" start="00:24:24.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for me, that's the most important thing in""" start="00:24:27.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs because that gets me around in my""" start="00:24:30.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: BRODINKOVICH Yeah, for me too.""" start="00:24:35.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""For me too.""" start="00:24:35.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: Go ahead.""" start="00:24:37.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 3]: system. VICTOR Sorry. Yeah,""" start="00:24:37.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so I may try it out sometime,""" start="00:24:39.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but probably won't be for like 3 or 6 months,""" start="00:24:42.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because there's always a backlog of other""" start="00:24:45.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""things to try out.""" start="00:24:46.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I'm the 1 who wrote that question.""" start="00:24:49.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And do you use, I think you have bookmarks""" start="00:24:54.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and registers, I imagine,""" start="00:24:55.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""right?""" start="00:24:55.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I think you have. I never tried bookmarks""" start="00:24:59.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because I don't use it that much.""" start="00:25:01.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But I think you have something like that.""" start="00:25:02.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, I don't. There's a few features that""" start="00:25:05.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't know about them because I don't use""" start="00:25:07.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it much. Some features,""" start="00:25:08.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean. But yeah, I think you have.""" start="00:25:11.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Let me check. We can check,""" start="00:25:13.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""probably. Things in extensions,""" start="00:25:16.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""just directory. VNXT. Directory mode.""" start="00:25:23.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So there is. So this is the Tyrant's friend.""" start="00:25:28.950" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I won't say clone. Very inspired.""" start="00:25:31.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: What about like on the note-taking front,""" start="00:25:36.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like org mode,""" start="00:25:38.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: You know. note... Yes,""" start="00:25:41.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so... EMMS... Yes, so someone did some MMS.""" start="00:25:50.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So not MMS, not much. So package for LEM that""" start="00:25:58.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""is now in a pull request,""" start="00:26:00.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think. But yeah, no.""" start="00:26:03.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The thing is I don't use R mode that much.""" start="00:26:06.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""We don't have a heavy R mode user to provide""" start="00:26:11.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""some major mode and stuff.""" start="00:26:15.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So we don't have that implemented yet.""" start="00:26:18.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The thing is, my plans for,""" start="00:26:20.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I do have plans for our mode.""" start="00:26:22.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""They're a little bit evil,""" start="00:26:24.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but there's plans for it.""" start="00:26:26.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So I'm planning to use,""" start="00:26:27.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so rewriting our mode is a big task that I""" start="00:26:30.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""don't want to do. So I'm going to use Emacs""" start="00:26:34.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for our mode in 2.11. I wrote a recipe,""" start="00:26:39.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""no, a remote procedural RPC that I'm using""" start="00:26:45.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for the Red Bull and stuff.""" start="00:26:46.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And I'm planning to have an Emacs Puppet to""" start="00:26:51.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""provide me the functionality for Org Mode.""" start="00:26:54.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I know for me, when I write notes,""" start="00:26:59.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I like to note more than Org Roam just""" start="00:27:01.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because I feel Org Mode is great and all,""" start="00:27:06.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but if all my notes are in it,""" start="00:27:08.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I kind of feel trapped by it.""" start="00:27:10.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I did the talk journaling in KOutline,""" start="00:27:14.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and I like that package better for some""" start="00:27:17.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""things and it's like if I want to put like""" start="00:27:21.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the tags on PDF file names and so it's like""" start="00:27:24.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yeah, it's great and all but it's also Is""" start="00:27:28.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that part of the motivation of wanting to use""" start="00:27:31.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""lamb is so you feel less entrapped by emacs""" start="00:27:34.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""No, I will say I don't no.""" start="00:27:38.445" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: No, no. I was very happy trapping to Emacs.""" start="00:27:40.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""To be fair. The thing is I don't use Hormel""" start="00:27:47.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that much. That's just the reality.""" start="00:27:48.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Org Mode for me is a very good markup""" start="00:27:52.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""language, but not that much really.""" start="00:27:54.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I know that Org Mode has a lot of people and""" start="00:27:56.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's used by a lot of people.""" start="00:27:58.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And there's very interesting packages.""" start="00:28:00.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: What about org mode versus markdown versus""" start="00:28:03.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""plain text versus latex then?""" start="00:28:05.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I like org mode because of the Emacs""" start="00:28:08.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""functionality. I think if you take that away,""" start="00:28:10.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you plain or mode versus Markdown,""" start="00:28:15.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't think there's that much difference,""" start="00:28:17.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""if you take the Emacs functionality away.""" start="00:28:19.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I like the""" start="00:28:24.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah. Emacs syntax more than Markdown.""" start="00:28:27.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Like, for instance, you have the double""" start="00:28:29.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""square brackets, which is simpler for me to""" start="00:28:31.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""look at, but.""" start="00:28:32.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, I guess it's a matter of,""" start="00:28:35.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, we don't have yet a major mode of R""" start="00:28:38.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mode, which will be quite trivial.""" start="00:28:39.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Well, you know, a simple syntax highlights,""" start="00:28:42.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you know, R mode in LEM,""" start="00:28:46.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because no 1 wrote it.""" start="00:28:52.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, that's the way with this project,""" start="00:28:55.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""right? If you need people to be motivated to""" start="00:29:00.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""do that. And with LEM,""" start="00:29:04.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""someone asked about the Japanese.""" start="00:29:06.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think they're interested about that.""" start="00:29:11.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""LEM does have a thing,""" start="00:29:15.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: If the it would be good.""" start="00:29:16.030" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I'd be able to do more,""" start="00:29:16.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but that's what I""" start="00:29:18.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: was doing.""" start="00:29:19.370" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: they think True. So, for example,""" start="00:29:22.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""we're using another big fan of...""" start="00:29:24.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, I know that the main people that may""" start="00:29:27.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""use in the future LEM are EMACLIS people.""" start="00:29:30.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""A lot of them. It's very similar.""" start="00:29:33.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And Sasaki-san and the LEM community mainly""" start="00:29:37.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""uses Discord for chat and stuff.""" start="00:29:43.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, we do have matrix,""" start="00:29:46.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and I should connect to it,""" start="00:29:48.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""by the way. But we mainly use Discord,""" start="00:29:54.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which I don't think is a good thing.""" start="00:29:58.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, to have the main communication""" start="00:30:01.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""channels, Discord. Because,""" start="00:30:05.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""well, it's Discord. It's a closed source""" start="00:30:09.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""application that is easy for some people,""" start="00:30:13.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but for some people it's a tailbreak.""" start="00:30:14.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: are in""" start="00:30:17.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Especially people that the Emacs community""" start="00:30:17.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that very like free software.""" start="00:30:20.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: The only good thing about Molesley is it's""" start="00:30:22.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""popular, but as soon as you break out of that""" start="00:30:26.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mold, all of a sudden it becomes a lot""" start="00:30:28.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""harder. For instance, they don't have...""" start="00:30:30.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""All the third-party clients are unofficial""" start="00:30:33.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and according to their terms of service they""" start="00:30:37.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""can just can you. Which is not a nice""" start="00:30:40.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""position to be in if you're trying to use it""" start="00:30:44.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and you wanted to be a moderator using some""" start="00:30:47.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""side tools that weren't Discord.""" start="00:30:50.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I agree 100% and in fact I'm not a big fan,""" start="00:30:55.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't like Discord.""" start="00:30:56.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 5]: You mentioned the RPC you did between Emacs""" start="00:31:03.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and the LEM. Do you have it published""" start="00:31:06.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""somewhere?""" start="00:31:06.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yes, it's in the LEM project.""" start="00:31:13.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'll copy that in the chat.""" start="00:31:15.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 5]: Okay, because I'm always interested in how""" start="00:31:19.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you do like the communication with other""" start="00:31:21.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""programs with Emacs because that's""" start="00:31:24.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""interesting.""" start="00:31:24.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I'm only using the porthole package,""" start="00:31:30.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm not writing it from scratch,""" start="00:31:32.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""not that much as a developer.""" start="00:31:34.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 5]: So I don't know this package.""" start="00:31:37.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Maybe that's the thing I can learn.""" start="00:31:39.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh yeah, probably if you,""" start="00:31:40.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yeah. Yeah. If you want to,""" start="00:31:42.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so I didn't see this 1,""" start="00:31:43.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this package for the RSP,""" start="00:31:46.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which make is monthly automatically.""" start="00:31:48.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 5]: And how do you do, how do you plan to""" start="00:31:53.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""integrate Org Mode? Because Org Mode needs to""" start="00:31:59.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""work on.""" start="00:31:59.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: This way? Yes, so I'm planning to have like a""" start="00:32:03.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs puppet and to have like a clone buffer""" start="00:32:08.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""from the buffer that you do in LEM and then""" start="00:32:11.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the command sent into the Emacs hidden buffer""" start="00:32:16.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and then the changes go back to LEM to change""" start="00:32:19.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the buffer of LEM. That's my idea.""" start="00:32:22.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 5]: Okay, that's all. It's interesting.""" start="00:32:24.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Would be interesting to see what comes from""" start="00:32:28.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it.""" start="00:32:28.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: It's a bit, it's a hackish 100%.""" start="00:32:32.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's not, you have to duplicate the""" start="00:32:35.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""information and stuff,""" start="00:32:36.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is, oh, by the way,""" start="00:32:38.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm going to pass the Lemington,""" start="00:32:40.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is the name of the RSP clone.""" start="00:32:43.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Sorry, the integration with Emacs,""" start="00:32:45.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is LEM with a mustache.""" start="00:32:48.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: They had good news where it would do the same""" start="00:32:54.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""thing, where it would open up a slave Emacs,""" start="00:32:56.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because it was such a performance hog for""" start="00:33:00.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""retrieving all the emails.""" start="00:33:02.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: No. I mean, Emacs have a server,""" start="00:33:06.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""right? I can, in fact,""" start="00:33:08.559" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm using that for, I'm already puppeting.""" start="00:33:11.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Well, not puppeting. I'm already using""" start="00:33:13.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Maggots. So I have this.""" start="00:33:15.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Actually, let me copy.""" start="00:33:17.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I have this, which is usually a little bit,""" start="00:33:25.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm launching the Emacs daemon and then I'm""" start="00:33:28.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""launching Leviton. And then this is the kill""" start="00:33:31.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and this is the status,""" start="00:33:32.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is basically saying,""" start="00:33:33.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""run this and this is this,""" start="00:33:36.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is run maggot in this file.""" start="00:33:42.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""If you put it side by side,""" start="00:33:43.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you will check instantly that this is the""" start="00:33:48.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""buffer directory, LEM home,""" start="00:33:50.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and then the current file.""" start="00:33:54.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Because I'm launching it with the file.""" start="00:33:58.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So buffer directory, which is the directory""" start="00:34:03.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""of the buffer. So I'm already using maggot as""" start="00:34:09.239" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""a tool outside of LEM,""" start="00:34:13.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because I really like maggot.""" start="00:34:14.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And this is very easy to check.""" start="00:34:16.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Launch Emacs daemon. Okay.""" start="00:34:22.719" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And then I go to local projects.""" start="00:34:28.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Let's go to another 1 that is not LEM.""" start="00:34:31.719" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: You actually have weird ideas like running it""" start="00:34:37.199" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in daemon mode so you don't ever have to""" start="00:34:39.639" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""restart it or the images,""" start="00:34:40.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I guess, that LEM has.""" start="00:34:43.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: LEM does not have this kind of,""" start="00:34:46.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I will call it, it doesn't have like a demon""" start="00:34:53.719" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mode, so you have control separately,""" start="00:34:56.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but keep in mind that LEM,""" start="00:34:58.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's a common list program.""" start="00:35:01.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So if you use slime or Sly,""" start="00:35:03.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you can easily connect to them to hack on it.""" start="00:35:10.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: ever use that functionality,""" start="00:35:12.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like using it from another computer?""" start="00:35:14.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Do you Another computer,""" start="00:35:16.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think the same computer,""" start="00:35:17.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""or maybe Sage, but yeah,""" start="00:35:21.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's very...""" start="00:35:21.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Or from like your window,""" start="00:35:24.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""if you were using the window...""" start="00:35:26.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I can't remember the name of the window""" start="00:35:28.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""manager. Or if you were using...""" start="00:35:30.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""What? Yeah, yeah. Or using like stump,""" start="00:35:36.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""calling it from like stump WM or how often do""" start="00:35:40.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you use that REPL?""" start="00:35:41.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: SPCL? No. ThumbWM? I use it quite a lot.""" start="00:35:43.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I connect to a museum,""" start="00:35:44.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""some WM right now, and I use LEM to connect""" start="00:35:49.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to it, but I was using Emacs before.""" start="00:35:52.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And you can use Sly or Slime to connect to""" start="00:35:55.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""LEM. So the thing that is in Common List""" start="00:35:58.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""makes it this kind of already out-of-the-box""" start="00:36:00.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""connectivity between different...""" start="00:36:04.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: How many window managers have you used?""" start="00:36:06.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I've used that before.""" start="00:36:11.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I've also used, like right now I'm using""" start="00:36:13.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Sway. I've used Xmonad,""" start="00:36:14.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""DWM.""" start="00:36:16.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: This is awesome. What is the other 1?""" start="00:36:23.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I can't remember the name.""" start="00:36:25.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But it was like a few years ago.""" start="00:36:27.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I've been doing some DWM for like the last""" start="00:36:30.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I remember that. Go ahead.""" start="00:36:36.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: year, I think. Or 3. know,""" start="00:36:37.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's that I was... I don't know.""" start="00:36:41.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: I don't a couple""" start="00:36:43.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I'd like to have of days of my...""" start="00:36:44.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I remember that that window manager seemed to""" start="00:36:48.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""have some unique ideas that weren't""" start="00:36:53.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""necessarily available on like EWM and XMLNAD.""" start="00:36:56.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: So SoundLM, it's an interesting project.""" start="00:37:02.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But for example, I'll change...""" start="00:37:05.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So I don't have in this computer,""" start="00:37:06.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but in my other computer,""" start="00:37:08.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I change the mod line or bar,""" start="00:37:13.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""top bar, whatever, because the ThunderLVM""" start="00:37:18.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""doesn't only update it when you click,""" start="00:37:21.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""or you do some events or happen 1 minute.""" start="00:37:25.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So you can see here, this is not changing""" start="00:37:27.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""until I click.""" start="00:37:28.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's it.""" start="00:37:33.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 3]: AUDIENCE 1 Matthew, sorry.""" start="00:37:34.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I have a quick question for Matthew.""" start="00:37:36.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So is your talk going to be posted or did you""" start="00:37:43.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Go ahead. I gave them a recording.""" start="00:37:47.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""My talk was the K outline for journaling""" start="00:37:50.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 3]: give it live? right right it was I woke up""" start="00:37:53.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""too late for it Sorry,""" start="00:37:54.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so I came in and I just saw Bob Weiner""" start="00:37:58.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""answering questions So is your talk going to""" start="00:38:03.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""be on the page for your talk?""" start="00:38:06.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't""" start="00:38:07.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: see it there.""" start="00:38:08.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I could give you a link to it,""" start="00:38:11.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because I had, I hosted it on Mega to give it""" start="00:38:17.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to them, because when I emailed it,""" start="00:38:18.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 3]: Oh, okay. Is it""" start="00:38:22.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: it didn't work. on a monkey?""" start="00:38:22.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Download and watch it.""" start="00:38:23.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm probably going to post it on YouTube""" start="00:38:29.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""later. I, I had my face record with it,""" start="00:38:33.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I never got it edited together in time""" start="00:38:36.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 3]: Okay, if you could if you can put the link""" start="00:38:40.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""onto the onto the ether pad or something or""" start="00:38:43.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""onto the wiki then then I can find it and""" start="00:38:46.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""check it out. All right,""" start="00:38:49.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""thanks. Sorry to interrupt your time,""" start="00:38:53.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Fermin, but I figure we're heavily into the""" start="00:38:56.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""break anyways. FERMIN GENZIERIA-CHAPMANI""" start="00:38:57.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: No problem. I'm in an EMAX conference talking""" start="00:39:00.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""about all that I mean I'm already doing""" start="00:39:02.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""blasphemy so I""" start="00:39:04.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""think that's oh yeah notes so the thing is""" start="00:39:24.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""then as my point of view,""" start="00:39:26.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and the point of view probably of Sasaki-san,""" start="00:39:28.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""just a moment, I think,""" start="00:39:30.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""is very focused on an IDE more than a""" start="00:39:34.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""node-taking editor. More like an integrated""" start="00:39:40.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""development environment.""" start="00:39:41.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So node is like a second thing.""" start="00:39:45.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So not exactly the main focus.""" start="00:39:51.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And I know that Emacs does have a very strong""" start="00:39:54.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""community of Ormode users that use Emacs for""" start="00:39:58.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Ormode, which is the killer feature,""" start="00:40:00.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""1 of I'll do a feature.""" start="00:40:01.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'll do a feature of Emacs.""" start="00:40:04.456" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So I'm not the maintainer of porthole.""" start="00:40:09.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm sorry. I did add it to so I don't""" start="00:40:20.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""maintain the remote. I'm sorry,""" start="00:40:22.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'll pothole the USB. I'm only using it on""" start="00:40:27.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the Lamington. I cannot change anything.""" start="00:40:31.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: What are some interesting things you have""" start="00:40:39.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""with your window manager?""" start="00:40:40.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I do have elsewhere.""" start="00:40:43.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I can connect to it and hack it from my""" start="00:40:49.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""editor, which I think is really fun.""" start="00:40:53.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The way I can write, so I wrote a few""" start="00:40:56.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""packages for Soundallium.""" start="00:40:58.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So 1 of them is Proton,""" start="00:41:06.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which basically launches like a...""" start="00:41:10.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So Proton is like this wine thing that Valve""" start="00:41:18.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, I'm a user.""" start="00:41:22.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: did. OK, so this basically,""" start="00:41:24.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you have like a list of,""" start="00:41:26.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""let me check. No, we're just,""" start="00:41:32.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""sorry. This, So these all games are bought by""" start="00:41:38.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""me. They're not pirates in any way.""" start="00:41:41.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I can use this to to launch it.""" start="00:41:45.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Was that Dmenu or was that StumpWM menu?""" start="00:41:50.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: This is Dmenu. So I have,""" start="00:41:54.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I also contribute the Dmenu integration into""" start="00:42:02.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""StumwM. So I use Dmenu.""" start="00:42:05.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So like this, right?""" start="00:42:07.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah that's pretty cool.""" start="00:42:13.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You don't know how nice those things are""" start="00:42:15.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""until you start using those.""" start="00:42:16.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: The menu is very interesting and very...""" start="00:42:21.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Also I was using RoFi,""" start="00:42:24.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but...""" start="00:42:25.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I was also more... The other thing I was more""" start="00:42:29.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""mentioning is that also,""" start="00:42:31.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""being able to use D-Menu,""" start="00:42:32.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but being able to just have keyboard""" start="00:42:34.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""oriented? Everything fuzzy search narrowed""" start="00:42:38.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and No tabs no status bars like all of a""" start="00:42:45.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""sudden your mental model on how your computer""" start="00:42:47.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""operates goes through the roof and a lot of""" start="00:42:51.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs users Know what that is like Especially""" start="00:42:57.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""In conjunction with a window manager?""" start="00:43:01.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, I think so. I remember when I was...""" start="00:43:06.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So for me, I tried the Emacs window manager,""" start="00:43:11.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but it wasn't for me. Having a single thread""" start="00:43:16.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""window manager is scary.""" start="00:43:18.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And also games and some stuff wasn't working""" start="00:43:22.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""correctly, which it makes sense in some""" start="00:43:25.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""regards, using Emacs for window manager.""" start="00:43:27.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Oh""" start="00:43:30.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I've used it before I found that it wasn't as""" start="00:43:34.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like it. It's not as bad in practice because""" start="00:43:39.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The paper cuts you don't like to hit them""" start="00:43:43.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""every day So you make sure So you make sure""" start="00:43:45.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""your Emacs config is a lot nicer and doesn't""" start="00:43:48.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""have those slowdowns. Or you avoid those""" start="00:43:51.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""things. It forces you to make your Emacs""" start="00:43:54.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""config a lot more robust to speed.""" start="00:43:59.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, yeah. That's true,""" start="00:44:02.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yeah. The thing, yeah,""" start="00:44:04.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but still, I don't know,""" start="00:44:05.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: You'll still get the paper cuts,""" start="00:44:08.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but...""" start="00:44:09.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: like... Yeah, and my experience was not""" start="00:44:12.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""great. I'm not a person,""" start="00:44:16.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like, I don't want to have...""" start="00:44:17.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Not with LEM or Emacs.""" start="00:44:19.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I like to have different programs.""" start="00:44:22.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't want to like, I never was in like""" start="00:44:25.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs or you know, only Emacs.""" start="00:44:28.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I really love Emacs, GNU Emacs,""" start="00:44:30.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but only Emacs? No, no,""" start="00:44:33.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I like my browser, I like my,""" start="00:44:35.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you know, my Windows Manager,""" start="00:44:37.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""my, you know, I wasn't Emacs only.""" start="00:44:41.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs is my OS. Some people are,""" start="00:44:45.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is good. Different kind of a...""" start="00:44:48.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I have to say that I come from Vim,""" start="00:44:51.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like a long time ago. But I come from Vim,""" start="00:44:57.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so I'm using Evil Mode.""" start="00:44:58.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And I maybe have this kind of a...""" start="00:45:00.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yeah. So regarding Summoner.vm,""" start="00:45:05.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's... I like it because it's common Lisp,""" start="00:45:10.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but it don't have some,""" start="00:45:13.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this, I removed this. So I'm using another""" start="00:45:18.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""model line because the model line is not""" start="00:45:21.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""great. Everything else is a little bit weird""" start="00:45:24.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because you have frames similar to Emacs.""" start="00:45:28.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You have a frame. You have this window,""" start="00:45:33.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and then there's no nothing here.""" start="00:45:35.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, I've used it before.""" start="00:45:37.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That was definitely weird.""" start="00:45:39.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's also nice to be able to just...""" start="00:45:41.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Can't you put multiple windows?""" start="00:45:43.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Can't you duplicate windows?""" start="00:45:46.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Show the same window in 2 frames?""" start="00:45:48.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""NIGEL""" start="00:45:48.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: GANSZELA-WALSH Never tried that.""" start="00:45:51.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Never occurred to me that.""" start="00:45:54.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't know. Never tried that,""" start="00:45:57.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to be honest. Let me check.""" start="00:46:01.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""No idea. Item? I think so.""" start="00:46:07.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Because when you try to,""" start="00:46:10.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""at least not in an easy way.""" start="00:46:11.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""When you try to, so if I try to put a window""" start="00:46:13.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""here, let me move it so it,""" start="00:46:16.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and if I try to like, so it's,""" start="00:46:20.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yeah, no other window.""" start="00:46:21.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: So can you open the, what is that,""" start="00:46:24.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""discord or your browser?""" start="00:46:25.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Could you open that in both your frames?""" start="00:46:26.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I can I Side by side, but not the same""" start="00:46:34.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: I mean I do I can I can have I know""" start="00:46:37.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: can't your frames? 2 browsers you can do that""" start="00:46:38.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: browser I never occurred to me that,""" start="00:46:42.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: in DWM? You can't do that in XMLNet,""" start="00:46:46.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""at least I don't know what configuration""" start="00:46:48.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you'd have to do to get to be able to do that""" start="00:46:50.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in XMONAD.""" start="00:46:51.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: wow. Interesting. Maybe you can.""" start="00:46:54.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I never tried. Maybe you can?""" start="00:46:57.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""No idea. The interesting thing that I never""" start="00:47:03.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""use is that floating windows.""" start="00:47:05.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Never use floating windows,""" start="00:47:09.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but normal windows. You know,""" start="00:47:13.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""not. And SoundWM does have a weird support""" start="00:47:17.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for it. Now it works. But I don't like it.""" start="00:47:24.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""For me, it was a little bit rough,""" start="00:47:26.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the use of floating windows in SoundWM.""" start="00:47:29.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think they're way better now.""" start="00:47:32.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think, but yeah, I don't use it so...""" start="00:47:36.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But there is.""" start="00:47:40.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: You know, for me with the,""" start="00:47:43.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like, Emacs doing everything,""" start="00:47:45.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it's like, you got like Emacs,""" start="00:47:46.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you got shell, and then you got the gooey""" start="00:47:50.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Wild West. Yeah. Like,""" start="00:47:56.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""with Emacs, I know, I'll generally get,""" start="00:47:58.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""oh, this is going to be configured in?""" start="00:48:01.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's either gonna be shell script,""" start="00:48:04.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Python or Emacs. Oh wait,""" start="00:48:06.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""no, it's gonna be Emacs.""" start="00:48:07.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Variable's gonna be written in SecQ,""" start="00:48:09.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""period.""" start="00:48:10.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, I don't use too much scripting,""" start="00:48:16.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I'd like to, for example,""" start="00:48:18.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I had to do a, so the automatic installer""" start="00:48:21.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for, for Debian base, Debian stuff for Linux""" start="00:48:26.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for, for LEM. I was thinking of doing in bash""" start="00:48:30.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and I say, I don't want to do it in Bash.""" start="00:48:32.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So I just did it in SVC and Commodisp,""" start="00:48:35.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which does have like a scripting feature.""" start="00:48:37.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You can put a script and it will create your""" start="00:48:40.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""own script.""" start="00:48:41.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: 1 of the main people behind Next,""" start="00:48:45.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""he did a talk on using Common Lisp as a""" start="00:48:50.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""replacement for a shell.""" start="00:48:51.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yes, it was... I know him.""" start="00:48:58.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I know that he exists.""" start="00:49:00.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Next, I think it's a main maintainer of Nix,""" start="00:49:04.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, although his website's kind of,""" start="00:49:09.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think he took it down.""" start="00:49:10.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Ambrevar. Yeah, I think he,""" start="00:49:12.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yeah, he took it down.""" start="00:49:14.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: So if you want to, you can look at it in Time""" start="00:49:17.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Machine.""" start="00:49:17.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, I do have that article in my bookmarks,""" start="00:49:23.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think, somewhere. I remember reading that.""" start="00:49:26.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So also, I would like to keep separated""" start="00:49:30.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""things in that way to have shell and then""" start="00:49:32.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Emacs or LEM. Like for Emacs I use Viter.""" start="00:49:37.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't like that it has different,""" start="00:49:40.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you know.""" start="00:49:41.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: On the same time though,""" start="00:49:44.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I also don't like my terminal not to be able""" start="00:49:46.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to click URLs and I like I like my terminal""" start="00:49:52.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to have history and you know to scroll""" start="00:49:54.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""position copy paste You can do some of that""" start="00:49:58.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""stuff, but you know how that stuff go on the""" start="00:50:00.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""killer ring I kind of view it as like an""" start="00:50:01.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""alternative to shell.""" start="00:50:02.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Fair enough, but I think when some for my""" start="00:50:06.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""terminal, I only use it for navigate,""" start="00:50:08.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""remove stuff, so basic stuff.""" start="00:50:11.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""When I have to like, I don't know,""" start="00:50:14.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""edit something, just open the...""" start="00:50:17.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I like to use completion and narrowing to""" start="00:50:22.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""find my files. I kind of wish I could do that""" start="00:50:24.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: on the shell or like if you use""" start="00:50:26.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: more D-Menu to do that.""" start="00:50:27.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That would be, I'm sure,""" start="00:50:28.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""nicer.""" start="00:50:28.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: There's a lot of tools for terminals to do""" start="00:50:38.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that, right? But you have to configure all of""" start="00:50:39.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""them. Beam users are very aware of those""" start="00:50:41.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""tools. You know, having very good fuzzy""" start="00:50:46.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""finding of files and then all by the""" start="00:50:49.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""terminal. I do have a friend who is a user of""" start="00:50:53.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the Forbidden Editor, he's good,""" start="00:50:56.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that does have a lot of small,""" start="00:51:01.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like fuzzy finding, and so complete commands,""" start="00:51:09.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and call those images in the terminal,""" start="00:51:12.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""all sorts of crazy stuff.""" start="00:51:14.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That I think are not overkill,""" start="00:51:16.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I mean, if you want to use it,""" start="00:51:20.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""go ahead. So yeah. The thing is that,""" start="00:51:29.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So trickling back a little bit to LEM,""" start="00:51:32.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think an interesting thought that I have""" start="00:51:35.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""about LEM and I can do Emacs.""" start="00:51:37.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Not now, because LEM is a very small,""" start="00:51:40.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like literally people,""" start="00:51:43.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""at least developers and users,""" start="00:51:46.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I don't know, maybe 10 less.""" start="00:51:50.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But people may think, split the community,""" start="00:51:56.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""right? That's the main thing that should come""" start="00:51:58.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to my mind, split the community,""" start="00:51:59.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""maybe you, because that's true.""" start="00:52:01.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I mean, I'm not developing that much in Nui""" start="00:52:04.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""MacLisp because I'm developing them.""" start="00:52:06.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That's not that I'm a force that you might""" start="00:52:12.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""think exists or anything,""" start="00:52:13.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but you know, you're splitting a very small""" start="00:52:17.220" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""community. Not that LEM wants to do that or""" start="00:52:21.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""anything, or will be able to in any way,""" start="00:52:24.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but you know what I mean.""" start="00:52:25.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I thought about that, And I think it's an""" start="00:52:32.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""interesting concern. But that concern also""" start="00:52:40.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""stops innovation in some way.""" start="00:52:42.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I think you can, if you look at the example""" start="00:52:46.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""of how many EMAX talks are related to""" start="00:52:50.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""knowledge management and not all and like for""" start="00:52:54.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""instance denote and Orgrim don't really work""" start="00:52:57.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""together all that well they split the""" start="00:53:01.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""community so to say I don't think they make""" start="00:53:03.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it weaker at all, though.""" start="00:53:04.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think you were saying competition is good,""" start="00:53:08.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but yeah, competition is good.""" start="00:53:10.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, I agree on that.""" start="00:53:12.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I want to put it in the...""" start="00:53:13.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But, you know, I'm doing the devil's advocate""" start="00:53:15.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: something, that's... The developer gates in""" start="00:53:18.252" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this regard. Like""" start="00:53:18.308" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: in this regard. If someone wants to say if""" start="00:53:18.327" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""someone wants to like say something that""" start="00:53:19.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""maybe, you know, because some people still""" start="00:53:22.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""remember the Emacs versus X Emacs thing in""" start="00:53:30.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the past, you know, that the split of the and""" start="00:53:34.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That was good in some way but also bad in""" start="00:53:38.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""others like the compatibility was a little""" start="00:53:39.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""bit of a hell You know at the end Emacs""" start="00:53:42.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""failed, no Emacs But at that time it wasn't""" start="00:53:46.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that clear and some people like it wasn't""" start="00:53:50.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""there. And I can understand that kind of a""" start="00:53:53.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""feeling.""" start="00:53:53.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Well sometimes the steps forward you end up""" start="00:53:58.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""going Like you're on a hill and you want to""" start="00:54:02.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: the way the path to get up to""" start="00:54:05.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: get to a higher hill, but that higher hill""" start="00:54:06.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""goes down and up. It doesn't mean that even""" start="00:54:10.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""if you know you're going down,""" start="00:54:12.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it doesn't mean that it was a mistake.""" start="00:54:13.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay, fair enough. And also another""" start="00:54:19.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""interesting thing that I want to envision in""" start="00:54:22.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the future, if I have time or someone wants""" start="00:54:25.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to help me with, is I want them to have""" start="00:54:28.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""different language for extension,""" start="00:54:30.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""different Lisp for extension,""" start="00:54:32.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""not only common Lisp, but Scheme closure.""" start="00:54:36.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And maybe not EmacLisp probably,""" start="00:54:39.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: that what Guile Emacs is trying to do?""" start="00:54:46.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: but yeah. And funny enough- Isn't Guile Emacs""" start="00:54:47.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""tried to add Guile support to,""" start="00:54:50.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but Guile is not scheme.""" start="00:54:52.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Well, it's kind of scheme,""" start="00:54:53.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but it's not all schemes,""" start="00:54:54.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is, you know, and it was just to""" start="00:54:58.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""replace EmacLisp with Gile.""" start="00:55:02.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You have 2 both. It was similar in that way,""" start="00:55:06.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but the thing is, Common Lisp does have a lot""" start="00:55:12.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""of interesting things.""" start="00:55:12.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So someone wrote a closure in Common Lisp.""" start="00:55:16.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Which is called Cloture.""" start="00:55:20.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Someone wrote, well it's on the way but it's""" start="00:55:29.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""getting there, a standard scheme in Common""" start="00:55:35.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Lisp. So to add support to LEM,""" start="00:55:39.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""will be as easy as import package,""" start="00:55:44.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and you have, And if that language,""" start="00:55:46.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which usually does, supports very well""" start="00:55:49.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""interaction between the host language and the""" start="00:55:51.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""language that tries to provide,""" start="00:55:52.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you will mostly automatically have new""" start="00:55:57.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""language for the editor.""" start="00:55:58.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I think the more interesting hanging fruit""" start="00:56:05.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""would be like using Next to scrape websites,""" start="00:56:09.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""download CSV bank statements,""" start="00:56:12.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""integrating with like password managers and""" start="00:56:15.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""or using... yeah you could still do with""" start="00:56:27.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: But isn't that more like next thing oh yeah""" start="00:56:30.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yeah I""" start="00:56:31.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: common list though mean what's your your""" start="00:56:32.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""other options would be Selenium,""" start="00:56:34.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""JavaScript, Next already gives you the REPL""" start="00:56:41.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for that. Or when you had that Ambryvar talk,""" start="00:56:47.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""when he, I don't know if you watched it,""" start="00:56:50.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but when you use a shell and a command takes""" start="00:56:52.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""takes a while It just automatically takes you""" start="00:56:56.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""back into your shell and says I'll just let""" start="00:56:58.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""this run in the background or being able to""" start="00:57:00.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""more easily run commands in parallel.""" start="00:57:02.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: But that's not like Nix stuff,""" start="00:57:13.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: The Ambrivar, the shell 1,""" start="00:57:18.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: right? Not like? When he did it,""" start="00:57:21.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""he. Because 1""" start="00:57:23.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: wasn't. of the things He did in that when he""" start="00:57:25.340" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""was using the repl in place of the shell is 1""" start="00:57:30.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""of the things in there was if,""" start="00:57:31.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""let's say you were compiling a program,""" start="00:57:33.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that takes a while. If it took longer than""" start="00:57:36.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like 3 seconds or something along those""" start="00:57:40.240" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""lines, it would kick you back into the shell""" start="00:57:42.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and say, oh, we're waiting for this program""" start="00:57:44.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, interesting. And""" start="00:57:48.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: to run, to finish. then you could,""" start="00:57:48.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""and then it had back reference support.""" start="00:57:51.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So you could say, Oh, app search for this""" start="00:57:55.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""program. And then with the,""" start="00:57:58.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""with the shell, I, when I want to search,""" start="00:58:00.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'll then grep through that list to narrow it""" start="00:58:04.460" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""down even further, but I do a whole new""" start="00:58:06.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""search. It just says, oh,""" start="00:58:08.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""just grep through what I already searched.""" start="00:58:10.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Just grep through the results of the command""" start="00:58:14.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""that's 3 commands ago.""" start="00:58:15.940" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Interesting. So it""" start="00:58:17.980" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: runs instantly. Or look for my build errors""" start="00:58:23.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in my compilation output,""" start="00:58:25.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: rather than trying to build it again grepping""" start="00:58:29.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""for the errors.""" start="00:58:30.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I was checking, so where's that project?""" start="00:58:33.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I was looking for it. You know,""" start="00:58:36.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the... Yeah, I want to check the,""" start="00:58:44.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: There was a talk. I also had a webpage.""" start="00:58:48.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: you know... This red bull?""" start="00:58:55.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""No, this is not what I meant.""" start="00:58:58.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: What is it? What is it?""" start="00:59:34.174" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I cannot find the... I was trying to find""" start="00:59:47.664" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: the repo for... It's C-L-E-S-H,""" start="00:59:54.180" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""like a unit shell for interface with for""" start="00:59:59.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""common Lisp? Is that the thing?""" start="01:00:02.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: I don't know. I'm""" start="01:00:09.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: trying to find the link to his old,""" start="01:00:12.260" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""no longer website. Website.""" start="01:00:16.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Skip. Technical issues.""" start="01:00:21.500" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Maybe this 1.""" start="01:00:23.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I cannot find it.""" start="01:00:35.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I got it.""" start="01:00:37.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: Go to that link. Okay.""" start="01:00:51.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: There's also a FOSDM target associated with""" start="01:01:02.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it too.""" start="01:01:02.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh yeah, interesting. Clash and CH.""" start="01:01:07.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""CH. Oh, I was looking at the clesh.""" start="01:01:13.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Clish, so the, let's check for it.""" start="01:01:18.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The other 1 is shell and camel.""" start="01:01:23.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""This 1.""" start="01:01:24.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: Interesting. Oops. Close Oops.""" start="01:01:37.505" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, it's a GNU project.""" start="01:01:40.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Oh, interesting.""" start="01:01:44.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: The other thing that was interesting there is""" start="01:01:51.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you use those disk images,""" start="01:01:52.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""LISP images, to have some of your common LISP""" start="01:02:00.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""utilities or programming libraries that you""" start="01:02:05.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""utilize in tandem with your REPL.""" start="01:02:07.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So you can easily pull up a more featureful""" start="01:02:13.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""or a REPL that has more tools in it than by""" start="01:02:18.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""default.""" start="01:02:18.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Interesting. So yeah, that's,""" start="01:02:21.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""yeah, I mean, that will be,""" start="01:02:24.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it will be fairly, no,""" start="01:02:26.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""no, easy. Well, easy, but not,""" start="01:02:28.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But this can be integrated into LEM probably.""" start="01:02:33.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Very, you know, not that easy because you""" start="01:02:36.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""have to change the few things.""" start="01:02:38.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""But this can be, you know.""" start="01:02:43.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Well, as example, he just...""" start="01:02:47.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Well, 1 of the things that was in the talk,""" start="01:02:49.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""1 of the main ideas was,""" start="01:02:51.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""let's just, rather than trying to make the""" start="01:02:56.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""shell closer to a REPL,""" start="01:02:57.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""let's make a REPL closer to a shell,""" start="01:03:00.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""make it to where we can easily run Linux""" start="01:03:03.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""programs in it, and then use the rest of the""" start="01:03:07.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""REPL goodness, make it to where parentheses""" start="01:03:10.120" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""are easy to use, like paraedit,""" start="01:03:12.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And then all of a sudden you have a nicer""" start="01:03:20.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""shell. Not really shell,""" start="01:03:24.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but.""" start="01:03:24.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, this is huge.""" start="01:03:30.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 6]: Hi, folks. Sorry for the interruption.""" start="01:03:33.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's Leo from the general track.""" start="01:03:35.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""We are about to go back live on the""" start="01:03:39.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""development track, so you can continue the""" start="01:03:41.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""discussion. You know, we are recording""" start="01:03:43.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""everything and you seem to be having a great""" start="01:03:45.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""amount of fun to issue the need for lunch,""" start="01:03:47.520" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""at least for the people in the US.""" start="01:03:49.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I just want to let you know,""" start="01:03:51.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in 2 minutes' time, we will be moving back to""" start="01:03:53.680" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the rest of the talk for the afternoon,""" start="01:03:54.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but feel free to stay in a room and keep""" start="01:03:56.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""discussing. All right?""" start="01:03:57.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Thank you. All right.""" start="01:04:01.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 6]: It might be a little brutal in 2 minutes,""" start="01:04:03.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so if you have your watch synchronized at 7""" start="01:04:07.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""sharps, so in 2 minutes,""" start="01:04:09.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""it'll cut off.""" start="01:04:10.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay. Bye-bye. Bye. Oh my.""" start="01:04:19.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yeah. Interesting stuff indeed.""" start="01:04:23.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: to listen to it after you're done with the""" start="01:04:29.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: I guess you have Have you""" start="01:04:32.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: comp. ever listened to that talk before?""" start="01:04:33.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""The 1 that's in that webpage,""" start="01:04:38.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the FOSDEM 1.""" start="01:04:39.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Which 1? Sorry? 0 yeah,""" start="01:04:40.840" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I in fact saw him live in the FOSDEM 2020.""" start="01:04:44.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I a little bit. 2020.""" start="01:04:50.053" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So we him""" start="01:04:50.166" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: talked with him a little bit The first time""" start="01:04:51.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""is here in well here in Europe here in""" start="01:04:55.760" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Brussels like 3 hours away or 2 hours away in""" start="01:05:01.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""plane from where I am.""" start="01:05:02.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: 1 of the things that's kind of interesting""" start="01:05:05.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""with, you have some of""" start="01:05:06.900" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: the people who come from Europe to the US and""" start="01:05:09.060" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""they're like, oh, I want to visit all the""" start="01:05:11.820" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""corners of the US in a couple of days.""" start="01:05:13.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And it's like, No, US is the size of Europe.""" start="01:05:17.920" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: The""" start="01:05:19.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: states are the size of their countries.""" start="01:05:21.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""You don't...""" start="01:05:23.140" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: I know. I know. It's very...""" start="01:05:27.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""It's huge. And it's like 6 hours different""" start="01:05:30.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""from coast to coast, something like that.""" start="01:05:32.280" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yeah, and that's driving as fast as you can""" start="01:05:38.000" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""on the freeway, on the best roads that you""" start="01:05:39.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""possibly can, not taking...""" start="01:05:41.160" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, that would be...""" start="01:05:45.700" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So the thing that I try to do also with LEM""" start="01:05:53.400" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""is to move my workflow from LEM to Emax,""" start="01:05:57.880" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""so for Emax to LEM, use it more.""" start="01:06:01.620" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""And I hope to, we still have a long way to go""" start="01:06:07.080" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in terms of usability,""" start="01:06:08.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""in terms of other things,""" start="01:06:10.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because we need more power.""" start="01:06:12.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So This is also my attempt to do some""" start="01:06:18.420" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""publicity to the Blend project itself,""" start="01:06:20.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to need to add more users,""" start="01:06:23.100" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""to be willing to try and to fail trying,""" start="01:06:26.200" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""because we still have some rough edges.""" start="01:06:29.640" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""Yeah, just trying to do that,""" start="01:06:38.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""which is, and I apologize to the Emaclist""" start="01:06:41.720" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""community, which I'm part of,""" start="01:06:43.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I don't want to like,""" start="01:06:44.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""disencourage the use of getting Emacs anyway.""" start="01:06:47.020" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I think both are awesome.""" start="01:06:48.960" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I want to anyone to get a real impression.""" start="01:06:51.300" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: What do""" start="01:06:57.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: you think? PlasmaStrike,""" start="01:06:57.740" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""you have a very powerful name.""" start="01:07:01.560" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: I don't think that's something to worry""" start="01:07:07.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""about. I don't personally,""" start="01:07:09.660" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""but I'm going to watch the EMMS talk.""" start="01:07:15.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""That's something that I don't really use too""" start="01:07:17.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""much on my Emacs config.""" start="01:07:20.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So I'm going to let you go.""" start="01:07:22.600" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: OK, yeah, I'm going to go.""" start="01:07:24.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm going to maybe watch the garbage""" start="01:07:26.320" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""collector talk, which is interesting.""" start="01:07:27.800" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So thank you all very much.""" start="01:07:32.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm gonna go. Thanks for the questions and""" start="01:07:35.860" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""all that. I think I hope I answered correctly""" start="01:07:40.811" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: is part of the value of being part of this is""" start="01:07:47.040" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: all of them. Yeah, I figure this that's a way""" start="01:07:50.580" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 4]: conversations. So of saying thank you for""" start="01:07:52.540" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""people sharing interesting talks.""" start="01:07:54.480" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 2]: Indeed. Thank you all very much for going to""" start="01:07:57.780" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""the Emacs conf and to watch me.""" start="01:08:02.380" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""So thank you all very much.""" start="01:08:06.440" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""I'm going to go do that.""" start="01:08:09.360" video="qanda-emacsen" id="subtitle"]]
+[[!template text="""[Speaker 0]: See you.""" start="01:08:10.640" video="qanda-emacsen" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20emacsen%3A%20The%20Emacsen%20family%2C%20the%20design%20of%20an%20Emacs%20and%20the%20importance%20of%20Lisp)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/emacsen-before.md b/2023/info/emacsen-before.md
new file mode 100644
index 00000000..151dac9d
--- /dev/null
+++ b/2023/info/emacsen-before.md
@@ -0,0 +1,31 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 19-min talk; Q&A: BigBlueButton conference room
+Status: TO_INDEX_QA
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="emacsen-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="emacsen-mainVideo" data="""
+00:00.000 Introduction
+00:17.000 Why Lisp matters
+01:26.640 Why Emacs Lisp was chosen
+02:54.841 Other "Emacsen"
+03:38.581 Why not Common Lisp?
+06:39.120 Common Lisp is still not dead or is always dead
+08:30.080 Lem is a nice Emacsen implementation
+08:58.260 Why not just use GNU Emacs?
+10:31.080 Why Lem
+14:03.080 Similarities and differences
+15:49.600 Demo
+
+"""]]<div></div>Duration: 18:28 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--main.webm">Download --main.webm (32MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/qgJ84RLV2FZYyeSusDskwU">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="emacsen-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="emacsen-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.opus"></audio></div><div></div>Duration: 1:08:14 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.opus">Download --answers.opus (39MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emacsen--the-emacsen-family-the-design-of-an-emacs-and-the-importance-of-lisp--fermin--answers.webm">Download --answers.webm (253MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/emacsen-nav.md b/2023/info/emacsen-nav.md
new file mode 100644
index 00000000..976d9935
--- /dev/null
+++ b/2023/info/emacsen-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/flat">A modern Emacs look-and-feel without pain</a>
+Next by track: <a href="/2023/talks/gc">emacs-gc-stats: Does garbage collection actually slow down Emacs?</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/emms-after.md b/2023/info/emms-after.md
new file mode 100644
index 00000000..a9b97368
--- /dev/null
+++ b/2023/info/emms-after.md
@@ -0,0 +1,1371 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="emms-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The Sound of Emacs, Emms, The Emacs Multimedia System.""" start="00:00:00.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Hi, I'm Yoni Rabkin and I'll be talking about Emms;""" start="00:00:05.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the Emacs Multimedia System.""" start="00:00:09.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""What is Emms?""" start="00:00:11.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms displays and plays media from within Emacs""" start="00:00:14.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""using a variety of external players""" start="00:00:18.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and from different media sources.""" start="00:00:20.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms can run as a minimalistic player""" start="00:00:23.540" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which is controlled with no more than""" start="00:00:26.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a handful of simple M-x commands,""" start="00:00:28.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or as a fully-fledged interactive media browser and player.""" start="00:00:31.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms can display album art, play streaming audio,""" start="00:00:36.060" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""tag music files, search for lyrics,""" start="00:00:40.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""provide MPD connectivity, control the volume,""" start="00:00:43.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and more. Much more.""" start="00:00:46.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The Emms project acts like Emacs in microcosm.""" start="00:00:49.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It slowly but surely grows bigger""" start="00:00:53.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and gets ever more features.""" start="00:00:56.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Perhaps Emms will one day even have a text editor.""" start="00:00:58.480" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""The structure of this talk""" start="00:01:03.320" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The structure of this talk:""" start="00:01:03.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""We'll start with an introduction to Emms.""" start="00:01:05.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This is the practical part.""" start="00:01:08.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Then, a bit about how Emms works. That's the technical part.""" start="00:01:10.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Finally, how we work. All about Emms development.""" start="00:01:15.880" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Introduction to Emms: The practical part""" start="00:01:21.320" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Introduction to Emms: The practical part:""" start="00:01:21.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I want this talk to be of immediate use to people,""" start="00:01:25.021" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""so I'm going to present a quick TL;DR of the Emms manual""" start="00:01:28.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""concerning installation and use.""" start="00:01:33.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""By the end of this part you should be able to""" start="00:01:36.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""install, configure, and use Emms in a variety of ways.""" start="00:01:38.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Where can I get Emms?""" start="00:01:45.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms is distributed primarily via GNU ELPA.""" start="00:01:48.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""So it's really only a M-x list-packages away at any moment.""" start="00:01:54.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""There's also a website hosted at gnu.org.""" start="00:02:02.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Among other things on the website, you'll find""" start="00:02:07.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a copy of the friendly, robust, and up-to-date user manual.""" start="00:02:11.020" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Installing Emms has become progressively easier over time""" start="00:02:21.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and will continue to get easier.""" start="00:02:25.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""In the bad old days, it required downloading a tarball""" start="00:02:28.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and compiling a C language shim""" start="00:02:32.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to enable reading metadata from media files.""" start="00:02:35.060" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""But those days are long gone, and installing Emms is now""" start="00:02:38.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""as easy as invoking M-x list-packages,""" start="00:02:43.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""installing the Emms package, and placing as few as""" start="00:02:47.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""2 or 3 lines of configuration in your Emacs initialization.""" start="00:02:51.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""So after the package is installed via ELPA,""" start="00:02:57.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""you can add these few lines.""" start="00:03:02.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-all` will make available all of the stable features""" start="00:03:08.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which are shipped with Emms.""" start="00:03:12.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The `emms-player-list` variable is a list of players""" start="00:03:15.740" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""like MPV, MPlayer, VLC, etc.""" start="00:03:20.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms will call and control these external players""" start="00:03:25.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to play your media.""" start="00:03:29.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The variable `emms-info-functions` is a list of ways""" start="00:03:32.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""for Emms to read the metadata in your media files""" start="00:03:36.660" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""so that Emms can display song title, artist name,""" start="00:03:40.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""year of production, etc.""" start="00:03:45.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The `emms-info-native` feature in the setup example""" start="00:03:49.480" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is the built-in metadata reader""" start="00:03:55.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""written entirely in Emacs Lisp.""" start="00:03:58.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""But there are also other backends""" start="00:04:01.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which can call external programs for info""" start="00:04:04.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""such as TinyTag, the TagLib library, exiftool, and so on.""" start="00:04:07.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""You can then old-school restart your Emacs""" start="00:04:14.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or simply evaluate the above couple of lines to get going.""" start="00:04:17.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Now that we have Emms installed and configured,""" start="00:04:22.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""we should load some media for player.""" start="00:04:26.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""There are multiple ways to load media into Emms for playing.""" start="00:04:29.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""They can be directories with local files,""" start="00:04:32.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""synchronized from a remote instance of""" start="00:04:36.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a music player daemon, PLS or M3U playlists,""" start="00:04:38.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a list of URLs for streaming,""" start="00:04:44.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or even Emms' own native playlist format""" start="00:04:47.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which is unsurprisingly a just serialized Emacs Lisp.""" start="00:04:51.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""No matter how you add tracks to Emms,""" start="00:04:57.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""you'll end up with a playlist.""" start="00:05:00.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A fundamental strength of Emms is that each playlist""" start="00:05:03.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is a regular Emacs buffer and the track listing therein""" start="00:05:08.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is nothing more than text lines with property overlays.""" start="00:05:13.480" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This means that you can navigate, search, copy,""" start="00:05:17.860" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and edit an Emms playlist buffer""" start="00:05:21.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""just as you would any Emacs buffer.""" start="00:05:24.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If you want to reorganize the tracks in the playlist,""" start="00:05:28.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""then you can simply kill yank the tracks""" start="00:05:31.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""just as you would any buffer with lines of text,""" start="00:05:33.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and the same can be done between multiple playlist buffers.""" start="00:05:36.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""One of the most straightforward ways to add media""" start="00:05:42.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is to invoke a command like `M-x emms-add-directory-tree`.""" start="00:05:46.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""You can point it to the top of a set of directories""" start="00:05:51.940" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with playable files for Emms to traverse.""" start="00:05:55.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Another rather convenient method is to mark files in Dired""" start="00:06:00.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and to invoke `emms-add-dired`.""" start="00:06:05.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I definitely use this one a lot.""" start="00:06:09.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The Emms playlist mode binds""" start="00:06:11.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a number of useful keys and commands.""" start="00:06:16.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It's highly recommended that you either""" start="00:06:19.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""read the friendly manual""" start="00:06:23.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or hit &quot;C-h m&quot; in a playlist buffer to discover them.""" start="00:06:25.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Now we have a playlist buffer with a number of tracks,""" start="00:06:32.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""so the next step is going to be playback.""" start="00:06:35.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms can be used as a minimalistic player""" start="00:06:40.820" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with nothing more than a handful of commands.""" start="00:06:44.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Once there is a current Emms playlist,""" start="00:06:48.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""invoking emms-start will begin playing the current track.""" start="00:06:51.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Now of course in a new playlist""" start="00:06:57.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that would be the first track.""" start="00:07:00.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Now emms-next, emms-pause, and emms-stop""" start="00:07:02.580" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""do exactly what you think they do.""" start="00:07:07.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""To visit the current playlist,""" start="00:07:11.260" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""you can invoke M-x emms-playlist-mode-go,""" start="00:07:13.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which is a long command I personally bind to &quot;M-f12&quot;.""" start="00:07:17.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""You'll be taken to the current playlist buffer.""" start="00:07:22.700" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""While you can have multiple playlist buffers,""" start="00:07:25.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""only one is current for the purposes of playback commands.""" start="00:07:29.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The playlist buffer has keys bound""" start="00:07:35.780" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to control the media being played.""" start="00:07:38.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-seek-forward` and `emms-seek-backwards` allow you""" start="00:07:39.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to scrub along the media being played.""" start="00:07:44.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Which commands are available is a function of""" start="00:07:49.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the player backend being employed.""" start="00:07:51.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The simplest of players may have nothing more""" start="00:07:54.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""than the ability to play, stop, and seek,""" start="00:07:56.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but others may implement a plethora of commands.""" start="00:07:59.560" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""The modeline""" start="00:08:04.240" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The Modeline: Emms will by default display""" start="00:08:04.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the name of the currently playing track in the mode line""" start="00:08:08.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with information such as playing time.""" start="00:08:11.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The mode line format is controlled""" start="00:08:15.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""via the `emms-mode-line-format` variable""" start="00:08:15.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and the `emms-mode-line-playlist-current` function.""" start="00:08:20.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Metadata and the cache.""" start="00:08:27.140" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It would be sufficient for emms to simply list""" start="00:08:31.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the file names or urls of each piece of media,""" start="00:08:34.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but unless you name your music and media""" start="00:08:38.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with obsessive consistency and precision,""" start="00:08:41.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""not that there is anything wrong with that""" start="00:08:43.940" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""then the resulting list will be a bit of an eyesore.""" start="00:08:46.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Moreover, there are a lot of other useful metadata""" start="00:08:50.860" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""in the media files, including cool stuff like album art.""" start="00:08:54.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""So instead of just files, Emms will try""" start="00:08:58.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to extract metadata from each track""" start="00:09:01.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and display a nicely-formatted track listing.""" start="00:09:04.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The format can be controlled by customizing""" start="00:09:08.220" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the variable `emms-track-description-function`.""" start="00:09:10.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms uses so-called info methods to extract""" start="00:09:15.460" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the metadata from each file.""" start="00:09:19.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-info-native`, which I mentioned before,""" start="00:09:22.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is the built-in metadata reader written in Emacs Lisp.""" start="00:09:25.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It provides support for Ogg Vorbis, Ogg Opus, FLAC, and MP3.""" start="00:09:30.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""However, if you have media in other formats,""" start="00:09:37.660" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""you can also add info methods""" start="00:09:40.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to the `emms-info-functions` list,""" start="00:09:42.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which call external programs such as exiftool,""" start="00:09:45.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the LibTag library, tiny-tag, etc. to read file metadata.""" start="00:09:48.700" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Since reading metadata takes time""" start="00:09:55.420" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and that metadata doesn't change very often,""" start="00:09:58.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms builds a cache as it extracts""" start="00:10:01.340" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the information from each file.""" start="00:10:04.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The first time loading of thousands of tracks""" start="00:10:06.860" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""into the emms cache may take a while,""" start="00:10:09.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but as is the nature of caching, subsequent loads""" start="00:10:13.260" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""will be nearly instantaneous.""" start="00:10:17.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""To ease loading huge media collections,""" start="00:10:20.060" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""emms also can populate the cache asynchronously,""" start="00:10:22.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""so that your emacs isn't locked up in the interim.""" start="00:10:26.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Let's talk about streams and URLs.""" start="00:10:30.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Not all playlist entries need to be associated with files.""" start="00:10:33.780" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It's possible to add streaming playlists""" start="00:10:37.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and URLs to any playlist.""" start="00:10:39.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms also comes with a built-in eclectic list""" start="00:10:42.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""of streaming audio stations to get you started.""" start="00:10:46.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Any playlist entry can be a URL,""" start="00:10:50.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and that URL will be passed on to the media player backend,""" start="00:10:52.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which can play it, if any.""" start="00:10:56.720" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Meta-playlist mode""" start="00:11:01.200" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Meta-playlist mode:""" start="00:11:01.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms also has meta-playlist mode""" start="00:11:03.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to help manage multiple playlists.""" start="00:11:08.300" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""When you invoke meta-playlist mode,""" start="00:11:11.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""you will see a listing of all of the current Emms playlists,""" start="00:11:13.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and this mode binds a handful of useful keybindings""" start="00:11:16.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to help manage those playlists.""" start="00:11:22.000" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""The browser""" start="00:11:29.860" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The Browser:""" start="00:11:29.860" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Music doesn't always lend itself to being viewed""" start="00:11:31.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""as a series of discrete files.""" start="00:11:35.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""While there may be a good taxonomy of music""" start="00:11:38.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that can be reflected using directories and filenames,""" start="00:11:41.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""there are other aspects which cannot.""" start="00:11:45.460" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This is especially true when you consider that""" start="00:11:49.100" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""unlike many computer file taxonomies,""" start="00:11:51.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""music files may contain""" start="00:11:55.300" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a lot of self-descriptive information""" start="00:11:56.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""in the form of metadata,""" start="00:11:58.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""such as the year a work was published, the composer,""" start="00:12:00.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the performing artist, etc.""" start="00:12:04.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Therefore, it makes sense for Emms to enable""" start="00:12:07.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a different view into a media collection""" start="00:12:11.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which is based on the cached metadata.""" start="00:12:13.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The browser interface binds a host of keys""" start="00:12:17.060" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to help navigate the tree structure""" start="00:12:19.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""of the metadata information.""" start="00:12:22.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Since browser display""" start="00:12:24.540" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is not predicated upon directory structure,""" start="00:12:25.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""you can invoke functions such as `emms-browse-by-album`,""" start="00:12:28.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or `emms-browse-by-artist`, etc.""" start="00:12:32.940" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to view the collection in different ways.""" start="00:12:35.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms can do a lot more,""" start="00:12:42.180" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but covering it all would take too much time.""" start="00:12:43.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I do recommend opening the fine Emms manual""" start="00:12:47.020" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and getting to know some additional features""" start="00:12:50.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""such as sorting tracks in playlists,""" start="00:12:52.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""sorting and filtering in the browser,""" start="00:12:55.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""editing track information,""" start="00:12:57.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""deriving a new playlist from an existing playlist,""" start="00:12:59.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the music player daemon, lyrics display, volume control,""" start="00:13:01.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""bookmarks, GNU FM, and Dbus/Mpris support.""" start="00:13:07.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I hope this was a useful introduction to Emms.""" start="00:13:13.360" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""How Emms works: The technical part""" start="00:13:19.920" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""How Emms Works: The technical part:""" start="00:13:19.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This part is an overview of how Emms works.""" start="00:13:23.220" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""By the end of this, you should be familiar enough""" start="00:13:26.820" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with Emms internals to hack on it. Hint hint.""" start="00:13:29.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A short history of Emms""" start="00:13:34.740" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms is 20 years old as of the time of writing.""" start="00:13:37.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Old enough to drink in many countries.""" start="00:13:42.940" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This means it was developed back in 2003""" start="00:13:45.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""for emacs 21.2 or thereabouts.""" start="00:13:48.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""As developers, we don't go around looking to""" start="00:13:53.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""replace code just because it's old.""" start="00:13:56.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""On the other hand, some parts were inadequate""" start="00:13:58.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or just didn't age gracefully.""" start="00:14:01.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""And we have been partially or completely rewriting those.""" start="00:14:04.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I became the maintainer of Emms about a decade ago,""" start="00:14:10.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but I didn't start the project.""" start="00:14:13.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Jorgen Schäfer started the project.""" start="00:14:16.100" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I reached out to Jorgen""" start="00:14:21.020" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and he kindly shared some of his recollections.""" start="00:14:22.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Jorgen states that Emms was born back""" start="00:14:25.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""when the music format wars raged.""" start="00:14:28.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""MP3 was the standard, but overshadowed with patent issues.""" start="00:14:31.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""In fact, Technicolor and Fraunhofer IIS""" start="00:14:38.700" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""only stopped licensing their patents for MP3""" start="00:14:42.480" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""as recently as April of 2017.""" start="00:14:45.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Jorgen said that, and I quote,""" start="00:14:49.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""&quot;I needed a tool that was player agnostic""" start="00:14:53.540" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and that could deal with a large collection of music files.""" start="00:14:56.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""And I did not want any of the GUI music players""" start="00:14:59.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that existed back then.""" start="00:15:02.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Primarily, actually, because I did not want""" start="00:15:04.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to be switching windows to skip to the next song.""" start="00:15:07.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If I remember correctly,""" start="00:15:11.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I had just a shell script before that.""" start="00:15:12.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""But I figured I lived in Emacs, so why not write a tool""" start="00:15:16.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that I can control my music from Emacs""" start="00:15:20.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""without ever having to leave Emacs?&quot; Unquote.""" start="00:15:23.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""We can see that Jorgen's motivations were of the best kind,""" start="00:15:27.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to stay in Emacs.""" start="00:15:32.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms, an architecture of sensible abstractions.""" start="00:15:35.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms can be divided into a number of parts.""" start="00:15:40.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The core, tracks, playlists, sources, players,""" start="00:15:44.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""info, cache, and ancillary.""" start="00:15:48.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Now David J. Wheeler once said""" start="00:15:51.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that all problems in computer science""" start="00:15:53.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""can be solved by another level of indirection,""" start="00:15:56.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""except of course for the problem""" start="00:15:59.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""of too many layers of indirection.""" start="00:16:01.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms core has survived this long""" start="00:16:04.420" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""because it makes sensible and flexible coding abstractions.""" start="00:16:07.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Keep this in mind as we explore the implementation.""" start="00:16:11.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This following part of the talk will also be invaluable""" start="00:16:15.500" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""if you want to hack on Emacs.""" start="00:16:18.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Another hint.""" start="00:16:21.560" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""The Emms core""" start="00:16:23.820" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The Emms core.""" start="00:16:23.820" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The core defines tracks, playlists,""" start="00:16:25.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a way to start and stop playback,""" start="00:16:29.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""as well as ways to proceed to the next track.""" start="00:16:31.760" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Tracks""" start="00:16:36.440" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Tracks:""" start="00:16:36.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms tracks consist of a list whose CAR is the symbol track,""" start="00:16:38.460" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and CADR is an alist starting with""" start="00:16:44.780" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the association of `type'.""" start="00:16:47.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Type can be something like file, streamlist, URL, etc.""" start="00:16:50.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A track of classical music from Bach's Art of Fugue""" start="00:16:56.740" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""may look something like this.""" start="00:17:00.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""While a track may contain many associations,""" start="00:17:04.380" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the number of associations remains a small constant""" start="00:17:07.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""from the perspective of computational steps required""" start="00:17:11.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to find any particular association.""" start="00:17:14.200" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Playlist""" start="00:17:18.460" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Playlist:""" start="00:17:18.460" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""An Emms playlist consists of an Emacs buffer""" start="00:17:20.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with a buffer-local non-nil variable,""" start="00:17:23.480" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-playlist-buffer-p`.""" start="00:17:26.460" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The buffer can contain anything, any amount or type of text,""" start="00:17:29.820" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or anything else.""" start="00:17:33.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms tracks are stored in text properties within the buffer,""" start="00:17:35.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with the unimaginatively named text property `emms-track`.""" start="00:17:40.500" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""For Emms, to go to the next track consists of""" start="00:17:46.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""nothing more than looking for the next text property change""" start="00:17:49.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""containing `emms-track`, wherever that is.""" start="00:17:52.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""That means that there is a healthy decoupling between""" start="00:17:57.180" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the visual representation of a playlist""" start="00:18:00.540" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and its contents as far as Emms is concerned.""" start="00:18:03.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This decoupling allows Emms playlist buffers""" start="00:18:08.260" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to look like anything as long as that anything consists of""" start="00:18:11.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""one or more `emms-track` text properties.""" start="00:18:15.320" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Sources""" start="00:18:22.080" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Sources:""" start="00:18:22.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A source is how you tell Emms:""" start="00:18:23.580" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""&quot;Go and get those things and turn them into tracks.&quot;""" start="00:18:25.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""More specifically, an Emms source is a function called in""" start="00:18:29.780" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a playlist buffer in order to add tracks.""" start="00:18:34.480" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""And even more specifically, a source is really""" start="00:18:37.260" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""a family of related functions""" start="00:18:40.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""defined by the macro `define-emms-source`.""" start="00:18:42.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A straightforward example""" start="00:18:47.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is the function `emms-add-directory`,""" start="00:18:49.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which adds an entire directory of files""" start="00:18:52.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to the current playlist.""" start="00:18:55.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It accepts, or interactively queries for, a directory""" start="00:18:57.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and iterates over each file in that directory,""" start="00:19:02.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""adding them as tracks to the playlist buffer as it goes.""" start="00:19:06.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms comes with sources for files, directories, URLs,""" start="00:19:10.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""playlists of various formats,""" start="00:19:15.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""files from dired mode, and etc.""" start="00:19:17.320" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Players""" start="00:19:22.160" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Players:""" start="00:19:22.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""An Emms player is, at its simplest, a data structure""" start="00:19:24.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with three functions.""" start="00:19:28.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""One to start playing, one to stop,""" start="00:19:30.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and one which returns true if the player knows""" start="00:19:34.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""how to play a given track.""" start="00:19:38.180" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""However, if your player also knows how to pause, resume,""" start="00:19:41.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""seek, etc, then additional functions can be added""" start="00:19:44.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to the player data structure.""" start="00:19:48.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This is abstract enough to be able to, for example,""" start="00:19:51.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""define a simple player for images with the help of""" start="00:19:55.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the `define-emms-simple-player` macro.""" start="00:19:58.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The above will define a player called `emms-player-display`,""" start="00:20:04.580" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which would call ImageMagick's `display` command""" start="00:20:09.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""on each file in our playlist""" start="00:20:12.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with the image file extension we listed.""" start="00:20:15.640" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Info""" start="00:20:20.520" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Info:""" start="00:20:20.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""As previously described, Emms comes with info methods,""" start="00:20:23.060" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which are functions to add""" start="00:20:28.020" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""descriptive information to tracks.""" start="00:20:29.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms is set up so that""" start="00:20:32.340" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the hook `emms-track-initialize-functions` is called""" start="00:20:34.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""when a track is created, and that ends up calling""" start="00:20:37.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the info methods listed in the `emms-info-functions` list.""" start="00:20:41.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""These will modify the track data structure to add metadata.""" start="00:20:46.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""One of the coolest recent features of Emms""" start="00:20:51.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is `emms-info-native`, written by Petteri Hintsanen;""" start="00:20:54.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""again, sorry for the pronunciation.""" start="00:20:58.700" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-info-native` is a purely Emacs Lisp implementation""" start="00:21:01.326" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which reads Ogg Vorbis, Ogg Opus, FLAC, and MP3 files""" start="00:21:06.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and parses out the metadata.""" start="00:21:11.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This is in comparison with other info readers""" start="00:21:14.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which Emms supports, which all involve calling out""" start="00:21:17.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to external processes and parsing the values returned.""" start="00:21:20.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-info-native` works by unpacking and examining""" start="00:21:25.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the binary data in the media file headers""" start="00:21:29.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and parsing the data layout specifications.""" start="00:21:32.040" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""The cache""" start="00:21:36.660" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The Cache:""" start="00:21:36.660" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The Emms cache is a mapping between a full path name""" start="00:21:38.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and its associated information.""" start="00:21:43.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Once information is extracted from a file""" start="00:21:45.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""using an info method, that information is then""" start="00:21:48.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""associated with that file in the cache.""" start="00:21:50.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""One thing to bear in mind is that the caching system""" start="00:21:53.980" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""was originally written back""" start="00:21:57.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""when slow spinning disks were common.""" start="00:21:58.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A 32GB SSD drive cost close to $700 in 2006,""" start="00:22:00.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which is the equivalent of about $1,000""" start="00:22:07.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""at the time of writing.""" start="00:22:10.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""But despite the speed of modern drives,""" start="00:22:12.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the caching system is still worth using""" start="00:22:15.260" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""for larger music collections.""" start="00:22:17.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The caching system is also a prerequisite""" start="00:22:19.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""for being able to use the Emms browser.""" start="00:22:22.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The cache implementation is relatively naive.""" start="00:22:26.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""For instance, moving a file will invalidate""" start="00:22:30.380" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that cache entry for that file""" start="00:22:33.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and will require a refresh.""" start="00:22:35.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""However, relatively little work has been done""" start="00:22:37.580" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to the cache implementation over the years""" start="00:22:40.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""since it has proven to be good enough""" start="00:22:42.780" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""for the majority of situations.""" start="00:22:45.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Which is to say, nobody complained.""" start="00:22:47.060" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Healthy back and forth: mpv, mpd, and GNU.FM""" start="00:22:51.620" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Healthy back and forth. MPV, MPD, GNU.FM""" start="00:22:51.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Process communication with a simple media player""" start="00:22:56.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""can be as straightforward""" start="00:23:00.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""as starting an asynchronous process""" start="00:23:01.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and waiting for that process to complete""" start="00:23:03.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""in order to move to the next track.""" start="00:23:05.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This is how the example above""" start="00:23:08.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with ImageMagick's display binary worked.""" start="00:23:10.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""However, Emms also handles asynchronous""" start="00:23:13.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""two-way communication with processes.""" start="00:23:17.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A simple example of this would be sending strings""" start="00:23:20.300" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to a running process such as the pause command to VLC.""" start="00:23:23.960" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""MPV""" start="00:23:31.560" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""MPV:""" start="00:23:31.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""MPV is a popular media player forked""" start="00:23:33.380" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""in a roundabout way from mplayer.""" start="00:23:37.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""One of its most notable features is""" start="00:23:39.900" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""support for a robust client API.""" start="00:23:42.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Mike Kazantsev has been working since 2018""" start="00:23:46.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to develop the excellent `emms-player-mpv.el'.""" start="00:23:52.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It can communicate with a long running MPV process""" start="00:23:58.350" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""via Unix sockets or IP sockets.""" start="00:24:02.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This allows for MPV to do things""" start="00:24:07.180" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""like update ICY metadata for streaming audio.""" start="00:24:11.170" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""So that, for example, when a song changes""" start="00:24:14.890" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""while you're listening to a streaming audio via Emms,""" start="00:24:17.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the song title displayed in the mode line""" start="00:24:22.050" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and track listing can update as well.""" start="00:24:24.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This means that deep inside the code""" start="00:24:28.330" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""there is an Emacs `make-network-process` call.""" start="00:24:30.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The fact that Mike has put this together""" start="00:24:35.630" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""in fewer than 1,000 lines of legible Emacs Lisp""" start="00:24:37.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is a testament to some serious coding ability.""" start="00:24:42.640" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""MPD""" start="00:24:47.470" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""MPD:""" start="00:24:47.470" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Similar to MPV but potentially""" start="00:24:49.610" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""on a completely different machine""" start="00:24:52.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is Emms support for the Music Player Daemon.""" start="00:24:54.120" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Music Player Daemon or MPD is a media player""" start="00:24:58.460" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with an explicit client-server design""" start="00:25:01.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and communicates with Emms via a network process.""" start="00:25:03.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Unfortunately, MPD support has never been all that great.""" start="00:25:09.950" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""But this isn't the emms developers fault!""" start="00:25:16.090" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Because unlike every other media player""" start="00:25:20.470" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that Emms interfaces with MPD is designed around""" start="00:25:25.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""its own internal playlist database.""" start="00:25:29.730" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This is a surprising design decision""" start="00:25:31.930" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""on the MPD developers' part""" start="00:25:35.270" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""since it goes against the client-server mindset.""" start="00:25:37.650" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A consequence is that we end up having to try and coordinate""" start="00:25:41.750" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and harmonize the MPD playlist with the Emms playlist.""" start="00:25:45.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I can foresee writing a completely new MPD mode for Emms""" start="00:25:51.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which is designed to be a true pure MPD client.""" start="00:25:56.690" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Unless of course someone volunteers to beat me to it.""" start="00:26:01.510" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Hint hint.""" start="00:26:05.340" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""GNU FM and Libre FM""" start="00:26:07.440" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""GNU FM and Libre FM:""" start="00:26:07.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Libre FM is a music community which allows you""" start="00:26:10.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to share your listening habits with other users of the site.""" start="00:26:13.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A kind of online listening party.""" start="00:26:17.450" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""In the case of `emms-librefm-scrobber.el`""" start="00:26:21.270" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""we use Emacs' `url-retrieve` function""" start="00:26:25.650" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to asynchronously send to a URL""" start="00:26:28.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and then fire a callback function to process the response.""" start="00:26:32.450" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This represents numerous challenges""" start="00:26:40.050" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to implement within Emacs.""" start="00:26:42.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The primary issue being that Emacs itself""" start="00:26:45.090" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is pretty weak at doing anything""" start="00:26:47.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""truly and really asynchronously.""" start="00:26:50.100" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I can say with confident sarcasm""" start="00:26:54.220" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and with tongue firmly planted in cheek""" start="00:26:56.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that it is almost as if the original designers""" start="00:26:59.530" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""of Emacs didn't foresee their text editor""" start="00:27:02.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""needing to play music""" start="00:27:05.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""while interacting with a remote network server.""" start="00:27:07.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""How myopic!""" start="00:27:09.820" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""How we work: Emms development""" start="00:27:12.560" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""How we work: Emms development:""" start="00:27:12.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This part is an overview of how Emms is developed.""" start="00:27:15.700" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""By the end of this part you should be able to understand""" start="00:27:19.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""how we hacked this project, and how you can too.""" start="00:27:23.900" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Where it's at.""" start="00:27:28.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""How to find our forge.""" start="00:27:29.950" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms has been hosted at the FSF's forge, Savannah,""" start="00:27:32.370" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""since around 2003.""" start="00:27:36.500" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms is distributed via GNU ELPA and integrated into Emacs.""" start="00:27:39.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Before ELPA it was distributed as a tarball""" start="00:27:46.230" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""via ftp.gnu.org but that stopped back in 2020.""" start="00:27:49.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I was initially resistant to ELPA but around the time""" start="00:27:55.140" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""when the thousandth person asked me why Emms isn't on ELPA,""" start="00:27:58.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I realized that it had to happen.""" start="00:28:03.850" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms can also be found in other places""" start="00:28:07.210" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""such as Melpa or GitHub but we, the developers of Emms,""" start="00:28:10.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""have nothing to do with that""" start="00:28:16.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and we don't monitor those channels.""" start="00:28:18.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If you want the source straight from, well, the source,""" start="00:28:21.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""then go to the Savannah Git repository.""" start="00:28:26.300" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Look who's talking: Where development discussion happens.""" start="00:28:30.370" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If you want to talk to us, discussions all happen""" start="00:28:34.990" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""on emms-help@gnu.org.""" start="00:28:38.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""We used to use emms-patches@gnu.org""" start="00:28:41.430" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but didn't feel like the volume of incoming patches""" start="00:28:45.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""justified a separate mailing list.""" start="00:28:48.280" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""The Rime Of The Ancient Maintainer""" start="00:28:52.590" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The Rime Of The Ancient Maintainer:""" start="00:28:52.590" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""There are a number of activities""" start="00:28:55.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""particular to being a maintainer.""" start="00:28:57.480" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""These are all part of a project's lifecycle.""" start="00:29:00.100" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Let's review some of them.""" start="00:29:03.390" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""The life and times of an Emms patch""" start="00:29:06.080" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""The life and times of an Emms patch:""" start="00:29:06.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A maintainer needs to be able to accept, critique,""" start="00:29:10.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and integrate patches from contributors and developers.""" start="00:29:13.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This means, among other things, that the maintainer""" start="00:29:17.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""needs to keep on top of copyright issues.""" start="00:29:20.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Before being able to add Emms to GNU/ELPA,""" start="00:29:24.470" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""we had to make sure that the copyright situation""" start="00:29:29.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""was in order.""" start="00:29:31.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This long process required reaching out to people""" start="00:29:33.850" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and having them assign the copyright""" start="00:29:37.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""for their work to the FSF,""" start="00:29:39.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or even removing their code entirely""" start="00:29:42.510" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""if they couldn't be reached.""" start="00:29:45.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The experience left me with the conviction""" start="00:29:47.970" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that the easiest way to fix""" start="00:29:50.630" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the copyright situation of your package""" start="00:29:52.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is to ensure that it never gets broken in the first place.""" start="00:29:54.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Often a person will write in to the emms-help mailing list,""" start="00:30:00.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or perhaps raise an issue on IRC.""" start="00:30:04.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If it's a bug report or feature request, we'll discuss it,""" start="00:30:08.030" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and when it's fixed, we'll ask the reporter""" start="00:30:11.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to test the result and provide feedback.""" start="00:30:14.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If it's a patch, then we'll typically go one of three ways.""" start="00:30:17.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A trivial patch, such as fixing a typo""" start="00:30:22.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or corrections on a single line of code,""" start="00:30:24.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""will simply be applied by one of the developers.""" start="00:30:27.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A non-trivial, but one-time patch,""" start="00:30:32.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""will have to be cleared from a copyright perspective.""" start="00:30:34.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This means assigning copyright for the changes to the FSF.""" start="00:30:37.990" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Once that's cleared, then the patch will be applied.""" start="00:30:42.420" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Finally, if it's a non-trivial patch,""" start="00:30:46.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which looks like it would be the start""" start="00:30:49.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""of a long-term development work (my favorite),""" start="00:30:52.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""then after copyright is cleared,""" start="00:30:56.010" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""that person will be offered to be added""" start="00:30:57.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to the members with Git repo access on Savannah.""" start="00:31:00.800" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""From there, we usually use a dedicated branch""" start="00:31:05.020" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to do all the playing around""" start="00:31:08.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""before merging it with the main Git repo.""" start="00:31:09.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If you have ever sent a patch, feature request,""" start="00:31:13.630" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""or bug report into Emms (small or large), we thank you.""" start="00:31:16.880" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Let It Go: The release process""" start="00:31:24.080" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Let It Go, The Release Process:""" start="00:31:24.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The maintainer is responsible for the release process.""" start="00:31:27.790" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I found that a consistent schedule works well,""" start="00:31:31.610" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which is not to say that we have to release on schedule,""" start="00:31:35.130" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but that aiming for a consistent release schedule""" start="00:31:39.380" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""provides structure and a goal.""" start="00:31:42.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The main Git branch in the repository is stable""" start="00:31:46.050" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and more often than not of release quality.""" start="00:31:50.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Releases are done about every three months.""" start="00:31:53.240" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""And with such a stable main branch,""" start="00:31:56.650" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the process of releasing often involves little more""" start="00:31:59.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""than writing a NEWS entry.""" start="00:32:02.320" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""As a consequence, new and wonderful features""" start="00:32:05.060" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which aren't quite ready for prime time""" start="00:32:08.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""when a release comes around,""" start="00:32:11.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""will remain safely in their branch on the Git repo""" start="00:32:13.500" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""until after the ELPA release.""" start="00:32:18.200" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""It Is Not In Our Stars, But In Ourselves: Future directions""" start="00:32:23.400" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""It Is Not In Our Stars, But In Ourselves; Future Directions:""" start="00:32:23.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""One aspect of Emms that needs to improve is ease of setup.""" start="00:32:29.630" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Now that might surprise you, since at the time of writing,""" start="00:32:34.900" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""it's already pretty easy.""" start="00:32:37.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""But my ideal is that the user would need to do""" start="00:32:40.070" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""nothing at all after installation.""" start="00:32:43.880" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""And with that, as a goal in mind,""" start="00:32:46.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""there is more work to be done.""" start="00:32:49.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""We are working on a player discovery feature.""" start="00:32:52.750" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The idea is simple.""" start="00:32:55.500" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The code looks for binaries of popular media players""" start="00:32:57.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""on the user's machine,""" start="00:33:00.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and for each one found, it asks the user""" start="00:33:01.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""if they want the associated Emms player backend""" start="00:33:04.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to be configured.""" start="00:33:07.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""In effect, this code is already working,""" start="00:33:09.810" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but currently an undocumented, unofficial feature.""" start="00:33:12.590" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""You can try it for yourself with""" start="00:33:16.290" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-setup-discover-players`.""" start="00:33:17.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""So what's the holdup?""" start="00:33:21.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""`emms-setup-discover-players` currently configures""" start="00:33:22.970" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""the `emms-player-list` variable,""" start="00:33:26.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but doesn't write it to disk.""" start="00:33:27.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""And that means that the configuration""" start="00:33:29.900" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""isn't preserved between Emacs sessions.""" start="00:33:31.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The question then becomes,""" start="00:33:35.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""what is the best way to preserve this setting?""" start="00:33:36.900" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I personally don't like anything""" start="00:33:40.310" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to edit my .emacs except me,""" start="00:33:42.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and I wouldn't do that to anyone else.""" start="00:33:46.200" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Now we already write state to the .emacs.d/emms/ directory,""" start="00:33:49.280" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""but that would require care not to""" start="00:33:55.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""clobber a user's existing setup.""" start="00:33:58.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Having the user set up their system in one place,""" start="00:34:01.910" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""such as a .emacs or a .emmsrc,""" start="00:34:04.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""while saving state to a different place""" start="00:34:08.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is asking for confusion.""" start="00:34:11.420" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""This is a good example which I bring up""" start="00:34:14.210" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""of where a maintainer needs to""" start="00:34:16.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""solicit opinions from developers,""" start="00:34:18.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""both the Emacs developers,""" start="00:34:21.309" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""asking them where packages should save state,""" start="00:34:23.900" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and the Emms developers, and also users.""" start="00:34:28.170" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Then, the maintainer needs to""" start="00:34:33.170" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""carefully choose a path forward.""" start="00:34:35.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It is typical of the kind of issue you have to have in mind""" start="00:34:38.020" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""when you're maintaining a package.""" start="00:34:41.560" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Development policies: Interface language""" start="00:34:44.849" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Development Policies: Interface Language.""" start="00:34:44.849" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A maintainer of an interactive program such as Emms""" start="00:34:49.160" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""needs to think about user interaction.""" start="00:34:52.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Emms doesn't use key bindings which are familiar""" start="00:34:55.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to people who are used to GUI media players,""" start="00:34:58.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and that can, and has, caused friction.""" start="00:35:02.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Some new users are confused when they press the spacebar""" start="00:35:06.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""on an entry in the Emms browser,""" start="00:35:09.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""only to find that nothing starts playing.""" start="00:35:12.530" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Indeed, all that does is to expand the browser tree""" start="00:35:15.460" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""at that point.""" start="00:35:18.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Then they might press RET on the same entry,""" start="00:35:20.470" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and be further frustrated at the continuing silence.""" start="00:35:23.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Since what return does is just to add that entry at point""" start="00:35:28.260" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""to the current playlist.""" start="00:35:33.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""The discussion then arises""" start="00:35:36.170" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""about how Emms should handle that situation.""" start="00:35:37.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""On one hand, we want to make it as easy as possible""" start="00:35:41.820" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""for new users to learn Emms,""" start="00:35:45.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and adopt a do-what-I-mean interface approach.""" start="00:35:48.820" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""On the other hand, this is an Emacs project.""" start="00:35:52.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It isn't a stand-alone GUI media player,""" start="00:35:56.750" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and should integrate into Emacs,""" start="00:35:59.440" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and serve Emacs users first and foremost.""" start="00:36:01.400" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Development policies: Freedom""" start="00:36:05.980" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Development policies: Freedom.""" start="00:36:05.980" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Another maintainer job is to think of Emms' posture""" start="00:36:10.290" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""in regards to software freedom.""" start="00:36:15.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Here are a few examples.""" start="00:36:17.380" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Back with MP3 was still a patent encumbered format,""" start="00:36:19.730" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""we pushed hard for Vorbis everywhere""" start="00:36:23.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""along with the PlayOgg campaign.""" start="00:36:26.081" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A then popular music streaming service,""" start="00:36:29.640" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which will remain unnamed,""" start="00:36:32.700" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""changed their stance towards third-party applications,""" start="00:36:34.930" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and required individual API keys which could not be shared.""" start="00:36:38.620" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""We stood firm, said &quot;no&quot;,""" start="00:36:43.130" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and removed support for that service.""" start="00:36:45.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A recent suggestion to add support for YouTube""" start="00:36:48.670" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""was also nixed,""" start="00:36:51.360" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""because the particular backend""" start="00:36:53.890" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""was found to download and run proprietary javascript""" start="00:36:55.680" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""on the user's machine.""" start="00:36:58.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Saying no to potentially useful or wanted features""" start="00:37:01.850" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""because it involves non-free software""" start="00:37:05.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is often an unpopular decision and can alienate people.""" start="00:37:07.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""A maintainer needs to think carefully""" start="00:37:13.490" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""about each of these decisions,""" start="00:37:15.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""as they are rarely straightforward and one-sided.""" start="00:37:17.400" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""And as you see above, they also change over time""" start="00:37:21.920" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and need to be re-evaluated.""" start="00:37:25.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""One of the most useful things a maintainer can do""" start="00:37:30.300" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""is to coordinate the development effort""" start="00:37:33.000" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""and help new people join the project.""" start="00:37:35.520" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""In light of that, if you want to work on a project""" start="00:37:39.230" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which has a bit of everything,""" start="00:37:41.840" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""you could do worse than hacking on Emms.""" start="00:37:44.060" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""There is inter-process communication,""" start="00:37:47.810" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""displaying graphics, parsing binary files,""" start="00:37:49.720" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""caching, asynchronous processes, user interface design.""" start="00:37:52.480" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""We also are a project that insists on""" start="00:37:56.530" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""keeping a well-written and up-to-date manual.""" start="00:37:59.600" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""If you can write English or hack Emacs Lisp at all,""" start="00:38:02.960" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""chances are that there is something you can do for Emms.""" start="00:38:06.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Just saying.""" start="00:38:09.940" video="mainVideo-emms" id="subtitle"]]
+
+[[!template new="1" text="""Acknowledgements""" start="00:38:12.370" video="mainVideo-emms" id="subtitle"]]
+
+[[!template text="""Acknowledgements:""" start="00:38:12.370" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""I'd like to express my deep gratitude for all of the people""" start="00:38:14.190" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""who have hacked on Emms""" start="00:38:18.080" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""during my time as a maintainer and before it.""" start="00:38:19.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""It is often the case that I'm just the person""" start="00:38:23.170" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""holding the rudder and steering the ship,""" start="00:38:25.760" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""with all of these developers""" start="00:38:28.560" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""rowing furiously to provide the power""" start="00:38:30.040" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""which actually moves the ship forward.""" start="00:38:33.180" video="mainVideo-emms" id="subtitle"]]
+[[!template text="""Thank you to all.""" start="00:38:36.370" video="mainVideo-emms" id="subtitle"]]
+
+
+
+Captioner: yoni
+
+<a name="emms-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: And I think we are live.""" start="00:00:06.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""Hi, Yanny, how are you doing?""" start="00:00:07.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Excellent, excellent. Doing very well,""" start="00:00:10.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""thank you.""" start="00:00:10.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: So that was a wonderful presentation.""" start="00:00:13.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""I first want to commend you on your ability""" start="00:00:17.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""to both do the how the user encounters the""" start="00:00:22.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""MMS, how the developer might be interested""" start="00:00:24.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""about how it works, and I feel like you've""" start="00:00:28.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""done a wonderful job of talking to absolutely""" start="00:00:30.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""everyone in our audience,""" start="00:00:31.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""whatever their skill level.""" start="00:00:32.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""So thank you so much for this.""" start="00:00:34.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, that of course runs the risk of being,""" start="00:00:37.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""you know, good for some,""" start="00:00:41.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""but excellent for none.""" start="00:00:42.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""But hopefully the result is that people can""" start="00:00:46.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""get something out of it.""" start="00:00:48.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think it's very important to make sure that""" start="00:00:51.820" video="qanda-emms" id="subtitle"]]
+[[!template text="""everyone feels that they have access to""" start="00:00:55.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""Emacs, they have access to EMMS,""" start="00:00:57.239" video="qanda-emms" id="subtitle"]]
+[[!template text="""that they can do this in whatever capacity""" start="00:01:00.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""they want. It's for everyone.""" start="00:01:02.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""I really believe that.""" start="00:01:05.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, and I understand this risk about having""" start="00:01:09.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""a talk that is kind of a jack-of-all-trades,""" start="00:01:10.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""but frankly you've done a wonderful job of""" start="00:01:14.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""making it interesting for everyone,""" start="00:01:16.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""because also I think the parts worked really""" start="00:01:19.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""well, and people always had something to look""" start="00:01:21.820" video="qanda-emms" id="subtitle"]]
+[[!template text="""forward in terms of their expertise of what""" start="00:01:24.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""particularly spoke to them.""" start="00:01:25.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""So thank you again. What I'm going to do,""" start="00:01:27.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""we have about 14 minutes of Q&A,""" start="00:01:29.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""So I'll invite people,""" start="00:01:30.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""as I usually do, to add their questions in""" start="00:01:33.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""the other pad that you can find on the talks""" start="00:01:35.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""or on IRC. You can also join us in the""" start="00:01:38.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""discussion. I will make sure this time to""" start="00:01:40.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""ping Sasha to open the Q&A.""" start="00:01:42.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""Can you open, I-V-E-M-M-S.""" start="00:01:44.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""All right, and in the meantime,""" start="00:01:48.700" video="qanda-emms" id="subtitle"]]
+[[!template text="""whilst we wait for people to join us in the""" start="00:01:50.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""room, I will start reading some of the""" start="00:01:52.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""questions off the pad.""" start="00:01:53.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""So we had the first question about the music""" start="00:01:57.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""that we played during the launch break,""" start="00:01:58.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""and It's 1 of our dear friends,""" start="00:02:01.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""Shoshin Ganshangroh, a free album,""" start="00:02:05.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""Basement Dazed. I've put the link in the pad""" start="00:02:09.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""and we've been using Shoshin's music for the""" start="00:02:12.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""last 3 years, I think,""" start="00:02:13.420" video="qanda-emms" id="subtitle"]]
+[[!template text="""and everyone, people are so excited.""" start="00:02:15.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""Some people say, why is it so noisy in the""" start="00:02:17.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""background? But it's just because there's 1""" start="00:02:18.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""part of the different tracks that sounds like""" start="00:02:20.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""static and it always gets people.""" start="00:02:24.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""We should probably do something about this,""" start="00:02:25.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""but frankly it makes me laugh every time.""" start="00:02:27.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""Starting with the first actual question,""" start="00:02:30.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""well actually it's a bit of a meme question,""" start="00:02:32.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""for the next Emacs Con,""" start="00:02:34.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""could we have an eMMS playlist to follow the""" start="00:02:37.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""talks along?""" start="00:02:37.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh that sounds like an excellent idea but I""" start="00:02:43.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""guess I'm wondering what they mean exactly by""" start="00:02:46.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""that. Is that a shareable playlist that we""" start="00:02:48.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""can pass along and just have people go to a""" start="00:02:54.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""URL and just be able to play that?""" start="00:02:56.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think that's an excellent idea.""" start="00:02:58.620" video="qanda-emms" id="subtitle"]]
+[[!template text="""It should be a relatively low bandwidth""" start="00:03:00.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""process.""" start="00:03:01.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: And it's typically the type of stuff that is""" start="00:03:06.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""right of our alley. I'm thinking about the""" start="00:03:10.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""ICS file that we produce for all the events""" start="00:03:15.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""that are related to Emacs.""" start="00:03:17.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""You know the workshop that happened in Paris""" start="00:03:18.820" video="qanda-emms" id="subtitle"]]
+[[!template text="""or in New York, LA? Sasha compiles a list of""" start="00:03:22.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""all the events and when they happen,""" start="00:03:23.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""and then we provide this to everyone.""" start="00:03:25.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""And we can do very much the same with""" start="00:03:27.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""EmacsConf. You could have a playlist for""" start="00:03:29.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""EmacsConf 2023, where you get all the talks""" start="00:03:31.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""and perhaps also the Q&A sessions so that you""" start="00:03:34.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""can relieve the 16 hours of content that""" start="00:03:36.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""we're producing. That'd be great,""" start="00:03:37.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""that's a great idea I think.""" start="00:03:39.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Absolutely, and if there are any limitations""" start="00:03:43.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""in the Emacs playlist structure that things""" start="00:03:48.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""are missing in the playlist structure,""" start="00:03:49.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""then it would be a great impetus to implement""" start="00:03:53.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""those and extend the playlist structure.""" start="00:03:55.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""Because after all, it's Lisp,""" start="00:03:57.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""it really is data and functions all mixed""" start="00:04:01.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""together, so we can do that.""" start="00:04:03.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""It would be very interesting to dive into it""" start="00:04:06.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""and see what's missing.""" start="00:04:07.000" video="qanda-emms" id="subtitle"]]
+[[!template text="""That would be even more informative than what""" start="00:04:10.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""it can do.""" start="00:04:10.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great. All right, moving on to the next""" start="00:04:14.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""question. I like to use music and audiobooks""" start="00:04:17.000" video="qanda-emms" id="subtitle"]]
+[[!template text="""in very different ways.""" start="00:04:18.279" video="qanda-emms" id="subtitle"]]
+[[!template text="""With music, I like shuffling by artists and""" start="00:04:21.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""with audiobooks, I want to read sequentially""" start="00:04:23.300" video="qanda-emms" id="subtitle"]]
+[[!template text="""and pick the same playlist over a couple of""" start="00:04:27.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""days or weeks. Do you have any tips for using""" start="00:04:29.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""these 2 opposing media's workflow?""" start="00:04:30.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, so I have similar situations where I""" start="00:04:38.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""have very long endurance races that I watch,""" start="00:04:43.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""which I do all my media consumption is done""" start="00:04:47.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""via EMMS. I also listened to music.""" start="00:04:50.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""And so there's also a middle in between.""" start="00:04:54.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""There's 1 end in which you have popular""" start="00:04:57.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""music. These are standalone songs that are""" start="00:05:01.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""typically 3 to 4 minute long and they are""" start="00:05:04.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""best consumed in a random you know order""" start="00:05:07.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""because they are designed around,""" start="00:05:09.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""you know, a commercial radio distribution.""" start="00:05:12.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""I guess I'm dating myself by saying radio,""" start="00:05:15.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""but you know all the that.""" start="00:05:17.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""In the middle there are longer works like""" start="00:05:20.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""musicals and classical where these are units""" start="00:05:26.100" video="qanda-emms" id="subtitle"]]
+[[!template text="""where they might be very long but you would""" start="00:05:30.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""have several tracks that you do want to have""" start="00:05:33.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""1 after the other, and you want to be able to""" start="00:05:35.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""stop and go to the next track.""" start="00:05:38.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""And then at the very, very other end,""" start="00:05:40.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""you have extremely long format,""" start="00:05:44.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""which is included in a single file,""" start="00:05:46.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""such as an audio book,""" start="00:05:47.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""a movie, a tutorial that you're watching,""" start="00:05:51.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""or in my case, you know,""" start="00:05:54.100" video="qanda-emms" id="subtitle"]]
+[[!template text="""a 24 hour, the 24 hours of Le Mans,""" start="00:05:56.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""just the 24 hour race,""" start="00:05:58.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""which, you know, that's 1 heck of a file.""" start="00:06:01.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""So that is 1 of the reasons eMMS has a number""" start="00:06:07.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""of elements such as the meta playlist mode""" start="00:06:10.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""and multiple playlists.""" start="00:06:11.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""So I would say that they would open a number""" start="00:06:16.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""of playlists in eMMS, generate a number of""" start="00:06:19.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""playlists that have each class of media.""" start="00:06:26.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""So the shorter form songs,""" start="00:06:28.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""the more pop songs you have in 1 playlist""" start="00:06:33.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""where you can sort, shuffle it,""" start="00:06:35.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""you know, save it, do whatever you want.""" start="00:06:37.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""Then a separate playlist for the long form""" start="00:06:41.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""stuff. Sometimes that playlist will have even""" start="00:06:44.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""only 1 file in it if it's long enough,""" start="00:06:48.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""then have a key combination which takes you""" start="00:06:52.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""directly to 1 playlist or the other,""" start="00:06:55.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""and within the long-form playlist,""" start="00:06:57.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""looking at the bookmarking function of EMMS,""" start="00:07:01.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""which is designed around being able to save a""" start="00:07:06.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""particular stopping point or multiple""" start="00:07:10.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""stopping points, bookmarks in the audio,""" start="00:07:12.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""and being able to jump back into that audio.""" start="00:07:15.300" video="qanda-emms" id="subtitle"]]
+[[!template text="""The point to remember about the bookmarking""" start="00:07:18.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""feature is that sometimes it really depends""" start="00:07:23.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""on you have to have the right back end.""" start="00:07:25.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""Not all back ends with replaying,""" start="00:07:28.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""not all types of media work well with a""" start="00:07:33.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""bookmarking function, and bug reports""" start="00:07:36.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""welcome. But also there are other backends""" start="00:07:38.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""such as MPV where you can configure it that""" start="00:07:44.820" video="qanda-emms" id="subtitle"]]
+[[!template text="""when you quit playing the song or the media""" start="00:07:49.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""with, you know, cue internally.""" start="00:07:55.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""So sometimes the back end has to continue""" start="00:07:58.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""playing that song. That's what I do in order""" start="00:08:04.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""to, on 1 hand, switch over to a...""" start="00:08:07.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""I want to hear... I'm coding,""" start="00:08:09.620" video="qanda-emms" id="subtitle"]]
+[[!template text="""I want to hear some music,""" start="00:08:10.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""I go to my playlist of short songs,""" start="00:08:12.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""then I'm sitting back and I want to watch a""" start="00:08:16.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""long form something from where I left off and""" start="00:08:20.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""there I go to the other playlist and use""" start="00:08:22.420" video="qanda-emms" id="subtitle"]]
+[[!template text="""bookmarks or the features of the back end""" start="00:08:26.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""that I'm using.""" start="00:08:26.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, thank you for the answer.""" start="00:08:31.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""We have about 7 minutes and we have more""" start="00:08:34.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""questions, so that's great.""" start="00:08:35.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""Moving on to the next 1.""" start="00:08:37.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""Is there a way to search a music selection by""" start="00:08:40.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""lyrics? Assuming those lyrics are in the""" start="00:08:42.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""metadata or are available elsewhere,""" start="00:08:43.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""it would be neat to call songs up from the""" start="00:08:46.300" video="qanda-emms" id="subtitle"]]
+[[!template text="""lyrics to the song. Perhaps is this""" start="00:08:48.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""implemented so that you can all aliases,""" start="00:08:50.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""so they can use aliases for the song that you""" start="00:08:54.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""like, defining those aliases or shortcuts""" start="00:08:56.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""either inside or outside eMMS?""" start="00:08:58.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""Okay, so I think you've got 2 questions.""" start="00:08:59.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""First about the lyrics and then the aliases.""" start="00:09:01.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so it's effectively not possible to do""" start="00:09:08.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""right now. There's a sense in which it is,""" start="00:09:10.880" video="qanda-emms" id="subtitle"]]
+[[!template text="""but not really. What actually needs to""" start="00:09:14.820" video="qanda-emms" id="subtitle"]]
+[[!template text="""happen? The problem is that the caching""" start="00:09:18.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""system is extremely naive.""" start="00:09:21.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""It's just really a hash that's written to""" start="00:09:24.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""disk. And maybe now with SQLite integration""" start="00:09:30.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""or other or just the fact that computers have""" start="00:09:35.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""a lot more speed and space than they used to""" start="00:09:39.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""have, we need to expand the cache to be a lot""" start="00:09:43.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""more greedy and a lot more flexible so that""" start="00:09:47.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""we can store things such as lyrics in as part""" start="00:09:52.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""of the metadata. There's no reason not to do""" start="00:09:56.000" video="qanda-emms" id="subtitle"]]
+[[!template text="""that. Unless your collection would have to be""" start="00:10:02.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""truly enormous in order to slow things down.""" start="00:10:06.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""We wouldn't even need to compress the lyrics""" start="00:10:09.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""in order to store them like that.""" start="00:10:11.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""But that is a goal. So our rewrite of the""" start="00:10:15.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""cache is currently in progress,""" start="00:10:17.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""and the goal is to have a system where you""" start="00:10:21.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""can put any related information,""" start="00:10:24.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""including lyrics, and map that to a""" start="00:10:30.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""particular piece of the media,""" start="00:10:31.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""be it a URL or a... So you could have in a""" start="00:10:36.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""sense, you could have a URL to a lecture and""" start="00:10:40.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""the metadata associated would be some text,""" start="00:10:44.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""some notes or something else like that.""" start="00:10:47.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, so that was about the lyrics.""" start="00:10:51.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""I'm not sure how it answers the question""" start="00:10:53.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""about the aliases. I mean you can still""" start="00:10:54.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""filter what you've mentioned about the cache.""" start="00:10:56.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think it's... Do we consider the aliases to""" start="00:10:59.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""be anything within the metadata?""" start="00:11:01.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: No, you're right. That is a separate""" start="00:11:08.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""question. I don't have a great answer for""" start="00:11:12.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""that right now.""" start="00:11:12.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, great. Well, we'll put a pin on this""" start="00:11:16.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""and we can return to it.""" start="00:11:17.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""You can return to it at a later stage.""" start="00:11:19.690" video="qanda-emms" id="subtitle"]]
+[[!template text="""Yeah. All right, moving on to the next""" start="00:11:21.880" video="qanda-emms" id="subtitle"]]
+[[!template text="""question, then. I'll just,""" start="00:11:22.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""we'll put a pin on this.""" start="00:11:25.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""All right, next question.""" start="00:11:26.420" video="qanda-emms" id="subtitle"]]
+[[!template text="""Are there plans for managing metadata with""" start="00:11:29.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""online resource backends,""" start="00:11:30.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""i.e. Discogs or music brains?""" start="00:11:32.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""What about something like Beats and Emacs or""" start="00:11:34.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""part of the EMMS?""" start="00:11:34.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so that's an active discussion on the""" start="00:11:40.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""mailing list right now.""" start="00:11:42.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""We don't want to replicate what Beats does""" start="00:11:47.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""very, very well in eMMS.""" start="00:11:49.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""We don't want a clunky interface with Beats.""" start="00:11:53.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""We do want some kind of,""" start="00:11:57.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""and so it's hard to tell exactly where to""" start="00:12:00.100" video="qanda-emms" id="subtitle"]]
+[[!template text="""draw that line. So the big answer is yes,""" start="00:12:03.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""absolutely, there is a plan to do that.""" start="00:12:04.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""The details become complicated because for 1""" start="00:12:09.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""thing, the backend, the database that""" start="00:12:15.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""MusicBrain uses, AcoustID,""" start="00:12:18.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""I don't remember if AcoustID is the binary or""" start="00:12:21.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""the database, but that's actually for""" start="00:12:25.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""non-commercial use only.""" start="00:12:27.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""So not only do you need to compile a piece of""" start="00:12:31.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""software on your computer as a shim,""" start="00:12:35.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""which is what you need to do in order to set""" start="00:12:37.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""up beats to do fingerprinting.""" start="00:12:39.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""But it also crosses this line between""" start="00:12:44.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""completely free software to completely free""" start="00:12:47.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""software interfacing with a non-commercial""" start="00:12:49.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""only service. So a lot of the discussion""" start="00:12:56.000" video="qanda-emms" id="subtitle"]]
+[[!template text="""that's going on now is what is the contour?""" start="00:12:58.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""Where would be where we would be effective""" start="00:13:02.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""for EMMS to do management and where not?""" start="00:13:08.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""For 1 thing, I would love to be able to...""" start="00:13:11.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""1 thing that we definitely would love to be""" start="00:13:13.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""able to do is when you hit E on a file and""" start="00:13:18.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""you get all the metadata to be able to then""" start="00:13:21.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""give a command to say,""" start="00:13:23.000" video="qanda-emms" id="subtitle"]]
+[[!template text="""hey, play to music brains and see if you can""" start="00:13:25.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""improve that metadata.""" start="00:13:26.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""Do you have better metadata,""" start="00:13:29.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""more complete metadata to complete that?""" start="00:13:33.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""That is definitely in the pipeline.""" start="00:13:35.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""How best to do it, that's a discussion.""" start="00:13:40.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, Yoni, we have about 2 minutes until we""" start="00:13:45.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""need to go to the next talk.""" start="00:13:46.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""Okay, I'll risk it. 1 more question and a""" start="00:13:52.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""short answer if you can.""" start="00:13:53.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""Have the developers considered using Emacs""" start="00:13:57.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""customized functionality to persistently""" start="00:13:59.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""store settings when using eMMS setup discover""" start="00:14:01.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""players?""" start="00:14:02.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, absolutely. That's another active place,""" start="00:14:08.000" video="qanda-emms" id="subtitle"]]
+[[!template text="""especially with the discover players.""" start="00:14:11.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""How to do it exactly without annoying people""" start="00:14:14.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""and clobbering their own settings,""" start="00:14:17.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""we just need to be very careful about that.""" start="00:14:20.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""Yes, that's in the coming releases.""" start="00:14:23.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right, well, Younif,""" start="00:14:26.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""thank you so much for your time.""" start="00:14:27.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""Feel free to stay in the room.""" start="00:14:29.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""I see that some people have started joining""" start="00:14:30.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""on BBB. If you have more questions,""" start="00:14:33.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""feel free to unmute yourself and ask them""" start="00:14:36.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""live. Younid, I could ask you also to perhaps""" start="00:14:39.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""answer the question. I've put the link to the""" start="00:14:41.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""pad in the BBB chat, so if you look at the...""" start="00:14:43.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""Here, I think, we're not mirrored on BBB.""" start="00:14:47.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""If you look at the left you should be able to""" start="00:14:49.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""see the chat and the questions and if you""" start="00:14:51.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""could just answer the last question that""" start="00:14:52.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""would be great. For us on the general track""" start="00:14:55.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""we will be moving to the next talk and""" start="00:14:57.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""Yannick do you have any last thing to say in""" start="00:14:59.700" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank everyone who put together the""" start="00:15:02.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""conference and thank you to everyone who""" start="00:15:04.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""helps with the EMMS.""" start="00:15:06.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: 10 seconds? All right,""" start="00:15:08.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""well, thank you so much,""" start="00:15:09.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""Yoni. We'll probably see you later.""" start="00:15:10.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""Bye-bye. Wonderful. And I think we are off""" start="00:15:17.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""air. Thank you so much,""" start="00:15:18.620" video="qanda-emms" id="subtitle"]]
+[[!template text="""Juni. I need to step out and go take care of""" start="00:15:20.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay, wonderful. Thank you very much.""" start="00:15:23.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: the next talk. Bye-bye.""" start="00:15:24.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""And just to, I forgot to mention,""" start="00:15:25.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""but you can still talk here and everything is""" start="00:15:27.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""still being recorded. So,""" start="00:15:28.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""I'll see you later.""" start="00:15:28.880" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: Excellent. Bye-bye. Bye.""" start="00:15:32.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Oh, hello.""" start="00:15:35.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Wait, you're still, I cannot hear you yet.""" start="00:15:40.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 4]: You are currently the only person in this""" start="00:15:42.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""conference.""" start="00:15:43.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay.""" start="00:16:12.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Can you hear me now? I just wanted to say hi""" start="00:16:18.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""and thank you. My name's Grant.""" start="00:16:19.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""I've, you helped me contribute to EMMS maybe""" start="00:16:23.740" video="qanda-emms" id="subtitle"]]
+[[!template text="""2 or 3 years ago. I was trying to do the""" start="00:16:26.820" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: So,""" start="00:16:28.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: track tag stuff. yeah.""" start="00:16:29.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""So I just wanted to say thank you.""" start="00:16:32.148" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you for continuing and going through""" start="00:16:35.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""that entire process. I know that 1 of the""" start="00:16:38.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""things that happens is that people want to""" start="00:16:40.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""contribute, but it's not as slick as GitHub""" start="00:16:43.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""and stuff like that, especially with the""" start="00:16:46.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""copper assignment. And objectively,""" start="00:16:53.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""it's not that. It's just harder than what""" start="00:16:56.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""they imagine it might be.""" start="00:16:58.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah. Well, I appreciate it.""" start="00:17:01.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think you're doing a wonderful job as a""" start="00:17:03.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""maintainer. I still hang out on the list and""" start="00:17:07.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""enjoy listening in on the discussions.""" start="00:17:09.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""So.""" start="00:17:09.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah. But that's it. I think that's it.""" start="00:17:14.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think that's it. And I think that's it.""" start="00:17:16.700" video="qanda-emms" id="subtitle"]]
+[[!template text="""And I think that's it.""" start="00:17:17.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""I appreciate it. And I'll leave you to all of""" start="00:17:23.339" video="qanda-emms" id="subtitle"]]
+[[!template text="""you to go on from being a product.""" start="00:17:27.781" video="qanda-emms" id="subtitle"]]
+[[!template text="""And that she valued to all of us long term""" start="00:17:28.088" video="qanda-emms" id="subtitle"]]
+[[!template text="""being a project.""" start="00:17:28.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: If you're not super duper active,""" start="00:17:31.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""being there long term,""" start="00:17:33.420" video="qanda-emms" id="subtitle"]]
+[[!template text="""people tend to find it easier trying to""" start="00:17:37.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""continue contributing to the project if""" start="00:17:40.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""there's a consistency there,""" start="00:17:42.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""if there isn't a churn,""" start="00:17:43.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""if there is a kind of a core group.""" start="00:17:47.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""I guess it's like, you think it's constant.""" start="00:17:52.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""Eliezer Etzke and RMS,""" start="00:17:58.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""whatever on the next mailing list,""" start="00:18:00.420" video="qanda-emms" id="subtitle"]]
+[[!template text="""You know, okay, there are certain people that""" start="00:18:03.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think so. So thank you for that.""" start="00:18:05.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""That's very important.""" start="00:18:06.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""That helps.""" start="00:18:07.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, I'm, I feel like when I started using""" start="00:18:12.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""EMMS several years ago,""" start="00:18:14.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""it's, it's improved a lot since then.""" start="00:18:16.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""And I notice your focus on helping new users""" start="00:18:19.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""get started quickly. And I think the talk""" start="00:18:22.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""today will help with that too.""" start="00:18:23.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""So""" start="00:18:24.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: yeah, I want to put you know,""" start="00:18:32.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""the, especially the TLDR,""" start="00:18:33.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""like how to start it on the link that to the""" start="00:18:37.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""website, find somehow that we can get on to""" start="00:18:44.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""prepare for that. And this together.""" start="00:18:52.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""Now, question for you,""" start="00:18:54.700" video="qanda-emms" id="subtitle"]]
+[[!template text="""Where would you like to see EMMS go?""" start="00:18:58.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""Where do you see it landing?""" start="00:18:59.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""What do you feel like this is what this is""" start="00:19:02.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""we're sorely missing these things?""" start="00:19:04.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: I don't know. I mean, I picked it up,""" start="00:19:09.740" video="qanda-emms" id="subtitle"]]
+[[!template text="""because I both use it to play my music""" start="00:19:13.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""collection, but also, like I record my own""" start="00:19:17.100" video="qanda-emms" id="subtitle"]]
+[[!template text="""music. And I wanted to be able to edit my""" start="00:19:20.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""metadata in Emacs, because editing metadata""" start="00:19:23.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""elsewhere sucks. And so that's kind of why I""" start="00:19:29.100" video="qanda-emms" id="subtitle"]]
+[[!template text="""got involved with that.""" start="00:19:30.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""And I was like, being able to edit metadata,""" start="00:19:33.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""especially for content that maybe you're""" start="00:19:37.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""creating or because I have a bunch of files""" start="00:19:41.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""of just unlabeled stuff I've recorded on,""" start="00:19:44.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""you know, different quarters,""" start="00:19:45.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""things like that. So that's kind of where I""" start="00:19:47.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""was focusing on it. It's the only media tool""" start="00:19:50.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""that lets me do that, you know,""" start="00:19:52.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""I can play the music back and have quick""" start="00:19:54.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""editing. So I know there was a couple of""" start="00:19:58.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""things we had talked about in terms of maybe""" start="00:20:00.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""improving kind of the user interface for the""" start="00:20:03.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""tag editor, things like that.""" start="00:20:05.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""So I don't have any grand visions for where""" start="00:20:09.300" video="qanda-emms" id="subtitle"]]
+[[!template text="""EMMS should go. I know pretty much all the""" start="00:20:15.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""things I've heard about it already.""" start="00:20:16.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""You can hook up to GNU FM,""" start="00:20:20.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""the Scrabbling Service,""" start="00:20:21.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""and all that kind of stuff.""" start="00:20:23.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""I don't really feel like it's missing much,""" start="00:20:26.920" video="qanda-emms" id="subtitle"]]
+[[!template text="""especially being able to choose the back""" start="00:20:29.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""ends. I guess, if anything,""" start="00:20:31.880" video="qanda-emms" id="subtitle"]]
+[[!template text="""it's the interface. How can it be even more""" start="00:20:34.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""intuitive for users? And I think that,""" start="00:20:38.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""you know, we need more people playing around""" start="00:20:41.500" video="qanda-emms" id="subtitle"]]
+[[!template text="""with it, I guess. Yeah.""" start="00:20:43.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: I think a really good""" start="00:20:46.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, yeah. example of that is,""" start="00:20:47.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""because I'm sure there are lots of people""" start="00:20:49.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""playing around with it,""" start="00:20:50.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""arriving at a conclusion,""" start="00:20:51.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""keeping it to themselves and moving on.""" start="00:20:53.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""Yeah. Which, and I know that a lot of bits of""" start="00:20:59.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""software put a send a bug report feature in""" start="00:21:01.820" video="qanda-emms" id="subtitle"]]
+[[!template text="""and stuff like that and no 1 uses those""" start="00:21:04.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""either. So that's the frictional cost.""" start="00:21:07.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think the context switch for people between""" start="00:21:10.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""this doesn't work to actually formulating in""" start="00:21:16.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""words what didn't work,""" start="00:21:17.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""that is a very expensive context which most""" start="00:21:21.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""people will not do. And we're poorer for""" start="00:21:24.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""that. So, I think that when we integrate""" start="00:21:32.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""music brains and other things like that into.""" start="00:21:34.740" video="qanda-emms" id="subtitle"]]
+[[!template text="""Now, of course, music brains will probably,""" start="00:21:37.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""it would be very funny if you pull up your""" start="00:21:41.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""stuff, right? Something that you wrote and""" start="00:21:43.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""you say, hey, music brains match this and""" start="00:21:46.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""it's not there, then it'll probably suggest""" start="00:21:48.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, I've heard that.""" start="00:21:51.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: some wild things. Yeah,""" start="00:21:52.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""because there are, there was a system I was""" start="00:21:58.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""looking at its code for researching stuff for""" start="00:22:02.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""EMS And I'm trying to remember what it's""" start="00:22:04.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""named. It begins with a J,""" start="00:22:05.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""it's this media player,""" start="00:22:07.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""free floss media player that it's like a""" start="00:22:13.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""media server that can cast to a television""" start="00:22:17.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""and stuff like that. And I asked it to""" start="00:22:20.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""automatically label things and the results""" start="00:22:24.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""were horrible. It thought that half of my""" start="00:22:28.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""songs were movies. It thought that JPEGs were""" start="00:22:32.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""songs. It just, it did some,""" start="00:22:35.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""it did incredibly, it's not a solved problem,""" start="00:22:40.520" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think. So the, what I'm thinking with""" start="00:22:44.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""MusicBrainz and those services is that you""" start="00:22:49.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""hit a button and you have you get another""" start="00:22:51.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""pane with a suggestion and you either and you""" start="00:22:57.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""can copy through you can say okay copy this""" start="00:22:59.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""and this in this field over or reject the""" start="00:23:01.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""suggestion and maybe get another 1.""" start="00:23:03.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""So,""" start="00:23:04.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, I like that a lot.""" start="00:23:07.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""That's more like a diff,""" start="00:23:09.160" video="qanda-emms" id="subtitle"]]
+[[!template text="""right? Like you get the diff between the 2""" start="00:23:11.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""and you can apply which changes you like.""" start="00:23:13.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""Yeah. Was it Jellyfin?""" start="00:23:15.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""Is that... Jellyfin? Yeah,""" start="00:23:18.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Jellyfin, yes.""" start="00:23:19.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, And when that happened,""" start="00:23:22.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""did it clobber all your metadata?""" start="00:23:24.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""Or does it just label stuff?""" start="00:23:27.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: No, it...""" start="00:23:28.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Escalate things somewhere inside it and to""" start="00:23:38.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""looking for really, not allow me to do very""" start="00:23:49.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""easily. So I was, so, you know,""" start="00:23:54.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""on 1 hand, it makes me feel,""" start="00:23:56.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""oh, we're not the only ones dealing with""" start="00:23:58.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""this. We're not the only ones struggling with""" start="00:24:00.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""this. On the other hand,""" start="00:24:01.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""it would be nice if that's a paragon that we""" start="00:24:05.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""can look to and say, this is a wonderful way""" start="00:24:08.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""of doing it. Let's incorporate as much of""" start="00:24:11.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, it's a tricky problem,""" start="00:24:15.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""especially if you're modifying people's media""" start="00:24:18.220" video="qanda-emms" id="subtitle"]]
+[[!template text="""files you know so""" start="00:24:19.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: that as we can. yeah I'm also very convinced""" start="00:24:23.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""that so I'm not a mainframe for MMS because""" start="00:24:31.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""I'm old and curmudgeonly essentially in my,""" start="00:24:35.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""in the way they do it.""" start="00:24:37.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""And honestly, I rarely ever,""" start="00:24:40.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""I use the MMS browser when I need to debug""" start="00:24:42.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""the MS browser. I don't,""" start="00:24:44.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""I use very simple commands and I even rarely""" start="00:24:48.740" video="qanda-emms" id="subtitle"]]
+[[!template text="""look at the playlists.""" start="00:24:50.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""That was 1 of the things because when I got""" start="00:24:53.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""into MMS originally when my eyesight started""" start="00:24:56.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""going so I had to rely less and less on GUI""" start="00:24:59.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""interfaces. So that was,""" start="00:25:02.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""so to this day that's how I use EMMS.""" start="00:25:06.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, it's interesting.""" start="00:25:08.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""I remember running into a browser bug because""" start="00:25:13.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""I think just my age, like,""" start="00:25:15.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""I want to be able to tab through and like""" start="00:25:18.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""that was a huge that that changed recently""" start="00:25:20.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""right where you tab and it unfolds in the""" start="00:25:22.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""browser but yeah I realized that people use""" start="00:25:27.620" video="qanda-emms" id="subtitle"]]
+[[!template text="""emms in so many different ways just like any""" start="00:25:30.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""piece of emacs there's there's many ways to""" start="00:25:36.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""do it but appreciate your time I'm gonna""" start="00:25:39.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""actually put together this Christmas tree""" start="00:25:41.880" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 0]: So. Wonderful.""" start="00:25:43.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 3]: behind me. Yeah, just wanted to say hi,""" start="00:25:45.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""meet you in person. But yeah.""" start="00:25:50.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, excellent. I appreciate it a lot and we""" start="00:25:54.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""generate""" start="00:25:55.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: some interesting questions.""" start="00:25:59.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""Yeah, thank you.""" start="00:26:00.780" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 4]: You are currently the only person in this""" start="00:26:03.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""conference.""" start="00:26:03.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm going to have a look at the questions""" start="00:26:13.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""here.""" start="00:26:14.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""Let's see. Let's see. So there is,""" start="00:26:29.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""okay. There's a question here.""" start="00:26:32.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""I like what you said about balancing the""" start="00:26:34.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""concern for software freedom with the worry""" start="00:26:36.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""that this might alienate the package user.""" start="00:26:38.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""I wonder if you have advice for other""" start="00:26:39.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""maintainers how to communicate this sort of""" start="00:26:41.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""thing diplomatically? Yes,""" start="00:26:43.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""when you have to deny implementing a feature""" start="00:26:45.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""for a freedom reason. This in fact happens""" start="00:26:48.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""all the time. A recent example of this was a""" start="00:26:56.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""YouTube download, right,""" start="00:26:58.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""the YouTube download feature.""" start="00:26:59.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""At the time, okay, so stepping back,""" start="00:27:04.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""the request was to have a YouTube download""" start="00:27:07.440" video="qanda-emms" id="subtitle"]]
+[[!template text="""feature integrated strongly into eMMS so that""" start="00:27:11.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""you put in a YouTube URL and you can download""" start="00:27:16.260" video="qanda-emms" id="subtitle"]]
+[[!template text="""the video and play it.""" start="00:27:17.640" video="qanda-emms" id="subtitle"]]
+[[!template text="""And the question isn't really whether you can""" start="00:27:22.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""chain YouTube Downloader or 1 of those things""" start="00:27:24.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""into your EMMS configuration.""" start="00:27:26.600" video="qanda-emms" id="subtitle"]]
+[[!template text="""You can do whatever you want.""" start="00:27:28.140" video="qanda-emms" id="subtitle"]]
+[[!template text="""But the question is, does EMMS actually""" start="00:27:30.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""integrate with it really,""" start="00:27:33.340" video="qanda-emms" id="subtitle"]]
+[[!template text="""really strongly to the extent where it tells""" start="00:27:35.740" video="qanda-emms" id="subtitle"]]
+[[!template text="""you oh you don't need to download install""" start="00:27:37.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""please go ahead and install that or whatever""" start="00:27:40.320" video="qanda-emms" id="subtitle"]]
+[[!template text="""and at the time we checked it we found out""" start="00:27:43.740" video="qanda-emms" id="subtitle"]]
+[[!template text="""that you know the version that we were""" start="00:27:45.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""looking at of the YouTube download or YTDLP""" start="00:27:49.280" video="qanda-emms" id="subtitle"]]
+[[!template text="""or whatever it was called,""" start="00:27:51.720" video="qanda-emms" id="subtitle"]]
+[[!template text="""actually downloaded a good amount of""" start="00:27:56.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""proprietary JavaScript onto your machine and""" start="00:27:59.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""ran it, just as if you were going on to the""" start="00:28:02.300" video="qanda-emms" id="subtitle"]]
+[[!template text="""YouTube page, which is not for me to tell""" start="00:28:06.560" video="qanda-emms" id="subtitle"]]
+[[!template text="""people not to do if they want to do that,""" start="00:28:09.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""but it's absolutely for me not to cause to""" start="00:28:16.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""happen on the user's machine without them.""" start="00:28:18.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""1 of the last thing that I want to do in the""" start="00:28:21.480" video="qanda-emms" id="subtitle"]]
+[[!template text="""world is have a user inside Emacs press a""" start="00:28:25.980" video="qanda-emms" id="subtitle"]]
+[[!template text="""button and have proprietary software get""" start="00:28:29.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""downloaded behind their back and run on their""" start="00:28:32.300" video="qanda-emms" id="subtitle"]]
+[[!template text="""machine that would be disastrous so we had to""" start="00:28:38.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""say no we had to say that's I'm sorry that's""" start="00:28:41.380" video="qanda-emms" id="subtitle"]]
+[[!template text="""beyond the pale and in fact in doing so some""" start="00:28:47.060" video="qanda-emms" id="subtitle"]]
+[[!template text="""people who were using this system said,""" start="00:28:51.100" video="qanda-emms" id="subtitle"]]
+[[!template text="""actually I had no idea it was doing this""" start="00:28:53.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""behind my back. I thought it was just magic.""" start="00:28:56.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""I thought it was a YouTube video without any""" start="00:28:58.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""freedom issues. I'm going to look into it or""" start="00:29:01.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""I'm going to stop using it.""" start="00:29:03.120" video="qanda-emms" id="subtitle"]]
+[[!template text="""So my advice would be Stand firm and just be""" start="00:29:11.180" video="qanda-emms" id="subtitle"]]
+[[!template text="""Not not preachy. Don't tell people what they""" start="00:29:15.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""need to do be very clear about what you stand""" start="00:29:19.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""for and what the project stands for,""" start="00:29:21.900" video="qanda-emms" id="subtitle"]]
+[[!template text="""and so they very clearly know where you""" start="00:29:28.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""stand. And I think that people actually""" start="00:29:30.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""appreciate that more than a political answer,""" start="00:29:36.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""right? That has been my experience.""" start="00:29:43.540" video="qanda-emms" id="subtitle"]]
+[[!template text="""Now, excuse me, taking into account that 1 or""" start="00:29:49.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""2 people will tell you,""" start="00:29:52.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""this is terrible. I'm leaving.""" start="00:29:54.960" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: If you do this,""" start="00:30:00.550" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 1]: This is useless. you're free software or""" start="00:30:01.460" video="qanda-emms" id="subtitle"]]
+[[!template text="""whatever, and just leave.""" start="00:30:03.400" video="qanda-emms" id="subtitle"]]
+[[!template text="""But some people are ornery.""" start="00:30:05.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""That's not necessarily something bad that you""" start="00:30:09.360" video="qanda-emms" id="subtitle"]]
+[[!template text="""did. But that has happened.""" start="00:30:11.680" video="qanda-emms" id="subtitle"]]
+[[!template text="""There are multiple stories.""" start="00:30:14.200" video="qanda-emms" id="subtitle"]]
+[[!template text="""Because the MMS is so old,""" start="00:30:16.840" video="qanda-emms" id="subtitle"]]
+[[!template text="""there are multiple points in which non-free""" start="00:30:20.080" video="qanda-emms" id="subtitle"]]
+[[!template text="""software intersected with the EMS because of""" start="00:30:23.940" video="qanda-emms" id="subtitle"]]
+[[!template text="""multimedia and we had to go the other""" start="00:30:28.580" video="qanda-emms" id="subtitle"]]
+[[!template text="""direction and so far it has served EMS well""" start="00:30:33.300" video="qanda-emms" id="subtitle"]]
+[[!template text="""like the project has died as a result.""" start="00:30:38.240" video="qanda-emms" id="subtitle"]]
+[[!template text="""Of course, can't prove a negative,""" start="00:30:39.800" video="qanda-emms" id="subtitle"]]
+[[!template text="""don't know where we would be if we had taken,""" start="00:30:42.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""gone down that route. I'm pretty sure we""" start="00:30:44.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""would need a new ELPA,""" start="00:30:46.100" video="qanda-emms" id="subtitle"]]
+[[!template text="""and I think being so clearly integrated with""" start="00:30:50.860" video="qanda-emms" id="subtitle"]]
+[[!template text="""emacs is a huge benefit to eMMS because it's""" start="00:30:55.040" video="qanda-emms" id="subtitle"]]
+[[!template text="""it allows people to install it very easily.""" start="00:30:57.660" video="qanda-emms" id="subtitle"]]
+[[!template text="""And those are all the questions that I can""" start="00:31:08.760" video="qanda-emms" id="subtitle"]]
+[[!template text="""see.""" start="00:31:09.020" video="qanda-emms" id="subtitle"]]
+[[!template text="""[Speaker 2]: You""" start="00:31:15.060" video="qanda-emms" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20emms%3A%20Emacs%20MultiMedia%20System%20%28EMMS%29)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/emms-before.md b/2023/info/emms-before.md
new file mode 100644
index 00000000..d45449c6
--- /dev/null
+++ b/2023/info/emms-before.md
@@ -0,0 +1,46 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 39-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="emms-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="emms-mainVideo" data="""
+00:00.000 Introduction
+01:03.320 The structure of this talk
+01:21.320 Introduction to Emms: The practical part
+08:04.240 The modeline
+11:01.200 Meta-playlist mode
+11:29.860 The browser
+13:19.920 How Emms works: The technical part
+16:23.820 The Emms core
+16:36.440 Tracks
+17:18.460 Playlist
+18:22.080 Sources
+19:22.160 Players
+20:20.520 Info
+21:36.660 The cache
+22:51.620 Healthy back and forth: mpv, mpd, and GNU.FM
+23:31.560 MPV
+24:47.470 MPD
+26:07.440 GNU FM and Libre FM
+27:12.560 How we work: Emms development
+28:52.590 The Rime Of The Ancient Maintainer
+29:06.080 The life and times of an Emms patch
+31:24.080 Let It Go: The release process
+32:23.400 It Is Not In Our Stars, But In Ourselves: Future directions
+34:44.849 Development policies: Interface language
+36:05.980 Development policies: Freedom
+38:12.370 Acknowledgements
+
+"""]]<div></div>Duration: 38:38 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--main.opus">Download --main.opus (21MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--main.webm">Download --main.webm (139MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin.outline">Download .outline</a></li><li><a href="https://toobnix.org/w/ppdF62LysvxpXgZVaeF9wk">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="emms-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="emms-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--answers.opus"></audio></div><div></div>Duration: 32:38 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--answers.json">Download --answers.json (1.3MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--answers.opus">Download --answers.opus (19MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-emms--emacs-multimedia-system-emms--yoni-rabkin--answers.webm">Download --answers.webm (52MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/emms-nav.md b/2023/info/emms-nav.md
new file mode 100644
index 00000000..31d2bfad
--- /dev/null
+++ b/2023/info/emms-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/cubing">Speedcubing in Emacs</a>
+Next by track: <a href="/2023/talks/steno">Programming with steno</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/eval-after.md b/2023/info/eval-after.md
new file mode 100644
index 00000000..d82abf2a
--- /dev/null
+++ b/2023/info/eval-after.md
@@ -0,0 +1,231 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="eval-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:04.880" video="mainVideo-eval" id="subtitle"]]
+
+[[!template text="""Hello, and welcome to EmacsConf 2023!""" start="00:00:04.880" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""My name is Musa Al-hassy,""" start="00:00:10.001" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and I will be talking about &quot;REPL-driven development.&quot;""" start="00:00:12.109" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I like programming languages so much.""" start="00:00:15.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I want to use them all over the place.""" start="00:00:18.269" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I got a PhD in the topic.""" start="00:00:20.269" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So let's just dive in.""" start="00:00:23.069" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""This is a lightning talk,""" start="00:00:25.349" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""so the details will be available in the repository.""" start="00:00:27.949" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Links to longer videos and GIFs""" start="00:00:31.309" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""for those who are interested.""" start="00:00:33.469" video="mainVideo-eval" id="subtitle"]]
+
+[[!template new="1" text="""The wonders of C-x C-e""" start="00:00:35.989" video="mainVideo-eval" id="subtitle"]]
+
+[[!template text="""So the wonderful thing about Emacs""" start="00:00:35.989" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""is that you can execute Lisp anywhere.""" start="00:00:37.309" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""For example, I can go to this piece of Lisp,""" start="00:00:40.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""press Ctrl-x Ctrl-e (`C-x C-e`)""" start="00:00:42.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and get a little pop-up.""" start="00:00:45.576" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Alright, so here I pressed `C-x C-e`""" start="00:00:47.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and this is what it ran.""" start="00:00:49.669" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""And what this package gives you""" start="00:00:51.389" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""is the same ability""" start="00:00:52.776" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""for any language of your choosing.""" start="00:00:54.509" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So for example, here is some Java,""" start="00:00:56.909" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and I bound it to Ctrl-x, Ctrl-j (`C-x C-j`).""" start="00:00:59.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So I say `C-x C-j`, and this runs some code,""" start="00:01:02.469" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and over here I get a little pop-up.""" start="00:01:07.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""The wonderful thing about""" start="00:01:13.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""being able to run code from anywhere""" start="00:01:15.069" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""is that you can keep it in normal text files""" start="00:01:16.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""or any kind of file you like.""" start="00:01:19.029" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""For example, you can have hyperlinks,""" start="00:01:20.629" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""as it were…, like this one.""" start="00:01:23.669" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""`C-x C-e`, and now we can see this down here.""" start="00:01:25.109" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Learn about it.""" start="00:01:28.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""But being able to run other languages besides Emacs""" start="00:01:30.789" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""lets us do some interesting things.""" start="00:01:34.189" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""For example, in the middle of a JavaScript program,""" start="00:01:36.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""you might write a line like this. `C-x C-n`.""" start="00:01:39.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""And that says down here""" start="00:01:43.429" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""`javascript-eval` in the mode line,""" start="00:01:45.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and so this just checks that some endpoint""" start="00:01:47.269" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""is working as intended.""" start="00:01:49.643" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So you don't need to use an external tool""" start="00:01:51.189" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""to check endpoints.""" start="00:01:52.749" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You can just use Emacs in your favorite language.""" start="00:01:53.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You know, you can keep your spirit up.""" start="00:01:57.469" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So, `C-x C-a` runs `applescript-eval`.""" start="00:01:59.629" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""[Computer]: You can do it, buddy.""" start="00:02:03.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""[Musa]: Maybe you heard that in the background?""" start="00:02:06.376" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""The cool thing is, your code immediately takes form.""" start="00:02:13.269" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Right away, you see it doing things, you know,""" start="00:02:15.389" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""altering your environment.""" start="00:02:18.469" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""For example, this is JavaScript,""" start="00:02:20.349" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and JavaScript here is gonna change Emacs for us.""" start="00:02:24.429" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So `C-x C-n`. And you can see down here""" start="00:02:28.349" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""`javascript-eval` was invoked.""" start="00:02:32.109" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""It returned true, and this line of JavaScript""" start="00:02:34.669" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""altered our Emacs. So that's really nice.""" start="00:02:38.789" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So you don't need to use just Emacs Lisp if you like.""" start="00:02:41.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You can use other systems.""" start="00:02:43.749" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""As you saw, the output is shown in overlays.""" start="00:02:46.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So here's, for example, `C-x C-p` to run""" start="00:02:50.069" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""some Python code.""" start="00:02:52.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Notice it blinked in red""" start="00:02:54.109" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""because I thought red was nice.""" start="00:02:55.476" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You can configure as you like.""" start="00:02:56.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""And if you hover over it,""" start="00:02:58.389" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""you can see the solution there,""" start="00:02:59.409" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and you can see it in a variety of familiar ways""" start="00:03:01.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""if you use `C-x C-e` regularly.""" start="00:03:04.669" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You can insert the results.""" start="00:03:08.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You can find documentation about them.""" start="00:03:09.989" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""The idea here is that""" start="00:03:14.269" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""you have this familiar Lisp workflow""" start="00:03:15.989" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""with `C-x C-e`, and this package ports it over""" start="00:03:20.389" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""to your favorite language out.""" start="00:03:24.989" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So you can eval things,""" start="00:03:27.069" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""you can insert them, and do as you like.""" start="00:03:28.343" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I think that's really neat.""" start="00:03:30.789" video="mainVideo-eval" id="subtitle"]]
+
+[[!template new="1" text="""An overview of REPL Driven Development""" start="00:03:35.809" video="mainVideo-eval" id="subtitle"]]
+
+[[!template text="""This package allows you to do""" start="00:03:35.809" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""REPL driven development.""" start="00:03:37.209" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""In that, you can use it to grow your program.""" start="00:03:39.109" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You don't need to restart it.""" start="00:03:42.309" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You can see changes live.""" start="00:03:43.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So here's, for example, this is in a Java runtime.""" start="00:03:45.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""You can see some balls bouncing around.""" start="00:03:50.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I don't really know which one is the second one,""" start="00:03:52.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""but let's increase its size. `C-x C-j`.""" start="00:03:54.509" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""And this one increased in size,""" start="00:03:57.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and you can see down here I pressed `C-x C-j`.""" start="00:04:00.189" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Let's change the color to blue,""" start="00:04:02.189" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""`C-x C-j`, the color is blue.""" start="00:04:05.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So all these changes are happening live.""" start="00:04:09.309" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Three balls isn't really a ball pit.""" start="00:04:12.376" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Let's go to 50 balls. There you go.""" start="00:04:14.429" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So it's nice that you can do this""" start="00:04:18.989" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""without leaving your environment,""" start="00:04:21.469" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""without building, you can rapidly modify and see.""" start="00:04:23.209" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I think that's nice.""" start="00:04:26.189" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Unfortunately, I'm at the halfway point,""" start="00:04:29.776" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""so I won't be able to work through""" start="00:04:32.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""some of these nice problems,""" start="00:04:35.309" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""but you can see the videos""" start="00:04:37.109" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""or GIFs on the associated repo.""" start="00:04:38.676" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Likewise for this one.""" start="00:04:41.509" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""This one would have been a lot of fun,""" start="00:04:42.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""but unfortunately, we're running short on time.""" start="00:04:43.909" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Apologies.""" start="00:04:46.509" video="mainVideo-eval" id="subtitle"]]
+
+[[!template new="1" text="""REPL Driven Development with Java""" start="00:04:51.143" video="mainVideo-eval" id="subtitle"]]
+
+[[!template text="""The neat thing here is: this package tries to""" start="00:04:51.143" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""bring the feeling of Lisp to other languages.""" start="00:04:56.209" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So the idea of a REPL, or a Read Eval Print Loop""" start="00:05:00.269" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""is R and P are data interchange protocols.""" start="00:05:03.509" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Unfortunately, not every language has those,""" start="00:05:06.949" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""but this package kind of encourages us to""" start="00:05:09.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""implement them if we don't have them.""" start="00:05:12.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Let me show you an example.""" start="00:05:14.643" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""What do I mean here?""" start="00:05:16.909" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""This is a Java file.""" start="00:05:20.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I've loaded this definition in.""" start="00:05:22.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""We can press `C-x C-j`,""" start="00:05:25.189" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and you see it's a list of person.""" start="00:05:28.543" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I didn't give this a name, so its name is $59.""" start="00:05:30.909" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""If I hover over it, we can see the definition again.""" start="00:05:33.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So it's a person called Hamid, age 5,""" start="00:05:40.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""another person called Jaafar, age 6.""" start="00:05:44.429" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""This pretty printing is nice for me as a human,""" start="00:05:46.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""but I can't execute this. This isn't valid Java.""" start="00:05:52.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So I could do `C-u C-x C-j`.""" start="00:05:56.349" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""If I have the help of a read protocol inserted.""" start="00:06:00.609" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Sorry, `C-x C-j`. There it is.""" start="00:06:05.109" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So look, it gives me a `new Person`""" start="00:06:09.469" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""with the construction everything.""" start="00:06:12.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Now I can work with.""" start="00:06:14.349" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Java can work with this.""" start="00:06:16.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""So this can be quite useful for regression testing""" start="00:06:17.949" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""or just to find out what your method spits out.""" start="00:06:21.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""We can do the same thing. Here's a bigger example.""" start="00:06:25.749" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Trying to see it in the overlay is a bit cramped.""" start="00:06:29.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""We can say `C-u C-x C-j`.""" start="00:06:32.389" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""All right, and now we have executable code.""" start="00:06:34.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Okay, this is neat.""" start="00:06:38.669" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""If you want to do something with it.""" start="00:06:40.876" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I'm not really interested. I have four new persons.""" start="00:06:42.389" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""If I really want to look at this,""" start="00:06:45.789" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I can say `M-x java-eval-navigate-output`,""" start="00:06:49.309" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and now I see my output as this hierarchical tree.""" start="00:06:55.649" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I go down, I can see what's inside these,""" start="00:07:00.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""what's the type of this thing, what's in there.""" start="00:07:03.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""All right, so that's nice.""" start="00:07:06.709" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""The idea is that we're not limited to""" start="00:07:09.349" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""just textual output.""" start="00:07:14.189" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""We can render output,""" start="00:07:15.629" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""thanks to the power of Emacs, in any way we want.""" start="00:07:19.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""In a browser, in a LaTeX file, in an Org mode (file),""" start="00:07:22.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""however we really desire.""" start="00:07:26.749" video="mainVideo-eval" id="subtitle"]]
+
+[[!template new="1" text="""Bring your own Read Protocol""" start="00:07:28.029" video="mainVideo-eval" id="subtitle"]]
+
+[[!template text="""And if our language doesn't have an easy protocol,""" start="00:07:28.029" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""so what I did for Java in particular was:""" start="00:07:32.989" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""you take a blob, and you use some""" start="00:07:36.143" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""parsing expression grammars, or if you really want""" start="00:07:38.643" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""regular expression pattern matching,""" start="00:07:43.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and you get some property list out,""" start="00:07:44.949" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and then you construct an executable expression""" start="00:07:46.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""out of that. Like this `new Person`.""" start="00:07:51.349" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""It's nice that you can do these kind of things""" start="00:07:53.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and that this software encourages you to do them.""" start="00:07:56.749" video="mainVideo-eval" id="subtitle"]]
+
+[[!template new="1" text="""Use Case: RDD & Job Interviews""" start="00:07:59.669" video="mainVideo-eval" id="subtitle"]]
+
+[[!template text="""So one use case I actually use""" start="00:07:59.669" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""besides learning things is…""" start="00:08:07.549" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""oops oops oopsies oopsies showing you metadata""" start="00:08:10.909" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""you shouldn't be looking at.""" start="00:08:14.776" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Don't look at my metadata. Sorry about that.""" start="00:08:15.509" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""One place I actually use this besides learning""" start="00:08:19.409" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and trying new libraries and APIs""" start="00:08:23.209" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and stuff like that is,""" start="00:08:25.029" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""for example, when I interviewed for jobs""" start="00:08:26.776" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""last year (I was changing jobs),""" start="00:08:29.509" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I would share my screen,""" start="00:08:33.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and if the interviewer gave me""" start="00:08:34.676" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""some inputs and outputs to play with,""" start="00:08:37.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I could do essentially""" start="00:08:39.949" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""some sort of test driven development""" start="00:08:41.576" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and constantly evaluate things""" start="00:08:42.976" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""right in front of the interviewer.""" start="00:08:45.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""For some design questions""" start="00:08:46.589" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""rather than sketching out my ideas in a Google Doc,""" start="00:08:49.949" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I would share my screen and be like,""" start="00:08:53.909" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""&quot;Hey, here's actual executable code,""" start="00:08:55.509" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""we can stub some things out""" start="00:08:57.989" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and have some types,&quot;""" start="00:08:59.229" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and the idea is we can still check things""" start="00:09:00.576" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and run them right there and then,""" start="00:09:03.476" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""which I thought was quite nice, and it helps to""" start="00:09:05.643" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""clarify your thought process, I guess.""" start="00:09:08.143" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Anyhow, so that's my time,""" start="00:09:10.309" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""I hope you've enjoyed this little package,""" start="00:09:15.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""and again, sorry for the rush,""" start="00:09:19.829" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""it's a lightning talk.""" start="00:09:22.869" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Feel free to find everything on the associated repo.""" start="00:09:24.149" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""And have a wonderful December Saturday.""" start="00:09:29.069" video="mainVideo-eval" id="subtitle"]]
+[[!template text="""Take care! Bye bye, everyone.""" start="00:09:34.389" video="mainVideo-eval" id="subtitle"]]
+
+
+
+Captioner: bhavin192
+
+Questions or comments? Please e-mail [Alhassy@gmail.com](mailto:Alhassy@gmail.com?subject=Comment%20for%20EmacsConf%202023%20eval%3A%20Editor%20Integrated%20REPL%20Driven%20Development%20for%20all%20languages)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/eval-before.md b/2023/info/eval-before.md
new file mode 100644
index 00000000..3ea735b8
--- /dev/null
+++ b/2023/info/eval-before.md
@@ -0,0 +1,20 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 10-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
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="eval-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="eval-mainVideo" data="""
+00:04.880 Introduction
+00:35.989 The wonders of C-x C-e
+03:35.809 An overview of REPL Driven Development
+04:51.143 REPL Driven Development with Java
+07:28.029 Bring your own Read Protocol
+07:59.669 Use Case: RDD & Job Interviews
+
+"""]]<div></div>Duration: 09:37 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--main.opus">Download --main.opus (4.2MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--main.webm">Download --main.webm (29MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-eval--editor-integrated-repl-driven-development-for-all-languages--musa-alhassy--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/74srjNx1cgMr5MsJ9NWNNi">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/eval-nav.md b/2023/info/eval-nav.md
new file mode 100644
index 00000000..346bbc65
--- /dev/null
+++ b/2023/info/eval-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/overlay">Improving compiler diagnostics with overlays</a>
+Next by track: <a href="/2023/talks/repl">REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/extending-after.md b/2023/info/extending-after.md
new file mode 100644
index 00000000..69f918bb
--- /dev/null
+++ b/2023/info/extending-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20extending%3A%20GNU%20Emacs%20for%20electronics%2C%20note-taking%2C%20and%20as%20lightweight%20IDE)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/extending-before.md b/2023/info/extending-before.md
new file mode 100644
index 00000000..376dee32
--- /dev/null
+++ b/2023/info/extending-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-min talk followed by live web conference Q&A
+Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
+Status: Waiting for video from speaker
+
+
+
+
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/extending-nav.md b/2023/info/extending-nav.md
new file mode 100644
index 00000000..5a84a12c
--- /dev/null
+++ b/2023/info/extending-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/test">What I learned by writing test cases for GNU Hyperbole</a>
+Next by track: <a href="/2023/talks/flat">A modern Emacs look-and-feel without pain</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/flat-after.md b/2023/info/flat-after.md
new file mode 100644
index 00000000..c743ddf6
--- /dev/null
+++ b/2023/info/flat-after.md
@@ -0,0 +1,262 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="flat-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""That's how I came into this.""" start="00:00:01.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Finally, the next big thing was starting""" start="00:00:10.120" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""2005, I went fully Linux and then for Mac OS,""" start="00:00:16.100" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""and I switched to vanilla self-compiled""" start="00:00:19.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""versions of Emacs. So what do I want to show?""" start="00:00:25.279" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Couple of time ago in the development list""" start="00:00:30.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""there was a short exchange about the nil and""" start="00:00:34.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the flood button, flood button button styles,""" start="00:00:38.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""saying that it was equivalent and they are""" start="00:00:42.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""not. So instead of starting a Flame Wars,""" start="00:00:45.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I thought it was better to go and publicize""" start="00:00:49.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the goodies you get with Flood Button.""" start="00:00:54.520" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And this is what I'm going to be showing you""" start="00:00:57.260" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""practically. Why Flood Button?""" start="00:01:00.140" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""2005, more or less, I came across DOOM Emacs,""" start="00:01:06.020" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""which was nice. And I,""" start="00:01:07.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""especially I liked the DOOM mode line,""" start="00:01:12.180" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""which was, I think it is,""" start="00:01:13.740" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""it is, and it was cool at that time.""" start="00:01:15.560" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I was using other themes and it was not that""" start="00:01:20.280" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""easy to adapt for these other themes and even""" start="00:01:23.760" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""less when you are in an environment with""" start="00:01:26.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""dynamic themes like mine because I tend to""" start="00:01:30.060" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""adapt the theme to the light conditions in my""" start="00:01:36.500" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""working place. So what I did at the end was""" start="00:01:40.520" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""coming up with a style for faces called flood""" start="00:01:44.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""button for boxes, called flood button as a""" start="00:01:49.020" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""simple way to get modern looking buttons and""" start="00:01:52.640" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""bars. So flood button is a face style for""" start="00:01:59.160" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""boxes within buttons that automatically sets""" start="00:02:02.380" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the border color to the background of the""" start="00:02:05.240" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""face, as opposed to nil,""" start="00:02:08.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""which uses the foreground.""" start="00:02:10.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And this produces a very doom mode line-ish""" start="00:02:14.380" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""look and feel. And if you want to know where""" start="00:02:18.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I use it, basically for the mode line and I'm""" start="00:02:21.580" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""using tab line for a long time now.""" start="00:02:24.720" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So for the mode line and for tab line to""" start="00:02:28.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""organize my windows. And since an image is""" start="00:02:35.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""worth more than a thousand words,""" start="00:02:37.160" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm just going to stop this and start sharing""" start="00:02:40.860" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""a small Emacs environment I have ready for""" start="00:02:44.120" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""this talk where I'm going to show you a flat""" start="00:02:47.020" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""button in real life. So if you hold with me,""" start="00:02:50.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm going to share a window.""" start="00:02:56.100" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""It's going to be this 1.""" start="00:02:58.840" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Share and share. Here we are.""" start="00:03:01.386" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And share. Here we are.""" start="00:03:01.780" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So this is an Emacs which is recent,""" start="00:03:08.040" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""reasonably recent. Nothing especially it was""" start="00:03:13.460" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""compiled, it's Emacs 30.""" start="00:03:14.900" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And I think what I have here is something""" start="00:03:18.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""that I compiled last weekend.""" start="00:03:19.900" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I was tempted to use something compiled this""" start="00:03:24.940" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""morning, but I saw a patch by Ellie regarding""" start="00:03:28.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""something in the faces and I didn't want to""" start="00:03:30.640" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""live a too risky life here,""" start="00:03:34.160" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""so I'm going to use this.""" start="00:03:36.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm not starting the ZMAC from the normal""" start="00:03:40.740" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Emacs directory. I have my own,""" start="00:03:44.160" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I have a special customization directory for""" start="00:03:49.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Emacs, and this is this 1.""" start="00:03:51.560" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And here what I have is basically an early""" start="00:03:57.760" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""init and an init. So the early init,""" start="00:04:01.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""which is quite stupid as you see,""" start="00:04:03.680" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the only thing that it does is getting rid of""" start="00:04:07.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""most of the things that I'm not going to be""" start="00:04:10.640" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""using here. So I have no toolbar,""" start="00:04:12.740" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""no scroll bar, no tool tips.""" start="00:04:15.700" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I don't like global highlighting my line art,""" start="00:04:20.560" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""so I'm not using that.""" start="00:04:21.720" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm not using dialogues.""" start="00:04:22.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And to start up easier,""" start="00:04:25.560" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I don't inhibit, I don't use any startups""" start="00:04:29.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""screen. So just to make sure that everything""" start="00:04:34.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""is correct, that everything is as I want,""" start="00:04:41.360" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""just to show you my Emacs.""" start="00:04:44.840" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""As you see the Emacs 30,""" start="00:04:49.240" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""which was built on the 26th of November which""" start="00:04:53.900" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""was not very long ago.""" start="00:04:55.520" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And now here comes the real magic.""" start="00:04:57.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""My init and my init file.""" start="00:05:00.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Maybe I go to my init file here.""" start="00:05:04.020" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""What I have is just a variable saying that I""" start="00:05:11.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""want an extra 8 pixels for my mode line.""" start="00:05:15.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And I have 2 functions.""" start="00:05:18.240" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""1 is modifying the mode line,""" start="00:05:23.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""both the active and the inactive,""" start="00:05:25.920" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""using the nil style with this line width of 8""" start="00:05:32.180" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""pixels and to compare with it what I have""" start="00:05:36.380" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""here is another function which will customize""" start="00:05:39.140" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the face for mode line and instead of using""" start="00:05:42.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""nil I'm using here flat button.""" start="00:05:44.960" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So this is my all the magic that I need.""" start="00:05:49.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm going to copy that and I'm going to go to""" start="00:05:53.240" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the scratch buffer which is always the best""" start="00:05:57.340" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""way of checking these things.""" start="00:05:58.780" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""When I normally work with themes,""" start="00:06:05.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""what I do is if I want to further modify the""" start="00:06:09.320" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""themes, I add an advice to load a theme after""" start="00:06:13.620" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the theme is loaded. In this first case,""" start="00:06:17.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""what I'm going to be doing is adding the nil""" start="00:06:21.280" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""sign so that you can see it.""" start="00:06:22.680" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And once this is done,""" start="00:06:30.240" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm going to load 1 of the Modo Soprandi""" start="00:06:33.000" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""themes, the tinted 1. Here we are.""" start="00:06:42.600" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And as you can see, when I loaded the theme,""" start="00:06:56.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""what I see here is my mode line with the""" start="00:07:01.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""x-ray pixels using since I'm using the nil""" start="00:07:05.320" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""style it's using the background color and""" start="00:07:09.520" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""this gives you this thick black line there""" start="00:07:12.620" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""furthermore if you have the inactive line you""" start="00:07:17.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""see that it is grayed out so it's always""" start="00:07:20.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""using the foreground color.""" start="00:07:22.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So now what I'm going to do is to load the""" start="00:07:33.300" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""models we have any which is the dark theme""" start="00:07:35.200" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""and this case what you see is the love deal""" start="00:07:40.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the lines always using the foreground color""" start="00:07:43.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""use the Give you an extra 8 pixels of a white""" start="00:07:49.200" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""color here, which is not what we really want.""" start="00:07:53.000" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""At least not what I wanted to have.""" start="00:07:58.900" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So what I'm going to do now is I'm going to""" start="00:08:01.560" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""remove this advice and add the flat style""" start="00:08:08.940" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""thing, flat style function,""" start="00:08:12.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""so that we're going to do the same.""" start="00:08:15.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""But now when I load the themes I'm going to""" start="00:08:18.380" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""have a flat button style for the mode line""" start="00:08:20.760" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""and you'll see the difference.""" start="00:08:21.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So if I now load Modo Software Andy theme,""" start="00:08:29.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""tint it, what I get here is as you see I get""" start="00:08:35.380" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""a solid mode line which is a bit more which""" start="00:08:40.520" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""is wider than the normal mode line And if I""" start="00:08:49.240" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""go to the dark theme, I am going to see,""" start="00:08:53.140" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""you're going to see that now the theme""" start="00:08:55.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""changes and I have a mode line which is,""" start="00:08:59.860" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""if not the doom mode line,""" start="00:09:02.700" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""quite close to the Doom mode line.""" start="00:09:08.260" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Where do I use this? Personally,""" start="00:09:11.200" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I use it for the mode line and for the tab""" start="00:09:15.280" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""line, as I've said. And it gives me this""" start="00:09:18.960" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""clean themes with thicker mode line and tab""" start="00:09:27.040" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""lines which at least in my personal feeling""" start="00:09:33.620" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""look quite modern. And this will be my""" start="00:09:40.160" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""demonstration. So I'm going to stop sharing""" start="00:09:43.820" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the screen and I'm going to try and see if""" start="00:09:46.820" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""there's anything on the on the chat.""" start="00:09:49.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And I just wanted to know if there are any""" start="00:09:57.040" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""questions. Thank you Pedro.""" start="00:10:01.240" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Yeah We are now into the Q&A portion of the""" start="00:10:05.000" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""talk. So if folks have questions,""" start="00:10:06.420" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""please post them on IRC or on the pad and""" start="00:10:10.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""we'll take them up here.""" start="00:10:11.040" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Okay, I see a question here saying,""" start="00:10:25.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""do you plan to upstream the style into""" start="00:10:28.520" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""core-remix? It's part of core-remix since""" start="00:10:32.580" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Emacs 29, so you have it.""" start="00:10:35.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""How difficult to...I mean,""" start="00:10:49.060" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""you already have the flat button style in""" start="00:10:54.320" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Core Remax. And you've seen that the main""" start="00:10:57.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""thing is, if you want to have a thing like""" start="00:11:00.740" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""that, you just have to customize the face.""" start="00:11:06.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I don't think it's too difficult to do.""" start="00:11:10.920" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""It's adding the style that you want.""" start="00:11:13.380" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So if you want to see it again,""" start="00:11:17.360" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm going to go and share the screen once""" start="00:11:20.860" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""again and show you the only thing that you""" start="00:11:23.980" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""really need to do. And control X 1,""" start="00:11:31.740" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""control X buffer to init.""" start="00:11:34.680" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So this is what you would have to do to get""" start="00:11:41.040" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""your mode line or mode line inactive with a""" start="00:11:48.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""flat button style. So what you do is you get""" start="00:11:52.360" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""your face like this, the face that you want""" start="00:11:56.120" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""to modify. You say that you inherit from the""" start="00:11:59.640" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""original face and what you do is that you add""" start="00:12:02.920" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""a box with the line width that you want and""" start="00:12:06.820" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the style plug button.""" start="00:12:08.040" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I don't think it's too difficult to do.""" start="00:12:10.900" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""How much work was involved in implementing""" start="00:12:23.100" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""this style? It is not 1 of the biggest""" start="00:12:27.360" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""patches you have in Emacs.""" start="00:12:28.940" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""It was my first patch,""" start="00:12:32.260" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""so it was like 20 liners.""" start="00:12:34.500" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""It's not too much. Yes,""" start="00:12:40.280" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I am going to go and...""" start="00:12:44.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Oops. SKB and... There you are.""" start="00:12:54.733" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And there you are. I've checked it for copy""" start="00:12:58.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""and paste. Of course, then what you have to""" start="00:13:05.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""do is to add an advice and add this thing""" start="00:13:09.440" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""after the add this code after the well after""" start="00:13:16.680" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""you've loaded the theme.""" start="00:13:17.760" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""It says, ModeLine and ModeLineInactive.""" start="00:13:22.420" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'm also using it for TabLine and""" start="00:13:27.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""TabLineInactive and all this kind of things.""" start="00:13:29.820" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Thanks.""" start="00:13:30.060" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Thanks. Any other questions?""" start="00:14:00.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Reactions? Thank you. Thank you.""" start="00:14:35.020" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Okay, I think we still have about 6 or 7 more""" start="00:15:04.160" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""minutes of live Q&A on stream,""" start="00:15:05.840" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""so if folks have any more questions,""" start="00:15:07.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""please do feel free to post them on the pad.""" start="00:15:09.940" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Silence. Silence. Silence.""" start="00:15:30.060" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Well, do you teach eMAX to any of your""" start="00:16:02.280" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""university students? As such,""" start="00:16:04.700" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""there's no course that we teach,""" start="00:16:08.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""but in tutorships and in tutoring sessions,""" start="00:16:12.800" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""when we do practical things,""" start="00:16:15.460" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""and I do a lot, I tend to use Emacs for all""" start="00:16:21.100" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""the tasks so that the students get involved""" start="00:16:24.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""in it. I also have a small introduction to""" start="00:16:28.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Emacs that I share with my students.""" start="00:16:29.640" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So So every year I have 2 or 3 new adepts.""" start="00:16:33.400" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""We have a question on IRC.""" start="00:17:43.900" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Someone asking can you please show what the""" start="00:17:46.920" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""tab line looks like? Just a second.""" start="00:17:53.160" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""This would be like this.""" start="00:17:56.880" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""For that I'm going to use my regular Emacs.""" start="00:18:03.096" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Just my my regular emacs so just let me fire""" start="00:18:06.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""it up. Sure.""" start="00:18:09.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""And""" start="00:18:23.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""That's my current situation with the tab""" start="00:18:39.760" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""line. I do have a couple of functions.""" start="00:18:42.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So this is 1 of the things that I use.""" start="00:18:44.680" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""As you see, both the tab line here and the""" start="00:18:51.500" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""mode line change. And the other thing is I""" start="00:18:57.040" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""can, this is for some situations,""" start="00:19:00.520" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""not currently because it's just later,""" start="00:19:03.600" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""it's a bit too dark. But this is for light""" start="00:19:06.420" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""days. I have like 3 or 4 themes that I can""" start="00:19:10.260" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""switch to these are the themes that I""" start="00:19:15.020" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""normally use This is how the tab line looks.""" start="00:19:18.120" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""This is how the tab line here looks with the""" start="00:19:22.660" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""with a flat button style.""" start="00:19:28.280" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Looks great, Thank you for sharing.""" start="00:19:35.640" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""You're welcome.""" start="00:19:37.200" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Okay, I think we have 2 or 3 more minutes.""" start="00:19:50.720" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""So if folks, if you have any final questions""" start="00:19:53.600" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""for Pedro, please post them in.""" start="00:19:55.480" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Okay. Okay.""" start="00:20:37.360" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Okay.""" start="00:20:54.260" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""No further questions. Yeah,""" start="00:21:34.540" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""it seems we don't have any further questions.""" start="00:21:36.380" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Just another audience member also thanking""" start="00:21:39.100" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""you on the chat. So with that,""" start="00:21:44.060" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""I'll say Thank you very much,""" start="00:21:45.320" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Pedro, for your great talk and for the Q&A,""" start="00:21:47.080" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""for your work and for helping spreading the""" start="00:21:50.220" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""joy of Emacs. Okay, thanks.""" start="00:21:52.360" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Thank you. Bye-bye. It was a nice experience""" start="00:21:56.140" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""here. Very nice tool. Cheers.""" start="00:21:59.200" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Awesome. Take care. Bye.""" start="00:22:01.640" video="mainVideo-flat" id="subtitle"]]
+[[!template text="""Bye. Bye.""" start="00:22:02.720" video="mainVideo-flat" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20flat%3A%20A%20modern%20Emacs%20look-and-feel%20without%20pain)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/flat-before.md b/2023/info/flat-before.md
new file mode 100644
index 00000000..fdae80b7
--- /dev/null
+++ b/2023/info/flat-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 23-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="flat-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 22:20 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.opus">Download --main.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--main.webm">Download --main.webm (121MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-flat--a-modern-emacs-lookandfeel-without-pain--pedro-a-aranda--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/1DRDY8vZK3SW5M8zAPJQSp">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/flat-nav.md b/2023/info/flat-nav.md
new file mode 100644
index 00000000..02ba0748
--- /dev/null
+++ b/2023/info/flat-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/world">GNU Emacs: A World of Possibilities</a>
+Next by track: <a href="/2023/talks/emacsen">The Emacsen family, the design of an Emacs and the importance of Lisp</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/gc-after.md b/2023/info/gc-after.md
new file mode 100644
index 00000000..90c0a853
--- /dev/null
+++ b/2023/info/gc-after.md
@@ -0,0 +1,964 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="gc-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-gc" id="subtitle"]]
+
+[[!template text="""Hello everyone, my name is Ihor Radchenko,""" start="00:00:00.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you may know me from Org Mailing List.""" start="00:00:04.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""However, today I'm not going to talk about Org Mode.""" start="00:00:07.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Today I'm going to talk about""" start="00:00:09.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Emacs performance and how it's affected""" start="00:00:11.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""by its memory management code.""" start="00:00:14.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""First, I will introduce the basic concepts""" start="00:00:19.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of Emacs memory management and what garbage collection is.""" start="00:00:21.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Then I will show you user statistics""" start="00:00:26.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""collected from volunteer users over the last half year""" start="00:00:30.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and I will end with some guidelines""" start="00:00:34.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""on how to tweak Emacs garbage collection customizations""" start="00:00:39.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to optimize Emacs performance""" start="00:00:44.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and when it's necessary or not to do.""" start="00:00:47.480" video="mainVideo-gc" id="subtitle"]]
+
+[[!template new="1" text="""About garbage collection in Emacs""" start="00:00:51.080" video="mainVideo-gc" id="subtitle"]]
+
+[[!template text="""Let's begin. What is garbage collection?""" start="00:00:51.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""To understand what is garbage collection,""" start="00:00:54.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we need to realize that anything you do in Emacs""" start="00:00:56.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is some kind of command. Any command is most likely""" start="00:00:59.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""running some Elisp code. Every time you run Elisp code,""" start="00:01:02.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you most likely need to locate certain memory in RAM.""" start="00:01:05.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Some of this memory is retained for a long time""" start="00:01:09.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and some of this memory is transient.""" start="00:01:12.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Of course, Emacs has to clear this transient memory""" start="00:01:15.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""from time to time, to not occupy all the possible RAM""" start="00:01:19.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""in the computer. In this small example,""" start="00:01:21.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we have one global variable""" start="00:01:21.448" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that is assigned a value,""" start="00:01:28.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but when assigning the value,""" start="00:01:31.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we first allocate a temporary variable""" start="00:01:33.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then a temporary list""" start="00:01:35.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and only retain some part of this list""" start="00:01:37.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""in this global variable.""" start="00:01:40.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""In terms of memory graph""" start="00:01:42.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we can represent this as two variable slots,""" start="00:01:44.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""one transient, one permanent,""" start="00:01:50.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then a list of three cons cells,""" start="00:01:53.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""part of which is retained as a global variable""" start="00:01:56.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but part of it which is a temporary variable symbol.""" start="00:02:01.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""The first term of the list is not used""" start="00:02:05.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and it might be cleared at some point.""" start="00:02:07.680" video="mainVideo-gc" id="subtitle"]]
+
+[[!template new="1" text="""Garbage collection in Emacs""" start="00:02:09.760" video="mainVideo-gc" id="subtitle"]]
+
+[[!template text="""So that's what Emacs does.""" start="00:02:09.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Every now and then, Emacs goes through all the memory""" start="00:02:12.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and identifies which part of the memory are not used""" start="00:02:15.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then clear them so that it can free up the RAM.""" start="00:02:19.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""This process is called garbage collection""" start="00:02:23.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and Emacs uses a very simple and old algorithm""" start="00:02:25.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is called Mark & Sweep.""" start="00:02:28.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So doing this mark and sweep process""" start="00:02:30.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is basically two stages.""" start="00:02:33.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""First, Emacs scans all the memory that is allocated""" start="00:02:34.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then identifies which memory is still in use""" start="00:02:40.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is linked to some variables, for example,""" start="00:02:42.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and which memory is not used anymore""" start="00:02:45.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""even though it was allocated in the past.""" start="00:02:47.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""The second stage [??] whenever a memory is not,""" start="00:02:49.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that is not allocated. During the process""" start="00:02:53.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Emacs cannot do anything now.""" start="00:02:59.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So basically, every time Emacs scans the memory,""" start="00:03:00.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it freezes up and doesn't respond to anything,""" start="00:03:04.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and if it takes too much time so that users can notice it,""" start="00:03:07.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then of course Emacs is not responsive at all,""" start="00:03:10.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and if this garbage collection is triggered too frequently,""" start="00:03:13.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then it's not just not responsive every now and then.""" start="00:03:19.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""It's also not responsive all the time,""" start="00:03:22.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""almost all the time,""" start="00:03:24.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so it cannot even normally type or stuff""" start="00:03:26.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or do some normal commands.""" start="00:03:27.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""This mark and sweep algorithm is taking longer""" start="00:03:32.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the more memory Emacs uses. So basically,""" start="00:03:36.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the more buffers you open, the more packages you load,""" start="00:03:40.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the more complex commands you run, the more memory is used,""" start="00:03:44.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and basically, the longer Emacs takes""" start="00:03:48.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to perform a single garbage collection.""" start="00:03:52.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Of course, Emacs being Emacs""" start="00:03:57.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""this garbage collection can be tweaked.""" start="00:04:02.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""In particular users can tweak""" start="00:04:06.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""how frequently Emacs does garbage collection""" start="00:04:08.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""using two basic variables: `gc-cons-threshold`""" start="00:04:10.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and `gc-cons-percentage`.""" start="00:04:13.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""`gc-cons-threshold` is the raw number of kilobytes""" start="00:04:15.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Emacs needs to allocate""" start="00:04:21.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""before triggering another garbage collection,""" start="00:04:22.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and the `gc-cons-percentage` is similar,""" start="00:04:25.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but it's defined in terms of fraction""" start="00:04:27.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of already-allocated memory.""" start="00:04:30.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""If you follow various Emacs forums,""" start="00:04:34.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you may be familiar with people complaining about""" start="00:04:38.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""garbage collection. There are many many suggestions""" start="00:04:41.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""about what to do with it.""" start="00:04:46.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Most frequently, you see `gc-cons-threshold`""" start="00:04:48.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""recommended to be increased,""" start="00:04:54.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and a number of pre-packaged Emacs distributions""" start="00:04:56.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like Doom Emacs do increase it.""" start="00:05:01.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I have seen suggestions which are actually horrible""" start="00:05:04.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to disable garbage collection temporarily""" start="00:05:07.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or for a long time.""" start="00:05:10.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Which is nice... You can see it quite frequently,""" start="00:05:14.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which indicates there might be some problem.""" start="00:05:17.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""However, every time one user poses about this problem,""" start="00:05:19.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's just one data point and it doesn't mean""" start="00:05:23.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that everyone actually suffers from it.""" start="00:05:26.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""It doesn't mean that everyone should do it.""" start="00:05:28.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So in order to understand if this garbage collection""" start="00:05:33.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is really a problem which is a common problem""" start="00:05:35.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we do need some kind of statistics""" start="00:05:39.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and only using the actual statistics""" start="00:05:44.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we can understand if it should be recommended for everyone""" start="00:05:46.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to tweak the defaults or like whether""" start="00:05:52.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it should be recommended for certain users""" start="00:05:55.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or maybe it should be asked Emacs devs""" start="00:05:57.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to do something about the defaults.""" start="00:05:59.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And what I did some time ago is exactly this.""" start="00:06:01.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I tried to collect the user statistics.""" start="00:06:07.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So I wrote a small package on Elp""" start="00:06:09.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and some users installed this package""" start="00:06:14.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then reported back these statistics""" start="00:06:18.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of the garbage collection for their particular use.""" start="00:06:22.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""By now we have obtained 129 user submissions""" start="00:06:24.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""with over 1 million GC records in there.""" start="00:06:30.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So like some of these submissions""" start="00:06:34.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""used default GC settings without any customizations.""" start="00:06:38.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Some used increased GC cost threshold""" start="00:06:43.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and GC cost percentage.""" start="00:06:46.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So using this data we can try to draw""" start="00:06:47.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""some reliable conclusions on what should be done""" start="00:06:53.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and whether should anything be done about garbage collection""" start="00:06:56.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""on Emacs dev level or at least on user level.""" start="00:06:59.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Of course we need to keep in mind""" start="00:07:02.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that there's some kind of bias""" start="00:07:05.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because it's more likely""" start="00:07:07.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that users already have problems with GC""" start="00:07:09.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or they think they have problems with GC""" start="00:07:11.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""will report and submit the data.""" start="00:07:13.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""But anyway having s statistics is much more useful""" start="00:07:15.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""than just having anecdotal evidences""" start="00:07:20.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""from one or other reddit posts.""" start="00:07:22.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And just one thing I will do""" start="00:07:25.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""during the rest of my presentation""" start="00:07:28.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is that for all the statistics""" start="00:07:30.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I will normalize user data""" start="00:07:32.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so that every user contributes equally.""" start="00:07:35.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""For example if one user submits like""" start="00:07:37.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""100 hours Emacs uptime statistics""" start="00:07:40.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and other users submit one hour Emacs uptime""" start="00:07:43.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then I will anyway make it so that they contribute equally.""" start="00:07:46.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Let's start from one of the most obvious things""" start="00:07:52.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we can look into is""" start="00:07:56.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is the time it takes for garbage collection""" start="00:07:57.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to single garbage collection process.""" start="00:08:00.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Here you see frequency distribution of GC duration""" start="00:08:05.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""for all the 129 users we got""" start="00:08:11.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you can see that most of the garbage collections""" start="00:08:15.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""are done quite quickly in less than 0.1 second""" start="00:08:22.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and less than 0.1 second is usually just not noticeable.""" start="00:08:27.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So even though there is garbage collection""" start="00:08:32.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it will not interrupt the work in Emacs.""" start="00:08:34.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""However there is a fraction of users""" start="00:08:39.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""who experience garbage collection""" start="00:08:43.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it takes like 0.2, 0.3 or even half a second""" start="00:08:45.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which will be quite noticeable.""" start="00:08:48.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""For the purposes of this study""" start="00:08:50.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I will consider that anything that is less than 0.1 second""" start="00:08:55.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is insignificant so like you will not notice it""" start="00:08:59.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and it's like obviously""" start="00:09:02.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""all the Emacs usage will be just normal.""" start="00:09:04.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""But if it's more than 0.1 or 0.2 seconds""" start="00:09:07.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then it will be very noticeable""" start="00:09:11.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you will see that Emacs hang for a little while""" start="00:09:13.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or not so little while. In terms of numbers""" start="00:09:16.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's better to plot the statistics not as a distribution""" start="00:09:21.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but as a cumulative distribution.""" start="00:09:26.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So like at every point of this graph""" start="00:09:28.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you'll see like for example here 0.4 seconds""" start="00:09:31.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you have this percent of like almost 90% of users""" start="00:09:37.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""have no more than 0.4 gc duration.""" start="00:09:42.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So like we can look here if we take one""" start="00:09:49.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""gc critical gc duration which is 0.1 second""" start="00:09:53.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""0.1 second and look at how many users have""" start="00:09:56.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it so we have 56% which is like""" start="00:10:00.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""44% users have less than 0.1 second gc duration""" start="00:10:02.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and the rest 56% have more than 0.1 second.""" start="00:10:09.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So you can see like more than half of users""" start="00:10:12.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""actually have noticeable gc delay""" start="00:10:16.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so the Emacs freezes for some noticeable time""" start="00:10:20.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and a quarter of users actually have very noticeable""" start="00:10:23.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so like Emacs freezes such that you see an actual delay""" start="00:10:27.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that Emacs actually has""" start="00:10:31.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is quite significant and important point.""" start="00:10:36.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""But apart from the duration of each individual gc""" start="00:10:44.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it is important to see how frequent it is""" start="00:10:47.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because even if you do notice a delay""" start="00:10:49.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""even a few seconds delay""" start="00:10:52.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it doesn't matter if it happens once""" start="00:10:54.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""during the whole Emacs session.""" start="00:10:57.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So if you look into frequency distribution again here""" start="00:10:59.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I plot time between subsequent garbage collections""" start="00:11:05.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""versus how frequent it is and we have very clear trend""" start="00:11:13.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that most of the garbage collections are quite frequent""" start="00:11:17.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like we talk about every few seconds a few tens of seconds.""" start="00:11:21.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""There's a few outliers which are at very round numbers""" start="00:11:25.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like 60 seconds, 120 seconds, 300 seconds.""" start="00:11:30.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""These are usually timers so like""" start="00:11:35.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you have something running on timer""" start="00:11:37.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then it is complex command""" start="00:11:40.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and it triggers garbage collection""" start="00:11:43.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but it's not the majority.""" start="00:11:45.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Again to run the numbers""" start="00:11:48.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's better to look into cumulative distribution""" start="00:11:51.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and see that 50% of garbage collections""" start="00:11:53.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""are basically less than 10 seconds apart.""" start="00:11:56.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And we can combine it with previous data""" start="00:11:58.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and we look into whatever garbage collection""" start="00:12:02.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""takes less than 10 seconds from each other""" start="00:12:07.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and also takes more than say 0.1 seconds.""" start="00:12:09.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So and then we see that""" start="00:12:13.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""one quarter of all garbage collections""" start="00:12:15.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""are just noticeable and also frequent""" start="00:12:17.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and 9% are not like""" start="00:12:21.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""more than 0.2% very noticeable and also frequent.""" start="00:12:23.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So basically it constitutes Emacs freezing.""" start="00:12:27.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So 9% of all the garbage collection Emacs freezing.""" start="00:12:30.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Of course if you remember there is a bias""" start="00:12:33.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but 9% is quite significant number.""" start="00:12:37.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So garbage collection can really slow down things""" start="00:12:40.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""not for everyone but for significant fraction of users.""" start="00:12:44.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Another thing I'd like to look into""" start="00:12:48.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is what I call agglomerated GCs.""" start="00:12:52.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""What I mean by agglomerated is""" start="00:12:55.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when you have one garbage collection""" start="00:12:57.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then another garbage immediately after it.""" start="00:13:00.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So in terms of numbers I took""" start="00:13:03.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""every subsequent garbage collection""" start="00:13:05.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is either immediately after""" start="00:13:08.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or no more than one second after each.""" start="00:13:10.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So from point of view of users is like""" start="00:13:13.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""multiple garbage collection they add up together""" start="00:13:16.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""into one giant garbage collection.""" start="00:13:20.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And if you look into numbers""" start="00:13:23.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of how many agglomerated garbage collections there are""" start="00:13:25.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you can see even numbers over 100.""" start="00:13:29.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So 100 garbage collection going one after another.""" start="00:13:32.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Even if you think about each garbage collection""" start="00:13:35.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""taking 0.1 second we look into 100 of them""" start="00:13:39.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's total 10 seconds.""" start="00:13:42.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""It's like Emacs hanging forever""" start="00:13:44.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or like a significant number is also 10.""" start="00:13:46.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So again this would be very annoying to meet such thing.""" start="00:13:53.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""How frequently does it happen?""" start="00:13:56.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Again we can plot cumulative distribution""" start="00:13:57.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and we see that 20 percent like 19 percent""" start="00:14:00.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of all the garbage collection are at least two together""" start="00:14:03.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and 8 percent like more than 10. So like you think about oh""" start="00:14:07.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""each garbage collection is not taking much time""" start="00:14:13.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but when you have 10 of them yeah that becomes a problem.""" start="00:14:15.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Another thing is to answer a question""" start="00:14:24.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that some people complain about is that""" start="00:14:29.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""longer you use Emacs the slower Emacs become.""" start="00:14:32.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Of course it may be caused by garbage collection""" start="00:14:35.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and I wanted to look into how garbage collection time""" start="00:14:43.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and other statistics,""" start="00:14:48.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""other parameters are evolving over time.""" start="00:14:49.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And what I can see here is a cumulative distribution""" start="00:14:53.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of GC duration for like first 10 minutes of Emacs uptime""" start="00:14:58.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""first 100 minutes first 1000 minutes.""" start="00:15:03.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And if you look closer then you see""" start="00:15:06.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that each individual garbage collection on average""" start="00:15:10.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""takes longer as you use Emacs longer.""" start="00:15:14.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""However this longer is not much it's like maybe 10 percent""" start="00:15:18.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like basically garbage collection gets like""" start="00:15:24.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""slow Emacs down more as you use Emacs more but not much.""" start="00:15:29.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So basically if you do you see Emacs""" start="00:15:34.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""being slower and slower over time""" start="00:15:38.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's probably not really garbage collection""" start="00:15:40.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because it doesn't change too much.""" start="00:15:43.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And if you look into time""" start="00:15:45.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""between individual garbage collections""" start="00:15:48.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you see that the time actually increases""" start="00:15:50.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""as you use Emacs longer which makes sense""" start="00:15:53.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because initially like first few minutes""" start="00:15:56.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you have all kind of packages loading""" start="00:15:58.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like all the port loading and then later""" start="00:16:01.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""everything is loaded and things become more stable.""" start="00:16:04.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So the conclusion on this part is that""" start="00:16:07.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if Emacs becomes slower in a long session""" start="00:16:12.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's probably not caused by garbage collection.""" start="00:16:16.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And one word of warning of course is that""" start="00:16:18.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's all nice and all when I present the statistics""" start="00:16:23.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but it's only an average""" start="00:16:27.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and if you are an actual user like here is one example""" start="00:16:29.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which shows a total garbage collection time""" start="00:16:34.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like accumulated together over Emacs uptime""" start="00:16:37.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you see different lines""" start="00:16:40.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which correspond to different sessions of one user""" start="00:16:43.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you see they are wildly different""" start="00:16:45.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like one time there is almost no garbage collection""" start="00:16:48.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""another time you see garbage collection""" start="00:16:51.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because probably Emacs is used more early""" start="00:16:54.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or like different pattern of usage""" start="00:16:57.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and even during a single Emacs session""" start="00:16:59.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you see a different slope""" start="00:17:03.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of this curve which means that""" start="00:17:04.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""sometimes garbage collection is infrequent""" start="00:17:06.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and sometimes it's much more frequent""" start="00:17:09.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so it's probably much more noticeable one time""" start="00:17:11.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and less noticeable other time.""" start="00:17:14.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""So if you think about these statistics of course""" start="00:17:15.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""they only represent an average usage""" start="00:17:19.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but sometimes it can get worse sometimes it can get better.""" start="00:17:23.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""The last parameter I'd like to talk about is""" start="00:17:26.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""garbage collection during Emacs init.""" start="00:17:33.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Basically if you think about what happens during Emacs init""" start="00:17:35.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like when Emacs just starting up""" start="00:17:40.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then whatever garbage collection""" start="00:17:41.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there it's one or it's several times""" start="00:17:44.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it all contributes to Emacs taking longer to start.""" start="00:17:46.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""And again we can look into the statistic""" start="00:17:51.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and see what is the total GC duration after Emacs init""" start="00:17:56.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and we see that 50% of all the submissions""" start="00:18:01.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""garbage collection adds up more than one second""" start="00:18:06.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to Emacs init time and for 20% of users""" start="00:18:10.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's extra three seconds Emacs start time""" start="00:18:14.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is very significant""" start="00:18:17.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""especially for people who are used to Vim""" start="00:18:18.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which can start in like a fraction of a second""" start="00:18:21.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and here it just does garbage collection""" start="00:18:23.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because garbage collection is not""" start="00:18:26.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""everything Emacs does during startup""" start="00:18:27.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""adds up more to the load.""" start="00:18:29.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Okay that's all nice and all""" start="00:18:32.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but what can we do about these statistics""" start="00:18:36.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""can we draw any conclusions""" start="00:18:38.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and the answer is of course""" start="00:18:40.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like the most important conclusion here is that""" start="00:18:43.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""yes garbage collection can slow down Emacs""" start="00:18:46.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""at least for some people and what to do about it""" start="00:18:49.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there are two variables which you can tweak""" start="00:18:52.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's because gcconce threshold gcconce percentage""" start="00:18:55.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and having the statistics I can at least look a little bit""" start="00:18:58.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""into what is the effect of increasing these variables""" start="00:19:03.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like most people just increase gcconce threshold""" start="00:19:08.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and like all the submissions people did increase""" start="00:19:12.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and doesn't make much sense to decrease it""" start="00:19:16.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like to make things worse""" start="00:19:19.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of course for these statistics""" start="00:19:21.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the exact values of this increased thresholds""" start="00:19:27.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""are not always the same""" start="00:19:31.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but at least we can look into some trends""" start="00:19:33.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so first and obvious thing we can observe""" start="00:19:36.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is when we compare""" start="00:19:44.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the standard gc settings standard thresholds""" start="00:19:46.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and increased thresholds for time between""" start="00:19:50.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""subsequent gcs and as one may expect""" start="00:19:54.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if you increase the threshold""" start="00:19:57.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Emacs will do garbage collection less frequently""" start="00:19:59.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so the spacing between garbage collection increases""" start="00:20:02.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""okay the only thing is that""" start="00:20:05.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if garbage collection is less frequent""" start="00:20:07.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then each individual garbage collection becomes longer""" start="00:20:10.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so if you think about increasing""" start="00:20:14.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""garbage collection thresholds be prepared""" start="00:20:18.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that in each individual time Emacs freezes will take longer""" start="00:20:22.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""this is one caveat when we talk about""" start="00:20:26.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""this agglomerated gcs which are one after other""" start="00:20:31.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like if you increase the threshold sufficiently""" start="00:20:34.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then whatever happened that garbage collections""" start="00:20:36.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""were like done one after other""" start="00:20:42.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we can now make it so that they are actually separated""" start="00:20:44.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so like you don't see one giant freeze caused by""" start="00:20:47.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like 10 gcs in a row""" start="00:20:51.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""instead you can make it so that they are separated""" start="00:20:52.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and in statistics it's very clear""" start="00:20:55.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that the number of agglomerated garbage collections""" start="00:20:59.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""decreases dramatically when you increase the thresholds""" start="00:21:02.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's particularly evident when we look into startup time""" start="00:21:06.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if you look at gc duration during Emacs startup""" start="00:21:11.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and if we look into what happens""" start="00:21:17.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when you increase the thresholds""" start="00:21:19.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's very clear that Emacs startup become faster""" start="00:21:20.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when you increase gc thresholds""" start="00:21:23.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so that's all for actual user statistics""" start="00:21:26.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and now let's try to run into""" start="00:21:33.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""some like actual recommendations""" start="00:21:35.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""on what numbers to set and before we start""" start="00:21:38.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""let me explain a little bit about""" start="00:21:42.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the difference between these two variables""" start="00:21:44.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is gc constant threshold and gc constant percentage""" start="00:21:46.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so if you think about Emacs memory""" start="00:21:48.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like there's a certain memory allocated by Emacs""" start="00:21:52.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then as you run commands and turn using Emacs""" start="00:21:55.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there is more memory allocated""" start="00:21:58.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and Emacs decides when to do garbage collection""" start="00:22:00.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""according these two variables""" start="00:22:04.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and actually what it does it chooses the larger one""" start="00:22:06.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so say you have you are late in Emacs session""" start="00:22:08.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you have a lot of Emacs memory allocated""" start="00:22:12.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then you have gc constant percentage""" start="00:22:14.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is percent of the already allocated memory""" start="00:22:17.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and that percent is probably going to be the largest""" start="00:22:19.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because you have more memory""" start="00:22:25.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and memory means that percent of it is larger""" start="00:22:28.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so like you have a larger number cost""" start="00:22:32.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""by gc constant percentage""" start="00:22:36.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so in this scenario when Emacs session is already running""" start="00:22:37.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""for a long time and there is a lot of memory allocated""" start="00:22:43.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you have gc constant percentage""" start="00:22:45.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""controlling the garbage collection""" start="00:22:50.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""while early in Emacs there is not much memory placed""" start="00:22:52.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""Emacs just starting up then gc constant threshold""" start="00:22:55.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is controlling how frequently garbage collection happens""" start="00:22:58.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because smaller allocated memory""" start="00:23:01.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""means its percentage will be a small number""" start="00:23:04.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so in terms of default values at least""" start="00:23:06.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""gc constant threshold is 800 kilobytes""" start="00:23:12.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and gc constant percentage is 10""" start="00:23:14.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so gc constant percentage becomes larger than that threshold""" start="00:23:18.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when you have more than eight megabytes of allocated memory""" start="00:23:24.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""by Emacs which is quite early""" start="00:23:28.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and it will probably hold just during the startup""" start="00:23:31.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and once you start using your maximum""" start="00:23:34.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and once you load all the histories""" start="00:23:36.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""all the kinds of buffers it's probably going to take""" start="00:23:38.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""more than much more than eight megabytes""" start="00:23:42.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so now we understand this""" start="00:23:43.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we can draw certain recommendations""" start="00:23:50.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""about tweaking the gc thresholds""" start="00:23:53.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so first of all I need to emphasize""" start="00:23:57.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that any time you increase gc threshold""" start="00:24:01.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""an individual garbage collection time increases""" start="00:24:03.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so it's not free at all""" start="00:24:07.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if you don't have problems with garbage collection""" start="00:24:08.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is half of the users don't have much problem""" start="00:24:11.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you don't need to tweak anything""" start="00:24:13.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""only when gc is frequent and slow""" start="00:24:15.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when Emacs is really really present frequently""" start="00:24:19.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you may consider increasing gc thresholds only""" start="00:24:23.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and in particular I recommend""" start="00:24:27.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""increasing gc constant percentage""" start="00:24:31.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because that's what mostly controls gc""" start="00:24:33.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when Emacs is running for long session""" start="00:24:36.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and the numbers are probably like""" start="00:24:40.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""yeah we can estimate the effect of these numbers""" start="00:24:43.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like for example if you have a default value of 0.1 percent""" start="00:24:46.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""for gc constant percentage 0.1 which is 10 percent""" start="00:24:49.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and then increase it twice""" start="00:24:52.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""obviously you get twice less frequent gcs""" start="00:24:55.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but it will come at the cost of extra 10 percent gc time""" start="00:24:58.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and if you increase 10 times you can think about""" start="00:25:02.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""10 less 10 x less frequent gcs""" start="00:25:05.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but almost twice longer individual garbage collection time""" start="00:25:08.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so probably you want to set the number closer to 0.1""" start="00:25:12.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""another part of the users may actually""" start="00:25:16.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""try to optimize Emacs startup time""" start="00:25:23.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which is quite frequent problem""" start="00:25:28.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""in this case it's probably better to increase gc constant""" start="00:25:30.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but not too much so like""" start="00:25:34.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""first of all it makes sense to check""" start="00:25:38.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""whether garbage collection is a problem at all""" start="00:25:40.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""during startup and there are two variables""" start="00:25:43.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which can show what is happening this garbage collection""" start="00:25:46.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so gc done is a variable that shows""" start="00:25:50.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""how many garbage collection""" start="00:25:53.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like what is the number of garbage collections triggered""" start="00:25:55.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like when you check the value""" start="00:26:00.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or right after you start Emacs""" start="00:26:02.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you will see that""" start="00:26:04.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""number and gc elapsed variable""" start="00:26:04.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which gives you a number of seconds""" start="00:26:08.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which Emacs spent in doing garbage collection""" start="00:26:11.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so this is probably the most important variable""" start="00:26:14.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and if you see it's large then you may consider tweaking it""" start="00:26:16.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""for the Emacs startup we can estimate some bounds""" start="00:26:20.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because in the statistics I never saw anything""" start="00:26:26.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that is more than 10 seconds extra""" start="00:26:30.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""which even 10 seconds is probably like""" start="00:26:32.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""a really really hard upper bound so""" start="00:26:34.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or say if you want to decrease the gc contribution""" start="00:26:39.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like order of magnitude or like two orders of magnitudes""" start="00:26:44.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""let's say like as a really hard top estimate""" start="00:26:47.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then it corresponds to 80 megabytes gc constant""" start="00:26:50.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and probably much less so like""" start="00:26:55.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there's no point setting it""" start="00:26:58.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to a few hundred megabytes of course""" start="00:27:00.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there's one caveat which is important to keep in""" start="00:27:04.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""mind though that increasing the gc thresholds""" start="00:27:08.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is not just increasing individual gc time""" start="00:27:14.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there's also an actual real impact on the RAM usage""" start="00:27:16.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so like if you increase gc threshold""" start="00:27:20.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it increases the RAM usage of Emacs""" start="00:27:23.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you shouldn't think that like okay""" start="00:27:26.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I increased the threshold by like 100 megabytes""" start="00:27:29.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then 100 megabytes extra RAM usage doesn't matter""" start="00:27:33.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's not 100 megabytes""" start="00:27:37.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because less frequent garbage collection means""" start="00:27:38.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it will lead to memory fragmentation""" start="00:27:42.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so in practice if you increase the thresholds""" start="00:27:45.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to tens or hundreds of megabytes""" start="00:27:50.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we are talking about gigabytes extra RAM usage""" start="00:27:52.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""for me personally when I tried to play with gc thresholds""" start="00:27:55.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I have seen Emacs taking two gigabytes like""" start="00:27:59.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""compared to several times less""" start="00:28:02.880" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when with default settings so it's not free at all""" start="00:28:05.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and only like either when you have a lot of free RAM""" start="00:28:09.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you don't care or when your Emacs is really slow""" start="00:28:13.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then you may need to consider this""" start="00:28:16.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""tweaking these defaults so again don't tweak defaults""" start="00:28:19.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if you don't really have a problem""" start="00:28:23.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and of course this RAM problem is a big big deal""" start="00:28:24.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""for Emacs devs because from from the point of single user""" start="00:28:29.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you have like normal laptop most likely like normal PC""" start="00:28:35.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""with a lot of RAM you don't care about these things too much""" start="00:28:38.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but Emacs in general can run on like all kinds of machines""" start="00:28:42.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""including low-end machines with very limited RAM""" start="00:28:49.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and anytime Emacs developers consider increasing""" start="00:28:51.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the defaults for garbage collection""" start="00:28:55.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's like they always have to consider""" start="00:28:57.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if you increase them too much""" start="00:29:01.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then Emacs may just stop running on certain platforms""" start="00:29:02.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so that's a very big consideration in terms""" start="00:29:07.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of the global defaults for everyone""" start="00:29:14.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""although I have to I would say that it might be related""" start="00:29:16.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to the safe to increase GCCons threshold""" start="00:29:22.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because it mostly affects startup and during startup""" start="00:29:24.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's probably not the peak usage of Emacs""" start="00:29:27.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and like as Emacs runs for longer""" start="00:29:31.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it's probably where most of RAM will be used later""" start="00:29:35.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""on the other hand GCCons percentage is much more debating""" start="00:29:38.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because it has pros and cons""" start="00:29:44.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it will increase the RAM usage""" start="00:29:46.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it will increase the individual GC time so""" start="00:29:47.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""if we consider changing it it's much more tricky""" start="00:29:51.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and we have discussing probably measure the impact on users""" start="00:29:56.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and a final note on or from the point of view""" start="00:29:59.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of Emacs development is""" start="00:30:05.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that this simple mark-and-sweep algorithm""" start="00:30:07.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is like a very old and not the state-of-the-art algorithm""" start="00:30:11.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there are variants of garbage collection""" start="00:30:14.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that are like totally non-blocking""" start="00:30:17.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so Emacs just doesn't have to freeze""" start="00:30:19.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""during the garbage collection""" start="00:30:22.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""or there are variants of garbage collection algorithm""" start="00:30:24.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that do not scan all the memory just fraction of it""" start="00:30:26.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and scan another fraction less frequently""" start="00:30:30.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so there are actually ways just to change""" start="00:30:33.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the garbage collection algorithm to make things much faster""" start="00:30:37.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""of course like just changing the numbers of variables""" start="00:30:39.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like the numbers of variable values""" start="00:30:44.200" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is much more tricky and one has to implement it""" start="00:30:47.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""obviously it would be nice if someone implements it""" start="00:30:50.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but so far it's not happening so yeah it would be nice""" start="00:30:52.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but maybe not not so quickly""" start="00:30:55.640" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""there is more chance to change the defaults here""" start="00:30:59.360" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to conclude let me reiterate the most important points""" start="00:31:02.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so from point of view of users you need to understand that""" start="00:31:07.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""yes garbage collection may be a problem""" start="00:31:11.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but not for everyone so like""" start="00:31:14.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you should only think about changing the variables""" start="00:31:16.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""when you really know that garbage collection""" start="00:31:21.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""is the problem for you so if you have slow Emacs startup""" start="00:31:23.560" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""slow Emacs startup and you know that it's caused by""" start="00:31:27.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""garbage collection like by""" start="00:31:30.920" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""you can check the GC elapsed variable""" start="00:31:32.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then you may increase GC count threshold""" start="00:31:36.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""like to few tens of megabytes not more""" start="00:31:39.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""it doesn't make sense to increase it much more""" start="00:31:42.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and if you really have major problems""" start="00:31:44.480" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""with Emacs being slaggy""" start="00:31:48.240" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""then you can increase GC count percentage""" start="00:31:49.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to like 0.2 0.3 maybe""" start="00:31:52.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""one is probably overkill""" start="00:31:56.000" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but do watch your Emacs ROM usage it may be really impacted""" start="00:31:57.680" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""for Emacs developers I'd like to emphasize""" start="00:32:02.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""that there is a real problem with garbage collection""" start="00:32:09.720" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and nine percent of all the garbage collection""" start="00:32:12.440" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""data points we have correspond""" start="00:32:17.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""to really slow noticeable Emacs precision""" start="00:32:22.080" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and really frequent less than 10 seconds""" start="00:32:24.960" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""I'd say that it's really worth""" start="00:32:28.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""increasing GC count threshold at least during startup""" start="00:32:32.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""because it really impacts the Emacs startup time""" start="00:32:35.280" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""making Emacs startup much faster""" start="00:32:40.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""ideally we need to reimplement""" start="00:32:41.520" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""the garbage collection algorithm of course it's not easy""" start="00:32:44.800" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""but it would be really nice""" start="00:32:48.600" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and for GC count percentage defaults it's hard to say""" start="00:32:50.160" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""we may consider changing it but it's up to discussion""" start="00:32:56.400" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and we probably need to be conservative here""" start="00:33:00.760" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""so we came to the end of my talk""" start="00:33:03.120" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and this presentation""" start="00:33:06.040" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""all the data will be available publicly""" start="00:33:09.320" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and you can reproduce all the statistic graphs if you wish""" start="00:33:11.840" video="mainVideo-gc" id="subtitle"]]
+[[!template text="""and thank you for attention""" start="00:33:17.080" video="mainVideo-gc" id="subtitle"]]
+
+<a name="gc-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: And then, hi everyone.""" start="00:00:01.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""Thank you for your nice talk,""" start="00:00:03.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""I can say it's the Emacs GC.""" start="00:00:05.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""We have some questions on the pad and maybe""" start="00:00:09.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""before I would like to ask you something to""" start="00:00:11.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""the last 1 you have said,""" start="00:00:12.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""concerning changing the GC strategy,""" start="00:00:15.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""that it's unlikely that it will be happening""" start="00:00:18.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""in the next time. Yeah.""" start="00:00:20.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""Is there any discussion going on or why does""" start="00:00:22.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""the case it's not changing the strategy?""" start="00:00:24.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's mostly because it's difficult.""" start="00:00:26.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think, yesterday you heard from,""" start="00:00:29.439" video="qanda-gc" id="subtitle"]]
+[[!template text="""1 of the dev talks that like there was 1""" start="00:00:33.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""small, short comment that,""" start="00:00:34.980" video="qanda-gc" id="subtitle"]]
+[[!template text="""oh yeah, it would be nice to change this""" start="00:00:36.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""algorithm but it's hard.""" start="00:00:39.059" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I""" start="00:00:40.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: mean it's hard not because the algorithm is""" start="00:00:43.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""that hard but because it's a very low level""" start="00:00:45.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""code and it must be like very carefully""" start="00:00:48.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""weighted. So that can be,""" start="00:00:49.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""it needs to be made sure that the carousel""" start="00:00:53.239" video="qanda-gc" id="subtitle"]]
+[[!template text="""will work. It's all bugs.""" start="00:00:55.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""If you have bugs and you can see that,""" start="00:00:57.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""so it's nothing to work anymore.""" start="00:00:58.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So We have a lot of RAM usage.""" start="00:01:00.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah. Maybe sometime.""" start="00:01:02.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: There was like years ago,""" start="00:01:06.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""there was a branch on generational DC,""" start="00:01:09.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""if I remember correctly,""" start="00:01:11.100" video="qanda-gc" id="subtitle"]]
+[[!template text="""but they didn't go anywhere,""" start="00:01:13.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""unfortunately.""" start="00:01:14.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's a pity. But let's come to the""" start="00:01:18.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""questions on the pad. So the first 1 is,""" start="00:01:21.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""are the GC duration statistics correlated""" start="00:01:24.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""with users? I mean, does the same user""" start="00:01:27.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""experience GC of various durations?""" start="00:01:29.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""Or Do some users experience GC of a greater""" start="00:01:32.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""0.26 exclusively, while others never""" start="00:01:36.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""experience them? So is it correlated to user""" start="00:01:40.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""behavior? I guess you said it in your talk.""" start="00:01:43.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, If you talk formally,""" start="00:01:46.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""then almost every user has like 1 or 2""" start="00:01:49.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""occasions when GC takes more than 0.2""" start="00:01:51.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""seconds, but it's like,""" start="00:01:53.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""maybe something else is using CPU and that's""" start="00:01:56.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""why, but in practice, there are users who""" start="00:02:00.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""don't have problem. Half of them that that's""" start="00:02:04.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""who that's what I looked from statistics.""" start="00:02:05.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""And dry users who have like really big""" start="00:02:10.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""problems, like 1 second GC time.""" start="00:02:12.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: This is dependent on you make some comments""" start="00:02:17.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""on us in the talk, but could you like extract""" start="00:02:19.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""on if it's a package, that's a problem or we""" start="00:02:23.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""as a user behavior are there.""" start="00:02:24.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Usually it's something that is,""" start="00:02:30.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""okay. I'm sharing my screen now,""" start="00:02:33.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: It's coming on, give it like 2 to 3 seconds.""" start="00:02:37.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: right? Yeah. So I can just click through""" start="00:02:41.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""different user statistics.""" start="00:02:42.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""So like you can see this duration for each""" start="00:02:48.840" video="qanda-gc" id="subtitle"]]
+[[!template text="""individual user basically.""" start="00:02:49.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""So you can see like here for example it's""" start="00:02:54.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""like averages around 0.25""" start="00:02:56.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""seconds which is noticeable and here is like""" start="00:03:00.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""0.1 like someone is all over the place,""" start="00:03:03.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""probably some. Then like,""" start="00:03:09.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""what else can we see here?""" start="00:03:11.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah, some users like have sub 0.1,""" start="00:03:15.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""no problem at all. And I have seen some that""" start="00:03:23.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""really, really bad. I mean,""" start="00:03:30.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: if it's noticeable, it's all bad.""" start="00:03:31.880" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: So yeah. For example, here it's like 0.8""" start="00:03:36.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""seconds, 0.5 seconds. I don't know how that""" start="00:03:41.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""guy uses ZMax. Yeah. you can see it varies.""" start="00:03:48.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So It varies quite a lot.""" start="00:03:51.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: What it depends on, like,""" start="00:03:52.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""usually the number of packages,""" start="00:03:54.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""like all kinds of timers going on under the""" start="00:03:58.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""hood. I think I tried to list...""" start="00:04:01.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""I'll go through this. I briefly outlined some""" start="00:04:12.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""important parts. Here,""" start="00:04:15.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you have something like an org agenda,""" start="00:04:18.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""it will most likely trigger a lot of GCs.""" start="00:04:20.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""When you have a lot of timers,""" start="00:04:23.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you have something calculated on""" start="00:04:27.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""modline, it will be frequently triggered.""" start="00:04:29.700" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well,""" start="00:04:30.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: yeah. When you have so many packages and""" start="00:04:34.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""these packages are using a lot of memory.""" start="00:04:35.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""Like I remember I was surprised by this,""" start="00:04:41.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""package, home org that was,""" start="00:04:44.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""caching all the results.""" start="00:04:46.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""And for large org files,""" start="00:04:48.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""it was like several hundred megabytes of""" start="00:04:51.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""data. Well, it just becomes slower.""" start="00:04:55.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah.""" start="00:04:55.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah. Maybe, maybe a short side note.""" start="00:05:00.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""Someone asks, what software you're using for""" start="00:05:02.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""flipping through the PNGs.""" start="00:05:03.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""Maybe you could shortly throws it in.""" start="00:05:06.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: What do you mean? Here,""" start="00:05:08.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: I guess it was just simply,""" start="00:05:11.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: this, It's it's far. Yeah.""" start="00:05:13.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""So""" start="00:05:16.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: yeah. So, question 1 and 2 answered.""" start="00:05:23.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""To 1 statement you have made,""" start="00:05:35.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""there was a question concerning the timings.""" start="00:05:37.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""So you said, okay, everything above 0.1""" start="00:05:41.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""second is fine. Maybe There's a short story""" start="00:05:45.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""of someone who asked a question.""" start="00:05:48.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I see the question is about scrolling,""" start="00:05:50.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, exactly.""" start="00:05:51.820" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: right? Again, there's not much you can do in""" start="00:05:55.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""terms of trying to adjust the GC time.""" start="00:05:58.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""I mean, if you make GCs less frequent,""" start="00:06:02.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""you increase the individual GC time.""" start="00:06:07.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""If you make them more frequent,""" start="00:06:08.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""you decrease the individual GC time,""" start="00:06:11.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""but then they are more frequent.""" start="00:06:12.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""So what is the point? I think the way to go""" start="00:06:15.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""here is you can rise to see the short for the""" start="00:06:19.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""duration of scrolling,""" start="00:06:20.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""like just for a comment.""" start="00:06:22.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think it's a recommendation from Emacs""" start="00:06:26.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""devs. So like You do something along the""" start="00:06:31.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""lines.""" start="00:06:31.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah, I'm surely doing something on my screen""" start="00:06:53.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""and I forgot that I'm not sharing anything.""" start="00:06:55.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Exactly.""" start="00:06:56.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Simply something like this.""" start="00:07:00.700" video="qanda-gc" id="subtitle"]]
+[[!template text="""So, basically, if you have some command that""" start="00:07:08.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""is very important that it should run very""" start="00:07:10.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""quickly. You temporary increase that""" start="00:07:13.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""threshold, you run that comment,""" start="00:07:15.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""then that's all. That's probably the best.""" start="00:07:19.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""So basically, the best you can do is to delay""" start="00:07:21.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""it after the command.""" start="00:07:23.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So afterwards, it takes a lot of time to do""" start="00:07:27.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""its stuff. OK. The third 1 has been already""" start="00:07:36.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""answered, but I just want to get your""" start="00:07:40.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""information from it. Opinions on the GCMH""" start="00:07:42.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""mode.""" start="00:07:43.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay. Yeah, I see that problem,""" start="00:07:48.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""but that's more like a technical problem.""" start="00:07:49.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""But there's another problem there.""" start="00:07:52.360" video="qanda-gc" id="subtitle"]]
+[[!template text="""Yeah, I prepared a small snippet here.""" start="00:07:57.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""So if you look at the GCMH mode,""" start="00:08:02.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""it has this concept of low threshold and high""" start="00:08:05.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""threshold and most of the time it's running""" start="00:08:08.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""high threshold and then when Emacs is idle,""" start="00:08:14.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""it falls back to lower threshold and then it""" start="00:08:17.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""does the GC while Emacs is not used.""" start="00:08:19.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""That's a good idea, of course.""" start="00:08:22.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""That's the core idea of GCMH mode.""" start="00:08:24.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""Unfortunately, the most annoying GC is when""" start="00:08:30.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""you're actively using max.""" start="00:08:31.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""And then you have this huge value of GC""" start="00:08:37.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""counter show and look at the doc stream.""" start="00:08:38.799" video="qanda-gc" id="subtitle"]]
+[[!template text="""This would be sector value that makes GC""" start="00:08:41.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""unlikely but does not cost OSP Asian.""" start="00:08:43.980" video="qanda-gc" id="subtitle"]]
+[[!template text="""So yeah, no wonder like if you don't do GC,""" start="00:08:46.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""your arm usage will skyrocket.""" start="00:08:49.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""So they don't, they cannot put it too much,""" start="00:08:54.360" video="qanda-gc" id="subtitle"]]
+[[!template text="""but this is like already like,""" start="00:08:57.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""how much was it?""" start="00:08:59.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""1 gigabyte, that's the default.""" start="00:09:10.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""And the problem is when you have 1 gigabyte""" start="00:09:15.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""to garbage collect, it causes really long GC""" start="00:09:18.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""time. So in GC image mode,""" start="00:09:22.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you're actually using Emacs,""" start="00:09:23.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""really heavily, the GCs become terrible,""" start="00:09:28.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""terribly slow. So it may help in case you""" start="00:09:34.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""don't have too much problems with GC,""" start="00:09:37.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""but I will say that in such situation,""" start="00:09:39.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""you can simply increase GC cost percentage,""" start="00:09:41.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""as I recommend, and it should do it.""" start="00:09:44.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""But in case of really big problems with""" start="00:09:48.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""garbage collection, no,""" start="00:09:50.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""I don't think that will help much.""" start="00:09:51.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""I used it myself and it didn't help much for""" start="00:09:54.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""my stuff.""" start="00:09:55.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right. The next question is concerning""" start="00:09:59.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""freeing up memory. Is there some way to free""" start="00:10:04.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""up memory such as via unload feature on""" start="00:10:07.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs? Often I only need a package loaded for""" start="00:10:09.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""a single task or short period by the""" start="00:10:12.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""persistent memory afterwards.""" start="00:10:13.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: So the packages are usually not that much of""" start="00:10:19.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""a problem. I mean, the libraries,""" start="00:10:22.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""the problem is some extra,""" start="00:10:25.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""like some variable contents or some""" start="00:10:30.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""histories, some caches.""" start="00:10:31.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""That's what's eating most of the memory.""" start="00:10:35.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""There is a package called memory usage and""" start="00:10:40.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""built in MX memory report.""" start="00:10:45.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""They allow to see which variables take a lot""" start="00:10:50.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""of memory. And that way you can try to see""" start="00:10:56.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""which packages are actually problematic.""" start="00:10:58.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""So for example, I recall,""" start="00:11:03.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""and that was not exactly,""" start="00:11:05.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""I remember there was a package that was""" start="00:11:09.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""literally in command line,""" start="00:11:11.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""like prompt history. I think it was in""" start="00:11:14.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""command. And when you do like,""" start="00:11:17.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you save every message in your chart""" start="00:11:20.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""into prompt history, that can grow very fast""" start="00:11:25.280" video="qanda-gc" id="subtitle"]]
+[[!template text="""and can go to several hundred megabytes just""" start="00:11:29.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""in that history. And that can cause major""" start="00:11:31.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""problems. So, yes, profiling the largest""" start="00:11:37.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""variables with the largest buffers that might""" start="00:11:41.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""give some clues. Again,""" start="00:11:42.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""there is no silver bullet.""" start="00:11:43.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. I think the last question on the""" start="00:11:49.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""patterns. At first, very nice presentation.""" start="00:11:51.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I can""" start="00:11:51.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: also only agree with that.""" start="00:11:53.980" video="qanda-gc" id="subtitle"]]
+[[!template text="""I just experienced with a threshold and""" start="00:11:56.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""lowered my GCE lapse from 1.1""" start="00:11:58.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""to 0.06 seconds during startup.""" start="00:12:01.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""Interestingly, going to 10 megabytes""" start="00:12:03.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""increased the time. 4 megabytes was a sweet""" start="00:12:06.100" video="qanda-gc" id="subtitle"]]
+[[!template text="""spot for my system. What is the recommended""" start="00:12:07.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""way to lower the value back to the default""" start="00:12:10.840" video="qanda-gc" id="subtitle"]]
+[[!template text="""value after startup is completed?""" start="00:12:12.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think you just use after init hook.""" start="00:12:16.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: This was a relatively fast answer.""" start="00:12:23.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: So basically for example Doom does this,""" start="00:12:29.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""it temporary writes a gcconcert hold during""" start="00:12:31.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""startup and yeah after init hook the code is""" start="00:12:37.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""like it's 1 of the commonly suggested""" start="00:12:39.880" video="qanda-gc" id="subtitle"]]
+[[!template text="""approaches and is I believe it's the right 1.""" start="00:12:43.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. To have joined us 1 was a microphone.""" start="00:12:49.180" video="qanda-gc" id="subtitle"]]
+[[!template text="""So Peter, do you have any questions that you""" start="00:12:52.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""want to question? And maybe as a side note,""" start="00:12:55.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""we only have 4 minutes left and afterwards""" start="00:12:57.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""this happy weekend will still be open,""" start="00:12:59.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""but we will switch back to the talks.""" start="00:13:01.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, no more questions on garbage""" start="00:13:05.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""collection, but I just wanted to thank Ihor""" start="00:13:07.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""for his engagement in the community.""" start="00:13:10.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""And especially with, I'm a co-maintainer on""" start="00:13:15.300" video="qanda-gc" id="subtitle"]]
+[[!template text="""orgnotor and he's helped us a lot with""" start="00:13:17.600" video="qanda-gc" id="subtitle"]]
+[[!template text="""getting us up to date with newer versions of""" start="00:13:21.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""org and stuff like that.""" start="00:13:22.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""So just wanted to thank you in person.""" start="00:13:24.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right.""" start="00:13:25.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Maybe 1 question for me,""" start="00:13:33.540" video="qanda-gc" id="subtitle"]]
+[[!template text="""you had some bit talked about memory""" start="00:13:35.460" video="qanda-gc" id="subtitle"]]
+[[!template text="""fragmentation. So is there any way to or is""" start="00:13:40.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""it fixed by Emacs itself?""" start="00:13:42.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""So you have like""" start="00:13:43.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: a chunk of memory fragmentation is basically""" start="00:13:46.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""your OS. Yeah, Emacs releases the memory and""" start="00:13:51.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""then OS can rearrange it depending on the""" start="00:13:55.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""implementation of its memory manager.""" start="00:13:58.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, so the GC just releases it really and""" start="00:14:01.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""not so it could be that a mix is like""" start="00:14:04.400" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: doing it. You have like memory pages,""" start="00:14:07.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""right? Yeah. And you see,""" start="00:14:09.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""can release a part of this page just like""" start="00:14:12.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""here and there. And depending on the exact""" start="00:14:14.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""situation is your arm at each moment of time,""" start="00:14:17.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""or as may or may not be able to arrange""" start="00:14:20.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: so""" start="00:14:25.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: things. So, how the exact the data you cannot""" start="00:14:27.620" video="qanda-gc" id="subtitle"]]
+[[!template text="""really predict it. It really varies like you""" start="00:14:30.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""use Windows, you use Linux,""" start="00:14:31.120" video="qanda-gc" id="subtitle"]]
+[[!template text="""you use like malloc, something else,""" start="00:14:33.240" video="qanda-gc" id="subtitle"]]
+[[!template text="""but it has nothing to do with Emacs.""" start="00:14:36.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""It's just something you have to deal with.""" start="00:14:38.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, but my question was in the way that we""" start="00:14:41.780" video="qanda-gc" id="subtitle"]]
+[[!template text="""are giving the memory back to the operating""" start="00:14:43.460" video="qanda-gc" id="subtitle"]]
+[[!template text="""system, not just holding it as used and then""" start="00:14:46.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""to our own memory, like stuff as Emacs that""" start="00:14:49.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""we do not need to interact with the operating""" start="00:14:51.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. Emacs does not really hold anything.""" start="00:14:56.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: system. That was the question.""" start="00:14:59.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay. I was really hoping it does,""" start="00:15:01.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""but yeah, unfortunately,""" start="00:15:02.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""because nothing much can be done on Emacs.""" start="00:15:05.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. it's not Probably a lot faster if it's""" start="00:15:08.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""just holding it and when it needs more,""" start="00:15:10.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""then just get more from the OS.""" start="00:15:12.380" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: There are certain caveats,""" start="00:15:14.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""for example, there's something called image""" start="00:15:16.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""cache. And because Emacs stores images in""" start="00:15:20.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""uncompressed format, it can occupy quite a""" start="00:15:23.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""lot of memory. In particular,""" start="00:15:25.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""when you will like view PDFs,""" start="00:15:26.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""like you open 10, like 20 PDFs in 1 session,""" start="00:15:30.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""you may have like some image cache blowing""" start="00:15:33.460" video="qanda-gc" id="subtitle"]]
+[[!template text="""up, But that's not common for people.""" start="00:15:36.720" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: So, guess we are on our time exactly.""" start="00:15:41.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""So in the next""" start="00:15:43.580" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think I was not exactly accurate.""" start="00:15:46.680" video="qanda-gc" id="subtitle"]]
+[[!template text="""This 1 command, which is,""" start="00:15:49.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think, Nemax 30, is called a malloc trim.""" start="00:15:53.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""A max malloc trim. It's interactive.""" start="00:15:57.520" video="qanda-gc" id="subtitle"]]
+[[!template text="""So that can help to release some memory.""" start="00:16:04.080" video="qanda-gc" id="subtitle"]]
+[[!template text="""I think the way it works is like forces OS to""" start="00:16:08.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""make use of the released memory.""" start="00:16:12.040" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. That would be like,""" start="00:16:14.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""we are by the way, switch back to the next""" start="00:16:18.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""talk. But""" start="00:16:21.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: so basically what happens here is that OS may""" start="00:16:24.220" video="qanda-gc" id="subtitle"]]
+[[!template text="""not release like, even Emacs says,""" start="00:16:27.440" video="qanda-gc" id="subtitle"]]
+[[!template text="""okay, this memory is free,""" start="00:16:28.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""depending on the implementation,""" start="00:16:30.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""I might think, okay, but I still hold that""" start="00:16:32.760" video="qanda-gc" id="subtitle"]]
+[[!template text="""memory associated with Emacs just in case""" start="00:16:34.860" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs needs more memories,""" start="00:16:35.800" video="qanda-gc" id="subtitle"]]
+[[!template text="""and I can immediately put the data there""" start="00:16:38.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""without like more arrangement to allocate""" start="00:16:41.420" video="qanda-gc" id="subtitle"]]
+[[!template text="""more. And this analog stream basically forces""" start="00:16:45.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""the OS to release it, like no matter what.""" start="00:16:48.740" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Because most people, when they are using""" start="00:16:52.360" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs, I have the feeling they are only using""" start="00:16:54.320" video="qanda-gc" id="subtitle"]]
+[[!template text="""Emacs. So it would be kind of interesting if""" start="00:16:56.160" video="qanda-gc" id="subtitle"]]
+[[!template text="""you just take like, I don't know,""" start="00:16:57.880" video="qanda-gc" id="subtitle"]]
+[[!template text="""2 gigabytes or something of memory and Emacs""" start="00:17:00.060" video="qanda-gc" id="subtitle"]]
+[[!template text="""like does what it wants on that and the OS""" start="00:17:02.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""cannot really take it back.""" start="00:17:04.079" video="qanda-gc" id="subtitle"]]
+[[!template text="""This was my idea when I""" start="00:17:05.920" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: was So when you see 2 gigabytes in OS,""" start="00:17:08.000" video="qanda-gc" id="subtitle"]]
+[[!template text="""it doesn't mean that OS cannot take it back.""" start="00:17:10.359" video="qanda-gc" id="subtitle"]]
+[[!template text="""It may still like allocate certain portion,""" start="00:17:13.859" video="qanda-gc" id="subtitle"]]
+[[!template text="""even technically free,""" start="00:17:15.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""but just for future. So this is where Malloc""" start="00:17:20.940" video="qanda-gc" id="subtitle"]]
+[[!template text="""Dream works. It's like,""" start="00:17:22.339" video="qanda-gc" id="subtitle"]]
+[[!template text="""it says, yes, OS, I really not going to hold""" start="00:17:25.319" video="qanda-gc" id="subtitle"]]
+[[!template text="""this for this free memory.""" start="00:17:26.500" video="qanda-gc" id="subtitle"]]
+[[!template text="""For sure. If you try this MX Malloc Gene,""" start="00:17:31.700" video="qanda-gc" id="subtitle"]]
+[[!template text="""you will see like a few times to hundreds of""" start="00:17:33.960" video="qanda-gc" id="subtitle"]]
+[[!template text="""megabytes of read immediately.""" start="00:17:35.200" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: Have a look when I have the time.""" start="00:17:38.560" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: I""" start="00:17:41.480" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 0]: guess if nobody has any questions,""" start="00:17:43.260" video="qanda-gc" id="subtitle"]]
+[[!template text="""I guess on the pad, there was Nothing else.""" start="00:17:45.660" video="qanda-gc" id="subtitle"]]
+[[!template text="""I guess we can just close it.""" start="00:17:47.900" video="qanda-gc" id="subtitle"]]
+[[!template text="""Thanks for the discussion.""" start="00:17:49.140" video="qanda-gc" id="subtitle"]]
+[[!template text="""Thanks for answering the questions.""" start="00:17:50.640" video="qanda-gc" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you for the great conference.""" start="00:17:56.020" video="qanda-gc" id="subtitle"]]
+[[!template text="""And yeah, for your volunteer work.""" start="00:17:59.340" video="qanda-gc" id="subtitle"]]
+[[!template text="""And yeah, for quietly panicking in the""" start="00:18:02.230" video="qanda-gc" id="subtitle"]]
+[[!template text="""background, right? Yeah,""" start="00:18:02.262" video="qanda-gc" id="subtitle"]]
+[[!template text="""I mean... You have to be quiet,""" start="00:18:02.337" video="qanda-gc" id="subtitle"]]
+[[!template text="""you're panicking in the background.""" start="00:18:02.560" video="qanda-gc" id="subtitle"]]
+
+Questions or comments? Please e-mail [yantar92@posteo.net](mailto:yantar92@posteo.net?subject=Comment%20for%20EmacsConf%202023%20gc%3A%20emacs-gc-stats%3A%20Does%20garbage%20collection%20actually%20slow%20down%20Emacs%3F)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/gc-before.md b/2023/info/gc-before.md
new file mode 100644
index 00000000..035db20a
--- /dev/null
+++ b/2023/info/gc-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 34-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="gc-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 33:22 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--main.opus">Download --main.opus (22MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--main.webm">Download --main.webm (80MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-gc--emacsgcstats-does-garbage-collection-actually-slow-down-emacs--ihor-radchenko--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/ngenUPBLDDkZGmsxK8vimJ">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/gc-nav.md b/2023/info/gc-nav.md
new file mode 100644
index 00000000..0bef707f
--- /dev/null
+++ b/2023/info/gc-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/emacsen">The Emacsen family, the design of an Emacs and the importance of Lisp</a>
+Next by track: <a href="/2023/talks/hyperdrive">hyperdrive.el: Peer-to-peer filesystem in Emacs</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/hn-after.md b/2023/info/hn-after.md
new file mode 100644
index 00000000..fe58de2b
--- /dev/null
+++ b/2023/info/hn-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [mickael@kerjean.me](mailto:mickael@kerjean.me?subject=Comment%20for%20EmacsConf%202022%20hn%3A%20The%20many%20ways%20to%20browse%20Hacker%20News%20from%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/hn-before.md b/2023/info/hn-before.md
new file mode 100644
index 00000000..2700a0ea
--- /dev/null
+++ b/2023/info/hn-before.md
@@ -0,0 +1,18 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+
+The following image shows where the talk is in the schedule for Sun 2023-12-03. 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="hn">
+<svg width="800" 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="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2023/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2023/talks/hyperamp" title="Top 10 ways Hyperbole amps up Emacs" data-slug="hyperamp"> <title> 9:05- 9:25 Top 10 ways Hyperbole amps up Emacs</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperamp</text></g></a> <a href="/2023/talks/koutline" title="Using Koutline for stream of thought journaling" data-slug="koutline"> <title> 9:40-10:00 Using Koutline for stream of thought journaling</title> <rect x="62" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(91,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> koutline</text></g></a> <a href="/2023/talks/parallel" title="Parallel Text Replacement: Does P = NP?" data-slug="parallel"> <title> 10:10-10:20 Parallel Text Replacement: Does P = NP?</title> <rect x="109" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(122,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> parallel</text></g></a> <a href="/2023/talks/eat" title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs" data-slug="eat"> <title> 10:35-10:45 Eat and Eat powered Eshell, fast featureful terminal inside Emacs</title> <rect x="149" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(162,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eat</text></g></a> <a href="/2023/talks/poltys" title="The browser in a buffer" data-slug="poltys"> <title> 11:00-11:20 The browser in a buffer</title> <rect x="188" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(217,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> poltys</text></g></a> <a href="/2023/talks/cubing" title="Speedcubing in Emacs" data-slug="cubing"> <title> 11:35-11:55 Speedcubing in Emacs</title> <rect x="243" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(272,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> cubing</text></g></a> <a href="/2023/talks/emms" title="Emacs MultiMedia System (EMMS)" data-slug="emms"> <title> 1:00- 1:40 Emacs MultiMedia System (EMMS)</title> <rect x="376" y="15" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(436,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emms</text></g></a> <a href="/2023/talks/steno" title="Programming at 200 wpm" data-slug="steno"> <title> 1:55- 2:25 Programming at 200 wpm</title> <rect x="462" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(507,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> steno</text></g></a> <a href="/2023/talks/mentor" title="Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)" data-slug="mentor"> <title> 2:35- 2:45 Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</title> <rect x="525" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(538,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mentor</text></g></a> <a href="/2023/talks/hn" title="The many ways to browse Hacker News from Emacs" data-slug="hn"> <title> 3:00- 3:10 The many ways to browse Hacker News from Emacs</title> <rect stroke-width="3" x="564" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(577,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hn</text></g></a> <a href="/2023/talks/web" title="Emacs saves the Web" data-slug="web"> <title> 3:25- 4:05 Emacs saves the Web</title> <rect x="603" y="15" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(663,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> web</text></g></a> <a href="/2023/talks/sharing" title="Sharing Emacs is Caring Emacs: Emacs education and why I embraced video" data-slug="sharing"> <title> 4:20- 4:40 Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</title> <rect x="690" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(719,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sharing</text></g></a> <a href="/2023/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:55- 5:05 Sunday closing remarks</title> <rect x="745" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(758,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2023/talks/scheme" title="Bringing joy to Scheme programming" data-slug="scheme"> <title> 10:00-10:20 Bringing joy to Scheme programming</title> <rect x="94" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(123,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> scheme</text></g></a> <a href="/2023/talks/test" title="What I learned by writing test cases for GNU Hyperbole" data-slug="test"> <title> 10:35-10:55 What I learned by writing test cases for GNU Hyperbole</title> <rect x="149" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(178,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> test</text></g></a> <a href="/2023/talks/world" title="GNU Emacs: A World of Possibilities" data-slug="world"> <title> 11:10-11:30 GNU Emacs: A World of Possibilities</title> <rect x="203" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(232,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> world</text></g></a> <a href="/2023/talks/flat" title="A modern Emacs look-and-feel without pain" data-slug="flat"> <title> 11:45-11:55 A modern Emacs look-and-feel without pain</title> <rect x="258" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(271,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> flat</text></g></a> <a href="/2023/talks/gc" title="emacs-gc-stats: Does garbage collection actually slow down Emacs?" data-slug="gc"> <title> 1:00- 1:20 emacs-gc-stats: Does garbage collection actually slow down Emacs?</title> <rect x="376" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> gc</text></g></a> <a href="/2023/talks/hyperdrive" title="hyperdrive.el: Peer-to-peer filesystem in Emacs" data-slug="hyperdrive"> <title> 1:35- 2:15 hyperdrive.el: Peer-to-peer filesystem in Emacs</title> <rect x="431" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(491,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperdrive</text></g></a> <a href="/2023/talks/lspocaml" title="Writing a language server in OCaml for Emacs, fun, and profit" data-slug="lspocaml"> <title> 2:30- 2:40 Writing a language server in OCaml for Emacs, fun, and profit</title> <rect x="517" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspocaml</text></g></a> <a href="/2023/talks/windows" title="Windows into Freedom" data-slug="windows"> <title> 2:55- 3:35 Windows into Freedom</title> <rect x="556" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(616,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> windows</text></g></a> <a href="/2023/talks/emacsen" title="The Emacsen family, the design of an Emacs and the importance of Lisp" data-slug="emacsen"> <title> 3:50- 4:10 The Emacsen family, the design of an Emacs and the importance of Lisp</title> <rect x="643" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(672,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsen</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(94,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(188,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(282,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(376,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(470,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(564,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(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"> 4 PM</text></g> <g transform="translate(752,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: 10-min talk followed by live web conference Q&A
+Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
+Status: Waiting for video from speaker
+<div>Times in different timezones:</div><div class="times" start="2023-12-03T20:00:00Z" end="2023-12-03T20:00:00Z"><div class="conf-time">Sunday, Dec 3 2023, ~3:00 PM - 3:00 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 3 2023, ~2:00 PM - 2:00 PM CST (US/Central)<br />Sunday, Dec 3 2023, ~1:00 PM - 1:00 PM MST (US/Mountain)<br />Sunday, Dec 3 2023, ~12:00 PM - 12:00 PM PST (US/Pacific)<br />Sunday, Dec 3 2023, ~8:00 PM - 8:00 PM UTC <br />Sunday, Dec 3 2023, ~9:00 PM - 9:00 PM CET (Europe/Paris)<br />Sunday, Dec 3 2023, ~10:00 PM - 10:00 PM EET (Europe/Athens)<br />Monday, Dec 4 2023, ~1:30 AM - 1:30 AM IST (Asia/Kolkata)<br />Monday, Dec 4 2023, ~4:00 AM - 4:00 AM +08 (Asia/Singapore)<br />Monday, Dec 4 2023, ~5:00 AM - 5:00 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/gen/">Find out how to watch and participate</a></div>
+
+
+
+
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/hn-nav.md b/2023/info/hn-nav.md
new file mode 100644
index 00000000..72fa004e
--- /dev/null
+++ b/2023/info/hn-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by time: <a href="/2023/talks/windows">Windows into Freedom</a>
+Next by time: <a href="/2023/talks/web">Emacs saves the Web</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/hyperamp-after.md b/2023/info/hyperamp-after.md
new file mode 100644
index 00000000..051a5dad
--- /dev/null
+++ b/2023/info/hyperamp-after.md
@@ -0,0 +1,1351 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="hyperamp-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""[Speaker 0]: 5 seconds. Oh, actually,""" start="00:00:01.719" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sorry, I keep delaying.""" start="00:00:07.279" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I keep forgetting that we have an""" start="00:00:08.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""introduction now. The introduction is flying.""" start="00:00:09.559" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: a little more. You're going to give a""" start="00:00:02.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, it's about 5 seconds now.""" start="00:00:22.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: 30-second, right? Just say go when you want""" start="00:00:19.675" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure. You'll hear me anyway.""" start="00:00:29.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: me to go. Okay.""" start="00:00:27.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right, I think we are live now.""" start="00:00:33.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So hi again, everyone.""" start="00:00:35.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I promised you we would be back in about 30""" start="00:00:36.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""seconds. I lied, it was actually 1 minute,""" start="00:00:37.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but we are here with Bob.""" start="00:00:40.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hi, Bob, how are you doing?""" start="00:00:41.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Hi, doing great. Glad to""" start="00:00:43.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: be with you. Yeah, glad to be here,""" start="00:00:46.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and so are we. We're glad to have you again""" start="00:00:50.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this year. So what we're going to do,""" start="00:00:52.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we're not going to waste any time right now""" start="00:00:54.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with chit-chats. What we're going to do,""" start="00:00:56.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we're going to move straight into your""" start="00:00:57.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""presentation, Bob, so that you have as much""" start="00:00:59.059" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""time as you can. I'm going to recede into the""" start="00:01:01.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""background. I am going to full screen your""" start="00:01:04.239" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""presentation on a stream.""" start="00:01:07.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And Bob, the floor is all yours.""" start="00:01:09.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you very much, Leo.""" start="00:01:12.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Glad to be here. I hope everybody has an idea""" start="00:01:15.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of what Hyperbole is, but it's a broad""" start="00:01:18.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""information management system inside Emacs""" start="00:01:22.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that works in all major modes.""" start="00:01:26.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's a global minor mode that you can turn on""" start="00:01:28.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and off very rapidly so that you can just get""" start="00:01:31.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in and out of hyperbole.""" start="00:01:34.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And it works mostly from a mini buffer menu""" start="00:01:36.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that if we just hit ctrl H H we see at the""" start="00:01:41.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""bottom of the screen here and as you see in""" start="00:01:44.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""some of this text right here,""" start="00:01:47.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Dee will show you a demo with all these video""" start="00:01:51.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""links of Hyperbole now.""" start="00:01:55.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But let's just get into the top 10 reasons to""" start="00:01:57.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""use Hyperbole. Number 10 is a key series""" start="00:02:01.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""curly braces. So you just put curly braces""" start="00:02:10.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""around any set of key sequences that you want""" start="00:02:12.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and hyperbole magically turns that into what""" start="00:02:19.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we call an implicit button a hyper button and""" start="00:02:22.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""any kind of text that you have so if we go""" start="00:02:25.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""down here and we just click click here we see""" start="00:02:28.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it that was a complex button that said let's""" start="00:02:35.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""start a shell, let's set an environment""" start="00:02:40.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""variable as you see the command right up""" start="00:02:43.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""there, and then let's do a grep over the""" start="00:02:45.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole code and find all instances of a""" start="00:02:47.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""particular label. So if we hit made a return,""" start="00:02:50.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that's called the action key.""" start="00:02:55.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""That's what you use throughout hyperbole when""" start="00:02:57.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you just want to activate any kind of button.""" start="00:02:59.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So you see it jumped to the grep output and""" start="00:03:02.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this is in a shell buffer it's not in a""" start="00:03:06.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""compilation buffer so anywhere that you have""" start="00:03:08.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this sort of thing it's also an implicit""" start="00:03:11.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button and any sort of grep output or""" start="00:03:13.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""compiler output you can just jump to with the""" start="00:03:17.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""same key, made a return.""" start="00:03:22.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So that's key series, the first part.""" start="00:03:23.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And then just to note that you can also just""" start="00:03:29.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""do a, well I'll just do it here and show you""" start="00:03:33.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that you can do a recursive grep with this""" start="00:03:39.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole command, HYPBR grep.""" start="00:03:43.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And if you're in an Emacs list buffer,""" start="00:03:46.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it will only grep across the Emacs list.""" start="00:03:50.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So a very handy way to just go through your""" start="00:03:54.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""code very rapidly and then jump to various""" start="00:03:58.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""points in it. So we have a lot to cover""" start="00:04:01.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""today, so I'm going to go through this""" start="00:04:04.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""rapidly. This isn't a tutorial,""" start="00:04:05.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's just to get you interested in some of""" start="00:04:07.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the features, and then there's a ton of""" start="00:04:10.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""reference material and videos now available""" start="00:04:13.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for Hyperlink. So let's go to number 9.""" start="00:04:15.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Path names become implicit buttons.""" start="00:04:20.019" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You don't even have to quote them.""" start="00:04:22.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You can add environment variables or elist""" start="00:04:24.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""variables with the syntax right here.""" start="00:04:26.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So here we have a shell script that's""" start="00:04:29.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""somewhere on our path.""" start="00:04:32.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And notice path is an environment variable""" start="00:04:33.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with many different paths within it,""" start="00:04:36.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""right? But Hyperbole knows that and it""" start="00:04:39.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""searches the path, gets the first match,""" start="00:04:42.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""finds it, and finds the actual shell script.""" start="00:04:45.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So you can just embed that anywhere.""" start="00:04:48.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Here we have a list variable,""" start="00:04:50.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbdur, which is the home directory for""" start="00:04:52.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole, and then a markdown file,""" start="00:04:54.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and a link to a direct section in the file,""" start="00:04:58.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and the 5 colon 5 means go to line 5 within""" start="00:05:01.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that section and column 5.""" start="00:05:05.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let's just try it. Boom,""" start="00:05:07.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we're right there, and we're on another link""" start="00:05:09.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that we could activate as well.""" start="00:05:11.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So notice the next line is the same link but""" start="00:05:13.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this is how you normally have to do it in a""" start="00:05:17.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""markdown file. You have to change the section""" start="00:05:20.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""header to have dashes but with hyperbole you""" start="00:05:23.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""don't have to. You can just put it exactly""" start="00:05:25.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""like you see it in your file.""" start="00:05:28.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Here the pound syntax for sections is really""" start="00:05:30.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""a generic syntax in the hyperbole.""" start="00:05:34.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And so it works in all different kinds of""" start="00:05:37.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""files, your programming files.""" start="00:05:39.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Here's a shell script and we said let's just""" start="00:05:42.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""go to the first comment that has alias in it.""" start="00:05:45.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Notice we didn't have to say the whole line,""" start="00:05:49.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""just the first part of it.""" start="00:05:51.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And it matched to it. Here we have a link to""" start="00:05:53.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""our hyperbole structured outliner called the""" start="00:05:58.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""K Outliner. And you can see it auto-numbers""" start="00:06:01.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""all these cells. But in addition to just""" start="00:06:05.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""displaying, you can also add a pipe symbol""" start="00:06:08.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""near the end and use this view syntax to clip""" start="00:06:10.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to 2 lines and show blank lines.""" start="00:06:14.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let's see if each node gets clipped to 2""" start="00:06:17.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""lines. So you see they're all just 2 now with""" start="00:06:19.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the ellipses and then we can expand them.""" start="00:06:22.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So a lot of power there just with path names.""" start="00:06:25.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Let's continue to number 8.""" start="00:06:29.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Can I just interrupt you just a bit?""" start="00:06:31.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes.""" start="00:06:33.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think your phone, so we have your phone set""" start="00:06:34.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""up in case your internet misbehaves and we've""" start="00:06:37.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""set this up before we started,""" start="00:06:40.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but I think the vibration is a little loud""" start="00:06:42.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""whenever it does. Can you maybe move it a""" start="00:06:44.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""little bit? I think so.""" start="00:06:46.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It will have to vibrate again.""" start="00:06:50.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Is that okay? No, my phone...""" start="00:06:47.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Okay. It shouldn't have been vibrating.""" start="00:06:54.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: have been another device,""" start="00:06:59.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but definitely we had vibration.""" start="00:07:01.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Anyway, carry on. Sorry for the interruption.""" start="00:07:02.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: It could be me. It might So number 8,""" start="00:06:57.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""special prefixes. There are 3 prefixes you""" start="00:07:07.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can attach to path names.""" start="00:07:10.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""The first, if you want to load,""" start="00:07:11.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""instead of just finding a file,""" start="00:07:13.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""an ELIST file, you can actually load it.""" start="00:07:16.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And so I can just hit made a return on this,""" start="00:07:19.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and you see in the mini buffer,""" start="00:07:22.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it loaded it as compiled e-list.""" start="00:07:25.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I could put a .el on here,""" start="00:07:27.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""a .elc, .gz, all of that'll work,""" start="00:07:29.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and just put a dash in front to load it.""" start="00:07:33.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""If you want to run a shell command,""" start="00:07:36.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""just put an exclamation mark in front of""" start="00:07:38.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""something and again you can have the""" start="00:07:41.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""environment variable. So here we're saying""" start="00:07:42.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""run the program date and you see,""" start="00:07:44.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""let's see, let's do it again.""" start="00:07:48.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""There we go. It ran date and you see the""" start="00:07:50.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""output right there. And what if you want to""" start="00:07:53.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""run a graphical program on your system?""" start="00:07:55.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Well here, we want to open a PDF file and I'm""" start="00:07:58.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""just using XDG Open on Linux,""" start="00:08:01.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you could use Open on Mac and you just put an""" start="00:08:05.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""ampersand in front and there's the Hyperbole""" start="00:08:09.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""manual instantly displayed.""" start="00:08:14.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So lots of power there and all of that""" start="00:08:16.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""actually .pdf's and many other file types are""" start="00:08:18.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""automatically linked to various programs by""" start="00:08:22.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole. So you could just use the path""" start="00:08:25.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""name itself and it would probably behave the""" start="00:08:27.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""same way. Number 7, bookmarks on steroids.""" start="00:08:29.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So Hyperbole gives you a personal button""" start="00:08:35.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""file, which is on the menu you see here under""" start="00:08:37.419" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button files, and then personal.""" start="00:08:40.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So here we'll just display it.""" start="00:08:43.039" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And you can put whatever you want in here,""" start="00:08:45.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""these implicit buttons of any type.""" start="00:08:47.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You can name them the way here and you can""" start="00:08:49.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""activate either the name with MetaReturn or""" start="00:08:52.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the button itself. So,""" start="00:08:55.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of course, if we did MetaReturn here,""" start="00:08:56.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we'd just display that in a web browser.""" start="00:08:59.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'll just do a few of these.""" start="00:09:03.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So here's a section of line.""" start="00:09:05.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Let's just jump there.""" start="00:09:07.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But these can be all sorts of different""" start="00:09:09.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""actions that are going on.""" start="00:09:11.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And you just, whatever cross references you""" start="00:09:13.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""want, you put in here.""" start="00:09:16.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And the neat thing is that this then becomes""" start="00:09:17.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""a list of what we call global buttons.""" start="00:09:20.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So when I go into the menu and I go control""" start="00:09:23.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""HHGA to activate a global button,""" start="00:09:26.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can see that all the names from this file""" start="00:09:30.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""appear here. So only the name buttons appear,""" start="00:09:33.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and I could like go to the hyperbole to-do""" start="00:09:36.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""list and things like that.""" start="00:09:40.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So very, very quick access to all your""" start="00:09:42.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""information whenever you need it.""" start="00:09:45.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And that could be an org file as well if you""" start="00:09:47.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""prefer that. So we just took care of that.""" start="00:09:49.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Number 6, instant test case running and""" start="00:09:53.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""debugging. This is a fairly new feature.""" start="00:09:57.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""What we're seeing here is a pre-release of""" start="00:10:00.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""version 9, which should be out within the""" start="00:10:02.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""next week. But the instructions at the""" start="00:10:04.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""beginning of the presentation tell you how to""" start="00:10:07.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""get the development version of HyperBlade,""" start="00:10:10.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which is right now 8.01""" start="00:10:14.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""pre, but that's virtually the same as what 9""" start="00:10:15.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""will be. So you can grab that as of today.""" start="00:10:19.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let's just jump to a test file.""" start="00:10:24.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""What you see here is called an explicit""" start="00:10:27.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button. You can actually make buttons where""" start="00:10:30.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""similar to org, where you just see a bit of""" start="00:10:33.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the button and all of the metadata is hidden.""" start="00:10:35.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I can say control A J and I see all about""" start="00:10:39.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that button, exactly what it's going to do""" start="00:10:42.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""before I activate it and even who created it""" start="00:10:43.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""or last modified it. Then just queue out of""" start="00:10:47.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""here and you're back where you were.""" start="00:10:50.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So now, what this did is link us to an ERT""" start="00:10:52.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""test. If you write tests in Emacs,""" start="00:10:56.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you probably use ERT tests.""" start="00:10:59.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So if I hit made a return on here it'll just""" start="00:11:02.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""run the test tell me it passed great okay but""" start="00:11:05.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""maybe I had a problem so let me use control""" start="00:11:08.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you made a return and that will e-debug the""" start="00:11:11.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""test instantly. So now I'll step through it""" start="00:11:17.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it says, well, let's,""" start="00:11:20.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this single line actually creates that""" start="00:11:23.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""explicit button. You see we have an empty""" start="00:11:25.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buffer here that we're in.""" start="00:11:27.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Now I step through that and now there's the""" start="00:11:29.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""explicit button that got put in there.""" start="00:11:31.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Now the next line I step through it and this""" start="00:11:34.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""is going to check if we have the right action""" start="00:11:36.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""type and it returns true so that's good and""" start="00:11:39.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""now we should be it should be associated with""" start="00:11:42.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the temp buffer returns true good And that's""" start="00:11:45.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""why what you saw before is this passed.""" start="00:11:48.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""The whole thing passed.""" start="00:11:51.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So lots of power there.""" start="00:11:53.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Simple to use. You're just using your made a""" start="00:11:55.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""return and prefix arguments.""" start="00:11:57.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's something everybody who develops should""" start="00:12:00.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""have. So number, let's go on.""" start="00:12:03.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I think we're making pretty good time here,""" start="00:12:07.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but I turned off my timer.""" start="00:12:09.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Let's go to number 5. This is a very new""" start="00:12:13.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""feature, which is very cool too.""" start="00:12:15.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You used to have to use the mouse probably""" start="00:12:17.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and you could drag across windows to go from""" start="00:12:20.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""a source to a referent buffer and that would""" start="00:12:23.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""create a hyperlink for you.""" start="00:12:26.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But now we've installed it and made it even""" start="00:12:28.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""easier on, we've installed it on a,""" start="00:12:30.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""on the hyperbole menus.""" start="00:12:34.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let's just go back to our presentation""" start="00:12:37.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""here and say we want to link to this line""" start="00:12:40.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that we're on there. And I'll just create the""" start="00:12:43.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button in our scratch buffer here so it""" start="00:12:46.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""doesn't really mess anything up.""" start="00:12:48.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I just put my point in where I want the""" start="00:12:50.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button to appear and then I put point where I""" start="00:12:53.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""want it to link to in the other the other""" start="00:12:56.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buffer and then I just say control HH to get""" start="00:13:00.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""my menu, I for implicit button,""" start="00:13:02.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and then L for link. Boom,""" start="00:13:05.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it inserts it, right at point.""" start="00:13:07.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""What did it do? It knew that this was in the""" start="00:13:10.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole directory and I have a variable for""" start="00:13:12.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that, so that if you sent this link to your""" start="00:13:15.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""friend who uses Hyperbole,""" start="00:13:17.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it would still work right because they have a""" start="00:13:19.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""different hyperbole there.""" start="00:13:21.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And then I want to go directly to line 116.""" start="00:13:23.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So boom, it just took me there.""" start="00:13:28.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So that's it. And Hyperbole is doing all this""" start="00:13:30.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for you. You just say I want a link to this""" start="00:13:33.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""thing and it figures out what's at point and""" start="00:13:36.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it determines the right type of implicit link""" start="00:13:38.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to put there. And that's the whole point is""" start="00:13:42.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that you're just working like when you're""" start="00:13:45.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""programming or you're writing an article and""" start="00:13:47.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you just hit made a return or or pull up a""" start="00:13:50.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""menu and hit a key binding and you're off to""" start="00:13:53.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the races. So that was implicit linking We""" start="00:13:57.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can also create those explicit link buttons,""" start="00:14:02.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and as well as the global link,""" start="00:14:06.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""where we would just give it a name,""" start="00:14:07.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it would automatically put it in our""" start="00:14:09.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""global button file without us even having""" start="00:14:11.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that on screen. So lots of power there as""" start="00:14:14.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well, lots of consistency.""" start="00:14:18.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Now let's take a look at the K Outliner a""" start="00:14:21.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""little more. I'm just going to show you 1""" start="00:14:25.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""feature actually. I don't have time to show""" start="00:14:28.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you the K Outliner in detail,""" start="00:14:29.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but it's a really cool structured outliner""" start="00:14:31.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that even if you love Org Mode,""" start="00:14:34.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you should try it. And this is 1 thing that""" start="00:14:36.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can't get with Org Mode,""" start="00:14:39.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""is let's say Hyperlink comes with an example""" start="00:14:41.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""file which teaches you about the K Outliner.""" start="00:14:45.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So we'll just use that right here.""" start="00:14:48.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And when you're in the K Outliner,""" start="00:14:51.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can bring up and go into the K Outliner""" start="00:14:53.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""menu right here at the bottom.""" start="00:14:55.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And there's a format menu there.""" start="00:14:58.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You always take the first letter of a menu,""" start="00:15:00.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the first capital letter of a menu item.""" start="00:15:02.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So F for format and then D for display in""" start="00:15:05.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""browser. So just let's do it.""" start="00:15:08.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We have with 1 button or 1 key we've produced""" start="00:15:12.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the entire outline in a collapsible outline""" start="00:15:17.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in HTML. So I can go here.""" start="00:15:23.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I just have to use my mouse.""" start="00:15:27.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I can expand and collapse these trees live""" start="00:15:29.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with very basic coding.""" start="00:15:34.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We tried to keep this as simple as possible.""" start="00:15:39.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But you see it maintains the structure of the""" start="00:15:42.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""outline and even tables.""" start="00:15:45.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So all the formatting is maintained and again""" start="00:15:55.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's instant. Or you can just export it to a""" start="00:15:57.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""file without displaying it.""" start="00:16:00.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Very efficient kinds of operations.""" start="00:16:03.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So that was number 4. Number 3 is a""" start="00:16:06.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""subsystem, another subsystem in Hyperbole""" start="00:16:10.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""called Hycontrol, which is for window and""" start="00:16:13.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""frame management. And I just wanted to show""" start="00:16:16.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you 1 thing in there. It's got a lot of""" start="00:16:18.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""capabilities. But I always had the problem""" start="00:16:20.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that Emacs wouldn't let me scale my fonts,""" start="00:16:24.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""all of my faces at the same time.""" start="00:16:28.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I wanted to zoom. I didn't want to increase""" start="00:16:30.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the default font size and all the others stay""" start="00:16:33.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the same. So let's just display our faces""" start="00:16:36.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""right here and then we have a choice of""" start="00:16:41.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""either controlling frames or windows.""" start="00:16:45.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let's start by controlling frames.""" start="00:16:47.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So you get another submenu when you're in""" start="00:16:50.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""high control to tell you what to do here.""" start="00:16:52.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And there's just lowercase z and uppercase z.""" start="00:16:56.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let's try it. So it's scaling the entire""" start="00:16:59.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""frame. And you can see from the list of faces""" start="00:17:03.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that they're all scaling at the same time.""" start="00:17:06.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I can go back down.""" start="00:17:08.599" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Now if I switch to window mode,""" start="00:17:10.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and there's a special fast way to do that,""" start="00:17:13.619" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""just hit T to toggle. And if you look at the""" start="00:17:16.099" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""bottom menu it says frames right now now it""" start="00:17:18.819" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""says windows when I hit T so now if I do the""" start="00:17:21.819" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""same Z to increase it's just this window and""" start="00:17:25.599" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but it's you know it's the faces in there so""" start="00:17:30.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""a lot of power again but I just haven't found""" start="00:17:37.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""anywhere else that you can get that kind of""" start="00:17:40.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""control over your faces very rapidly.""" start="00:17:43.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So that's number 3. Now number 2,""" start="00:17:45.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""let's put that in there.""" start="00:17:55.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So the HiROLO is the final subsystem in""" start="00:17:58.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole and this has gotten much cooler.""" start="00:18:03.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it started off as a contact management""" start="00:18:06.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""system, but it's really just a hierarchical""" start="00:18:08.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""record management system that lets you have""" start="00:18:11.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""as many files, directories as you want,""" start="00:18:15.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and you can search across all of them without""" start="00:18:18.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""any external utilities necessary,""" start="00:18:20.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""just what's built into Emacs and Hyperlink.""" start="00:18:23.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So as you can see, we've expanded it to""" start="00:18:26.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""handle org files, markdown,""" start="00:18:29.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""K outlines, Emacs outlines.""" start="00:18:32.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So what I'm going to do is just say,""" start="00:18:34.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I want to search using my Hyberlo file list.""" start="00:18:36.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You just set that to what you wanted to""" start="00:18:40.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""search. But now you have all this""" start="00:18:43.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""flexibility. You can use environment""" start="00:18:44.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""variables in it. You can just specify a""" start="00:18:46.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""directory and it will find all those matching""" start="00:18:48.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""files below that directory recursively.""" start="00:18:51.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You can give it the markdown file here and""" start="00:18:55.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can use file wildcards as well.""" start="00:18:58.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I mean, look at this. It's got a list""" start="00:19:01.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""variable in it and a wildcard,""" start="00:19:04.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it's just all I'm gonna do is I change""" start="00:19:06.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this from a Lisp expression to make it a""" start="00:19:09.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyper button. You just change the outer""" start="00:19:13.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""parens to angle brackets,""" start="00:19:15.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and then it's automatically an implicit""" start="00:19:17.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button that you can activate with made a""" start="00:19:21.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""return so just ran that and now I've set my""" start="00:19:22.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""file list so now let's do a search it would""" start="00:19:26.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""be ctrl H H roll it X R and then S for search""" start="00:19:29.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But I'll just do it this way.""" start="00:19:34.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And boom, it found everything that fast.""" start="00:19:37.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I can just get like,""" start="00:19:41.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""show the top items in there.""" start="00:19:43.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I kind of have outlining in this buffer.""" start="00:19:45.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I can just move to each match that I hit.""" start="00:19:48.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And notice, although everything was""" start="00:19:51.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""collapsed, it's expanding here.""" start="00:19:53.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""When I move in and out of each of the entry""" start="00:19:55.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""matches, it expands or collapses as I move to""" start="00:19:58.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the next 1. So a lot of power there.""" start="00:20:02.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""What else? So just tabbing through these""" start="00:20:06.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""things. And you notice that it's working""" start="00:20:09.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""across all of these different types,""" start="00:20:11.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it's telling you which file everything""" start="00:20:13.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""came from right up here.""" start="00:20:16.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I could just made a return here,""" start="00:20:17.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""should work. Yes, revisit the file normally.""" start="00:20:20.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And it just pulls it right up.""" start="00:20:23.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So everything is live and hyperbole.""" start="00:20:25.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You've got hyperlinks everywhere.""" start="00:20:28.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Let's just get rid of that.""" start="00:20:31.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Go back to our demo. So if you are fans of""" start="00:20:34.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Vertico and Consult, you can now use that""" start="00:20:41.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with the High Rollo. So all you have to do is""" start="00:20:46.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""let's just format our windows,""" start="00:20:49.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and then I'll say, let's use ConsultGrep over""" start="00:20:51.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the Rolodex. Now, it found all the matches""" start="00:20:55.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""there, and I can just move live through them""" start="00:20:58.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in the buffer like you may be used to or I""" start="00:21:02.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can filter back down and say using orderless""" start="00:21:04.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""joystick or anything that has joy in it just""" start="00:21:10.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""match to those lines and then I can you know""" start="00:21:13.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""either jump there or quit out of here.""" start="00:21:17.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'll just quit out of it right now.""" start="00:21:20.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So very cool. And all of that is using""" start="00:21:22.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""whatever you personally set as the set of""" start="00:21:25.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""files and directories you want to search.""" start="00:21:28.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And finally, our number 1 feature of""" start="00:21:31.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole is you can customize this to give""" start="00:21:35.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you these kinds of implicit buttons,""" start="00:21:40.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""whatever kind you want.""" start="00:21:44.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And there are 3 levels of doing this.""" start="00:21:46.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""The first is for non-programmers.""" start="00:21:49.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You can just set a string,""" start="00:21:51.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""like a URL with a parameter in it.""" start="00:21:54.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So the %s represents the parameter,""" start="00:21:57.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and This is how you do a search on""" start="00:21:59.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""DuckDuckGo. So all I have to do is evaluate""" start="00:22:01.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this defal for action link.""" start="00:22:04.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And now I have a new implicit button type""" start="00:22:07.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that I can put between angle brackets.""" start="00:22:11.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I just give it that name,""" start="00:22:13.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""DDG, and some parameter,""" start="00:22:16.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""whatever I want to search for,""" start="00:22:18.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and this is a button that does that search.""" start="00:22:20.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Very cool, right? So you can embed these.""" start="00:22:25.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""This could be a hyperlink in,""" start="00:22:28.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, a comment in a programming file.""" start="00:22:32.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Anything on the entire web that you want to""" start="00:22:35.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""link to, whatever kind of compact notation""" start="00:22:38.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you want to give it. So that's what we're""" start="00:22:42.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""going to learn as we get more advanced here""" start="00:22:44.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can give it even more compact notations.""" start="00:22:47.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So as you get more advanced you can say,""" start="00:22:49.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well I don't like this angle bracket,""" start="00:22:52.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I want to have an implicit button that uses""" start="00:22:54.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""these square brackets and then an angle""" start="00:22:57.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""bracket inside it. So then you need the""" start="00:22:59.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""defile for implicit link.""" start="00:23:02.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""This lets you specify your start and end""" start="00:23:06.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""delimiters for your new type and and then you""" start="00:23:08.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can give it a function that you wanted to run""" start="00:23:12.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and that will take the text of whatever is in""" start="00:23:15.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the button, in this case,""" start="00:23:18.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""test release here, and feed it to the""" start="00:23:19.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""function that I gave here.""" start="00:23:23.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So what this function does is grep over my""" start="00:23:26.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""git log and find any commits that include the""" start="00:23:29.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""term test release in it.""" start="00:23:33.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let's try it. First I have to add the""" start="00:23:35.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button type and that's all it takes and it""" start="00:23:38.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""defined it now. So anywhere in Emacs now I""" start="00:23:41.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can use this button type essentially.""" start="00:23:44.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let me try to activate it.""" start="00:23:47.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Okay, and it says yeah let's save it.""" start="00:23:49.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Okay so now it's running a git log command.""" start="00:23:53.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It found all the commits and now of course if""" start="00:23:56.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I had made a return on this commit it""" start="00:23:59.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""recognizes it as an implicit link,""" start="00:24:02.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and if I search for what was a test release,""" start="00:24:05.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""there it is. So this commit had that in""" start="00:24:09.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""there. So all these matches,""" start="00:24:11.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""so I don't know how other people do this,""" start="00:24:14.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but for me this makes it a lot simpler.""" start="00:24:16.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So a lot of power that any programmer can""" start="00:24:21.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""use. And finally, if you've mastered Emacs""" start="00:24:24.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Lisp, or you're starting to,""" start="00:24:27.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can look in the hib types file in""" start="00:24:29.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole and see all sorts of uses of defib,""" start="00:24:33.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which is defined implicit button.""" start="00:24:37.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And that's the full power of e-LISP when you""" start="00:24:39.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""want to define 1. So what we're going to do""" start="00:24:42.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""here is I wanted to know,""" start="00:24:45.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""given a date, what the day of the week is.""" start="00:24:47.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And because the date primitives weren't quite""" start="00:24:49.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""written the way I might like,""" start="00:24:53.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's a little longer than some.""" start="00:24:55.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But I'm just going to evaluate this list.""" start="00:24:57.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I've now defined DOW as an action type.""" start="00:25:00.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Now, how do I know I'm doing that?""" start="00:25:06.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I can always say Control-H,""" start="00:25:08.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""capital A here to see what a button's going""" start="00:25:11.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to do. And it tells me When I'm there,""" start="00:25:13.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'm at a hyperbole button,""" start="00:25:15.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and the type is from category DOW.""" start="00:25:18.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And what's it gonna do?""" start="00:25:24.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It takes a mark, it's gonna do a message""" start="00:25:25.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""action. Okay, so let's try it.""" start="00:25:27.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It tells me that's a date,""" start="00:25:31.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it falls on a Sunday,""" start="00:25:32.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which is today. That's correct.""" start="00:25:34.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So 2 days from today is a Tuesday.""" start="00:25:36.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Beautiful. So we've just totally transformed""" start="00:25:39.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""what we can do with text.""" start="00:25:44.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You notice there's no markup here.""" start="00:25:46.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And this is working with all of the other""" start="00:25:49.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""implicit types that we have everywhere in""" start="00:25:53.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Emacs. It's only going to match to this kind""" start="00:25:55.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of pattern and anywhere else,""" start="00:25:57.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, it just won't trigger that type.""" start="00:26:00.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So lots of power. You just need to get""" start="00:26:03.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""started with Hyperbole.""" start="00:26:06.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""There's great documentation both inside the""" start="00:26:07.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""code and in the manual.""" start="00:26:10.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""There's a fast demo that you can start with""" start="00:26:12.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and there's about 10 different videos.""" start="00:26:15.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""There'll be 3 presentations on hyperbole here""" start="00:26:18.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""at the conference, and I hope you've enjoyed""" start="00:26:21.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this presentation. I'd love to answer your""" start="00:26:25.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""questions and get some new users for""" start="00:26:28.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole. So lastly, I'd like to thank my""" start="00:26:31.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""co-maintainer, Matt, who's going to speak""" start="00:26:36.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""later about the extensive test protocols we""" start="00:26:38.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""have in Hyperbole. Hyperbole works on every""" start="00:26:42.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""version of Emacs from 27.1""" start="00:26:46.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""up, and every operating system and Windows""" start="00:26:48.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""system that you use. And thanks so much to""" start="00:26:52.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the volunteers and the speakers at EmacsConf.""" start="00:26:56.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You do a great job, and we're all really""" start="00:26:59.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""appreciative that you take all the time that""" start="00:27:02.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you do to make this happen.""" start="00:27:04.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Thank you very much.""" start="00:27:06.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: And thank you so much Bob.""" start="00:27:09.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I'll let you do the gymnastics to join us""" start="00:27:11.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""back on BBB and put your webcam.""" start="00:27:14.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""In the meantime, I'll invite people,""" start="00:27:17.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""as Sasha told you in the introduction,""" start="00:27:19.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to go put your question in the pad.""" start="00:27:21.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""The link is on the talks page and also on""" start="00:27:23.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""IRC. So take your time.""" start="00:27:25.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We've already got some people who've asked""" start="00:27:28.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""questions. You can also start joining the""" start="00:27:29.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""room. Let me just ping Sasha.""" start="00:27:33.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Ping to open ID HyperAmp.""" start="00:27:35.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So, you'll be able to join us on""" start="00:27:39.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""BigBlueButton as well to go chat with Bob""" start="00:27:41.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""more directly. I'm not sure if people have""" start="00:27:43.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""joined already. Not yet.""" start="00:27:45.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So, Bob, what I'll do,""" start="00:27:50.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we already have 4 questions.""" start="00:27:51.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'm gonna read them to you and you can take""" start="00:27:52.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""your time answering them,""" start="00:27:54.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but we do have about 7 minutes until we go to""" start="00:27:54.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the next talk, so we need to be a little bit""" start="00:27:57.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay.""" start="00:28:00.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: chop-chop. All right, so reading the first""" start="00:27:59.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""questions, and I'm also going to display them""" start="00:28:03.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for the stream to see,""" start="00:28:05.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""do buttons keep their metadata within the""" start="00:28:07.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""same file? E.g., would I see it if I change""" start="00:28:09.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to fundamental mode, for instance?""" start="00:28:12.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: So all of the things that I was showing you,""" start="00:28:15.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""implicit buttons have no metadata.""" start="00:28:19.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""That's the great thing about them,""" start="00:28:21.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""is you just type them in the buffer and what""" start="00:28:23.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you see is all there is to that button and""" start="00:28:27.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole generates all the smarts associated""" start="00:28:30.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with them. When you create an explicit""" start="00:28:33.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""button, which I showed you 1 or 2 examples""" start="00:28:35.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of, that metadata is, there is metadata with""" start="00:28:38.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that, and that is stored in a separate file""" start="00:28:42.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in the same directory called .hypb.""" start="00:28:45.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it's hidden away and it doesn't affect the""" start="00:28:49.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""format of the buffer that it's in.""" start="00:28:51.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So again, what you see is what you get.""" start="00:28:53.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You just see the delimiters around the""" start="00:28:56.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""explicit button and that's it.""" start="00:28:58.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So Hyperbole takes care of all that for you.""" start="00:29:01.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""However, if you embed them into like a mail""" start="00:29:04.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""message, which you can,""" start="00:29:08.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can mail buttons, then there is a hidden""" start="00:29:09.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""area at the end of the mail message that""" start="00:29:12.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""encodes the metadata for the explicit""" start="00:29:14.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buttons.""" start="00:29:17.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Ok, great. Next question.""" start="00:29:19.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Is it possible to link to a file by its ID,""" start="00:29:21.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""like the node, org ID or some similar unique""" start="00:29:24.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""string inside?""" start="00:29:27.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, In fact, that's 1 of the new features in""" start="00:29:29.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""9. You just made a return on an ID and it""" start="00:29:33.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""takes you right to the org node,""" start="00:29:37.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""works with org Rome and org straight out of""" start="00:29:40.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the box. We're looking at ways to make it""" start="00:29:44.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""easier to just insert those in places,""" start="00:29:47.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but since you have word keys that do that""" start="00:29:50.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""already, you can just insert them in any""" start="00:29:52.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""documents and Hyperbole will recognize them.""" start="00:29:55.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I think In some cases you may need to put ID""" start="00:29:58.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""colon in front of the ID as well.""" start="00:30:02.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Generally it works.""" start="00:30:05.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Ok, great. Moving on to the next question.""" start="00:30:08.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Regarding the frames example,""" start="00:30:12.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""any thoughts or considerations for a""" start="00:30:14.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""transient interface or is this something 1""" start="00:30:16.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""could already toggle? Are you familiar with""" start="00:30:19.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""transient interface?""" start="00:30:22.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, we don't use transient because we,""" start="00:30:23.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, Hyperbole started out in 1991,""" start="00:30:26.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""though it's had much much work since then so""" start="00:30:30.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we predate a lot of newer things in Emacs and""" start="00:30:34.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""then we just use them as as they Become""" start="00:30:37.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""useful too hyperbole We think the The mini""" start="00:30:41.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buffer menu is pretty good.""" start="00:30:45.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We could rewrite stuff in transient,""" start="00:30:46.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but we haven't seen the need yet.""" start="00:30:48.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Maybe high control, that might be a good""" start="00:30:52.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""candidate, because there are so many keys in""" start="00:30:54.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it. So we'll think about that.""" start="00:30:58.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But it would be a while before we got to it.""" start="00:31:00.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. Moving on to the next question.""" start="00:31:04.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Sorry I got really confused because there's a""" start="00:31:07.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""French salut, you know,""" start="00:31:08.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in the text of it. Is someone saying hi to me""" start="00:31:10.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""or something? All right,""" start="00:31:12.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""next question. Regarding multi-file search""" start="00:31:14.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""functionality, why not implement it within""" start="00:31:16.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the existing framework of MetaX grep or""" start="00:31:22.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""similar built-in commands?""" start="00:31:24.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Yet another search interface sounds a bit""" start="00:31:26.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""redundant.""" start="00:31:28.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Multi-file search, so HiRolo I guess you're""" start="00:31:30.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""talking about. I think what you missed there""" start="00:31:34.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""is that High Rollo matches to records,""" start="00:31:36.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""multi-line records, so it's not a""" start="00:31:40.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""line-oriented match, it's a record-oriented""" start="00:31:42.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""match. So Grep, you can say maybe give me 3""" start="00:31:45.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""lines of context, but what if I have a""" start="00:31:50.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""20-line record? I want to see the whole""" start="00:31:52.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""thing. And so, it's a full-text search""" start="00:31:56.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""interface, which lets you have any size""" start="00:31:59.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""entries or nodes in the match buffer.""" start="00:32:04.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So that's 1 reason. MADAX grep works with""" start="00:32:07.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole. I mean, you use it if you want and""" start="00:32:10.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""then you can hit MADA return on grep lines.""" start="00:32:13.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So we basically take everything from POSIX""" start="00:32:16.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and everything in Emacs and we try to make a""" start="00:32:20.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""lot of it simpler to use.""" start="00:32:24.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We don't take away any of the functionality,""" start="00:32:26.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we just augment it.""" start="00:32:29.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, and I think that's the logic for a lot""" start="00:32:32.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of the packages, you know,""" start="00:32:35.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the philosophy is just you create your little""" start="00:32:36.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""bit, your little island where you do your""" start="00:32:38.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""stuff. And if you can resonate with other""" start="00:32:40.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""islands so much the better.""" start="00:32:42.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And it feels like between those islands,""" start="00:32:43.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, hyperbole is a great way to connect""" start="00:32:45.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""things that are just text.""" start="00:32:48.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it's always been a lovely philosophy.""" start="00:32:50.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""There's always been a lovely philosophy""" start="00:32:52.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""behind it.""" start="00:32:53.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: 1 other point I'd make there is that the""" start="00:32:55.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyrolo also contains logical search""" start="00:32:58.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""operators. So when I typed in that string you""" start="00:33:01.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""could just as well type with like Lisp""" start="00:33:04.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""expressions, semi Lisp expressions.""" start="00:33:07.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You can say open paren and word 1,""" start="00:33:09.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""word 2, close paren. You know you can have or""" start="00:33:13.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and XOR and not and it'll do the search and""" start="00:33:17.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""just retrieve the entries,""" start="00:33:22.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""again, multi-line entries that match all of""" start="00:33:24.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the criteria that you specified there.""" start="00:33:27.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So that's fairly unique,""" start="00:33:29.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I think. So you basically got a full text""" start="00:33:31.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""search platform with logical operators,""" start="00:33:33.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""instantly, you know, fast moving,""" start="00:33:36.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""rapid keys that you can control everything""" start="00:33:38.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with and it's all integrated into this larger""" start="00:33:42.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""framework.""" start="00:33:45.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay, great. Well, Bob,""" start="00:33:47.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you have 2 more questions,""" start="00:33:49.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but there's a big 1 about what inspired you""" start="00:33:50.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to write it back. It's being hyperbole around""" start="00:33:53.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the time of its birth,""" start="00:33:56.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but sadly, we only have about 1 more minute.""" start="00:33:57.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So what I'm going to ask you to do,""" start="00:34:00.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""feel free to answer the question.""" start="00:34:01.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""If you go on BBB, I've pasted the link to the""" start="00:34:02.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""other pad. I think you can see it on your""" start="00:34:05.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: I have the ether pad up.""" start="00:34:08.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: computer as well. Right,""" start="00:34:06.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""so what are we going to do?""" start="00:34:11.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'm Sorry, I'm just a little bit pressed by""" start="00:34:14.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""time because it's not me controlling when we""" start="00:34:16.679" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""move on to the next talk,""" start="00:34:18.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""as was evidenced yesterday when we got yonked""" start="00:34:19.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to the next talk. So Bob,""" start="00:34:21.719" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""feel free to take all the time you want to""" start="00:34:24.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""answer questions. People,""" start="00:34:25.679" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""if you wanna join the Big Blue Button room,""" start="00:34:26.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the links are available and open on the talk""" start="00:34:28.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""page. You can join and ask as many questions""" start="00:34:30.239" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""as you want to Bob. And for us,""" start="00:34:31.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with a live stream, we'll be moving on to the""" start="00:34:33.679" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""next talk in about 30 seconds.""" start="00:34:35.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So Bob, all that's left is for me to thank""" start="00:34:37.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you for your presentation again this year and""" start="00:34:39.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you, Leo.""" start="00:34:43.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: for all your answers. All right.""" start="00:34:41.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Bye bye, Bob. And we'll be moving on to the""" start="00:34:45.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""next talk in about 10 seconds.""" start="00:34:47.699" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""See you in a bit. All right,""" start="00:34:49.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Bob, we are off air I think now.""" start="00:34:53.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Thank you so much. I need to get moving for""" start="00:34:56.139" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, is somebody gonna keep writing answers""" start="00:34:59.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in here or I need to type them in?""" start="00:35:02.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: the next talk. It's probably best now if you""" start="00:34:57.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""read the questions on your own and answer""" start="00:35:06.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""them. We'll collate everything together,""" start="00:35:09.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we'd just like to have your answers.""" start="00:35:11.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: I hope some people will join the BBB.""" start="00:35:15.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: it in my... All right,""" start="00:35:19.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""bye-bye.""" start="00:35:21.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: But I'll start. I'll put Bye-bye.""" start="00:35:17.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So let me take a second here to see what""" start="00:35:24.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""questions we have. Did we cover that?""" start="00:35:28.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""OK. The point is why not upstream search""" start="00:35:36.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""interface? Could you clarify that question?""" start="00:35:42.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I don't quite know what that means.""" start="00:35:46.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I'll go on to the next 1 and come back to""" start="00:35:51.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that. Hyperlinks been around for a number of""" start="00:35:53.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""years now. What inspired you to write it back""" start="00:35:57.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""around the time of its birth?""" start="00:35:59.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Well, that's a great question.""" start="00:36:01.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It was born before the World Wide Web,""" start="00:36:04.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""actually. And it was right before.""" start="00:36:07.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I remember we were in the midst of a version""" start="00:36:10.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""when the first version of the web occurred.""" start="00:36:13.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I was thinking that there was going to be""" start="00:36:16.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""an information explosion of unstructured""" start="00:36:19.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""information. And like we needed to have much""" start="00:36:22.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""better tools to be able to manage say like""" start="00:36:27.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""5,000 email messages coming in and all sorts""" start="00:36:30.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of non-database-oriented information""" start="00:36:36.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""structures. So I said we need an advanced""" start="00:36:39.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""interactive hypertext system and it needs to""" start="00:36:42.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""work with all the general capabilities that""" start="00:36:46.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we use like email and our document production""" start="00:36:49.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""systems. So I was doing research at the time""" start="00:36:54.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""at a university And I decided to work on""" start="00:36:58.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""something that we called personalized""" start="00:37:04.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""information environments.""" start="00:37:06.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And there's a paper about this out there if""" start="00:37:07.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you want to dig it out on the web.""" start="00:37:10.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So Pies, as they were called,""" start="00:37:12.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""was an architecture which would have a bunch""" start="00:37:16.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of managers, like Hyperbole was 1 of the""" start="00:37:20.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""managers, the hypertext manager,""" start="00:37:24.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and then a bunch of point tools that would""" start="00:37:26.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""leverage the managers,""" start="00:37:29.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""like an email reader would be a point tool""" start="00:37:30.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that would leverage the hypertext manager.""" start="00:37:33.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And so the first, I did in fact write""" start="00:37:36.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""something called PyMail,""" start="00:37:39.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which was very much Gmail-like,""" start="00:37:41.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""before Gmail. And so inside,""" start="00:37:44.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and I did a, it was like our mail in a way,""" start="00:37:48.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but inside your our mail summaries,""" start="00:37:51.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for example, you could have explicit buttons""" start="00:37:54.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""embedded and that were drawn from the subject""" start="00:37:57.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of your email message,""" start="00:38:01.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and they'd work just like the regular button.""" start="00:38:02.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it was very flexible,""" start="00:38:06.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it had rule-based processing and things.""" start="00:38:07.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So Hyperbole came out of that,""" start="00:38:11.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it's come a long way,""" start="00:38:13.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but it's still a very useful core hypertext""" start="00:38:15.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""system, hypermedia system,""" start="00:38:20.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I should say. Are you familiar with the""" start="00:38:22.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Embark package? I am a bit.""" start="00:38:26.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I've just started using it.""" start="00:38:28.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I think there's some overlapping""" start="00:38:30.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""functionality with hyperbole.""" start="00:38:32.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Yes, we've found that people over time have""" start="00:38:34.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""enjoyed hyperbole and have started""" start="00:38:39.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""replicating some of its features,""" start="00:38:41.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, small amounts of the features.""" start="00:38:43.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I talked to, I hope I don't miss his name,""" start="00:38:47.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but O'Adam who writes that once in a while we""" start="00:38:51.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""dialogue and I think Embark is great,""" start="00:38:56.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, I'll give him some pointers too and""" start="00:38:59.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""he thinks that Embark and hyperbole are quite""" start="00:39:04.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""compatible too, just like organ hyperbole.""" start="00:39:08.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So that's how we like to keep it.""" start="00:39:11.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Some people prefer just a small package of""" start="00:39:14.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""mBARC, and it does different things than what""" start="00:39:18.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole does. So I think you use all of""" start="00:39:21.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""these tools together, and they can work very""" start="00:39:23.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well together. Any other questions?""" start="00:39:27.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Anybody still here? If not,""" start="00:39:34.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""probably people are off to another talk.""" start="00:39:38.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So thank you very much And again look for""" start="00:39:41.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole version 9 in the next week.""" start="00:39:47.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Thanks very much. Bye.""" start="00:39:53.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Should I leave BBB? Oh Alpha Papa's here.""" start="00:40:00.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hey. Good to see you. Alright,""" start="00:40:07.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well... Well, I'll stay for another minute,""" start="00:40:16.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but I think I'm going to go off video 2 and""" start="00:40:22.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""start listening to another talk.""" start="00:40:27.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Thanks, everyone. Thanks everyone.""" start="00:40:30.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Yes, I can hear you. Yes,""" start="00:40:56.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Have you been answering questions?""" start="00:40:58.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: I can hear you. finished answering the""" start="00:40:56.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""questions. We're all done.""" start="00:41:03.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: I Okay, cool. Well, what I'm going to do,""" start="00:41:00.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'm going to close the room unless you want""" start="00:41:07.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to go a little longer,""" start="00:41:09.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""because this talk that we're playing right""" start="00:41:10.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""now is finishing really quick and we don't""" start="00:41:11.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""have a Q&A afterwards.""" start="00:41:13.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So, do you want to stay on air or something?""" start="00:41:15.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, if you let people know to come back,""" start="00:41:19.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""because someone went to go hear that""" start="00:41:21.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""presentation, I can stay.""" start="00:41:23.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure, I'll make an announcement then.""" start="00:41:25.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And you can stay, we'll just put on BBB.""" start="00:41:27.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You can stay muted until people join,""" start="00:41:29.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but this way it opens up menus for people to""" start="00:41:31.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""join and if no 1 shows up in 5 minutes we'll""" start="00:41:33.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""all go on break. Does that sound okay?""" start="00:41:36.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great, thank you.""" start="00:41:38.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool, I'll go back to the management in the""" start="00:41:40.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""background and I'll let you know.""" start="00:41:44.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Okay, Bob, I've won the stream.""" start="00:43:25.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We are joining it now.""" start="00:43:27.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We've got about 5 seconds.""" start="00:43:28.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I think we are back.""" start="00:43:41.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""so we are gone, Bob, please.""" start="00:43:49.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Hi. So, yeah, I was going to say,""" start="00:43:45.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can we see if anybody comes back in the room?""" start="00:43:54.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""How do you tell?""" start="00:43:57.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: You should be able to show on the left,""" start="00:44:01.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you've got on BbBlueButton,""" start="00:44:03.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you've got a button, I'm showing it on the""" start="00:44:04.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""screen, but you've got a little button that""" start="00:44:06.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""allows you to show the people joining.""" start="00:44:08.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So, hello everyone. Let's see if you had more""" start="00:44:10.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""question on your pad that we could be taking""" start="00:44:15.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in the meantime, just give me a second to""" start="00:44:17.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""find""" start="00:44:19.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: your pad. Here we go, an error occurred.""" start="00:44:19.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right, it's loading up.""" start="00:44:31.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. Wow. Feels like there's an AI writing""" start="00:44:25.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this stuff on the pad.""" start="00:44:37.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Has it? Is this the last pad?""" start="00:44:41.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Oh no, this is a different 1,""" start="00:44:45.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Which question are you looking at now?""" start="00:44:49.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: sorry. It was a different pad,""" start="00:44:47.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh right.""" start="00:44:55.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: that was the problem. Okay,""" start="00:44:53.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""here we go. Okay, I'm back.""" start="00:44:57.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So, yeah, it looks like...""" start="00:45:00.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Is anybody back? Send,""" start="00:45:02.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""if you're here, send a chat message.""" start="00:45:04.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, because it's been something.""" start="00:45:08.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You have, apparently, whenever we leave those""" start="00:45:10.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""BBB chat room open, the moment we go off air,""" start="00:45:14.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""people start joining and asking a lot of very""" start="00:45:18.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""interesting questions and you know that's all""" start="00:45:20.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well and good, we'll be able to put them on""" start="00:45:22.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the page later on. But it'd be great if you""" start="00:45:24.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""could also have those discussions when we are""" start="00:45:26.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""live because a lot of people would benefit""" start="00:45:28.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""from the brilliance that goes on in this""" start="00:45:30.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""room. So please don't be shy,""" start="00:45:32.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: So we're on the general stream now?""" start="00:45:37.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: join and talk. Yep, we are back on the""" start="00:45:34.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""general stream. We have about until 10 of the""" start="00:45:41.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""next hour, which is 19 minutes.""" start="00:45:46.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Just- Why don't you and I talk?""" start="00:45:48.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So have you ever tried hyperbole,""" start="00:45:52.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Leo?""" start="00:45:56.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: I have never, but You know,""" start="00:45:58.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it feels like every year when you present""" start="00:46:00.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""something, it feels like I already know so""" start="00:46:03.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""much. Because of the buttons,""" start="00:46:05.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it feels like it's also something that we've""" start="00:46:08.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""reinvented many times in Emacs.""" start="00:46:10.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's like conversion to evolution,""" start="00:46:12.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""except you're the 1 who started ahead of""" start="00:46:14.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""everyone else.""" start="00:46:16.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, that's a good point because,""" start="00:46:17.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, we have, Emacs itself has push""" start="00:46:19.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buttons, which you see like in the help""" start="00:46:23.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buffers. And those used to,""" start="00:46:25.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we didn't really do anything with those,""" start="00:46:27.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but now we've subsumed them as implicit""" start="00:46:30.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buttons as well. So you're made a return,""" start="00:46:32.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we'll work on those anywhere too.""" start="00:46:35.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So, we're trying to get,""" start="00:46:38.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you use 1 key, right? To control every type""" start="00:46:42.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of button that you have.""" start="00:46:45.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It works on org links,""" start="00:46:47.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""org buttons anywhere, or URLs.""" start="00:46:48.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Because it's so simple.""" start="00:46:53.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""All you need is like 5 to 10 lines of code to""" start="00:46:54.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""map. You map the pattern that represents a""" start="00:46:58.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""concept, right? And then you can create an""" start="00:47:02.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""infinite number of those buttons from that""" start="00:47:05.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""type. That's what's really cool about""" start="00:47:07.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole, is say I have a 500 page document""" start="00:47:09.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it uses a really weird format for""" start="00:47:13.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""cross-referencing, right?""" start="00:47:15.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I write my 3 lines of pattern match to work""" start="00:47:17.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with that. And then everywhere throughout""" start="00:47:22.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that document and the hundreds of other""" start="00:47:24.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""documents that will be created with that""" start="00:47:25.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""format, they're all live buttons instantly.""" start="00:47:27.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Nothing changed about the document.""" start="00:47:31.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""That's really cool. You know,""" start="00:47:34.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""word mode, we have global word buttons,""" start="00:47:35.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but mostly it has to be embedded within an""" start="00:47:37.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""org file, right? And follow that syntax.""" start="00:47:42.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""With hyperbole, it's like we can adapt as the""" start="00:47:45.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""world adapts around us to whatever formats""" start="00:47:51.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""people want to use that day.""" start="00:47:55.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And you can even change things to look the""" start="00:47:56.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""way you want, right, and have your own""" start="00:47:59.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""cross-references. There's something built""" start="00:48:02.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""into Hyperbole that's not really active,""" start="00:48:04.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which was sort of along the Zettelkasten way.""" start="00:48:08.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We wrote this a long time ago.""" start="00:48:13.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's called hib-doc.el,""" start="00:48:15.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it's a card catalog notion.""" start="00:48:19.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it uses the high rollo in the background""" start="00:48:22.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but it lets you create these forms that are""" start="00:48:26.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""cards that you fill out with whatever kind of""" start="00:48:30.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""data you want and then it gives you the full""" start="00:48:32.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""text searching across the cards and each card""" start="00:48:35.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""has a unique ID that you can reference""" start="00:48:38.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""similar to org IDs but these are human""" start="00:48:41.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""readable and human typable and so you can you""" start="00:48:45.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can just have a cross-reference to any doc ID""" start="00:48:49.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and essentially create what Engelbart used to""" start="00:48:52.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""call a journal, which is all these IDs on""" start="00:48:56.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""documents that point you directly to the""" start="00:49:00.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""document archive so that you could have like""" start="00:49:03.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""your internal publishing system and you know""" start="00:49:05.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's very simple to do and it's just 1 module""" start="00:49:10.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""added on to Hyperbole.""" start="00:49:13.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah it's especially interesting for me you""" start="00:49:15.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""know because coming back to the side of""" start="00:49:19.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""convergent evolutions it's funny because the""" start="00:49:21.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""parameters are a little different.""" start="00:49:23.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""For us with org buttons,""" start="00:49:24.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we're very happy. A lot of the stuff during""" start="00:49:26.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""EmacsConf is run with org mode,""" start="00:49:29.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""like we have Elisp going everywhere to""" start="00:49:31.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""compile a lot of org properties,""" start="00:49:34.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""like speaker information,""" start="00:49:38.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for instance, how long the talk is,""" start="00:49:39.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the title, and all this.""" start="00:49:41.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We have all of this in an org file,""" start="00:49:42.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which we use as a database,""" start="00:49:44.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but then we can do so much stuff.""" start="00:49:46.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We can send email and we can update the""" start="00:49:47.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""schedule. By the way, if you're interested in""" start="00:49:50.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this, we'll have a talk on the DevTrack in""" start="00:49:52.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the afternoon today that Sacha did and it's""" start="00:49:54.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""wonderful. I'm just teasing it.""" start="00:49:56.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, that's great.""" start="00:49:58.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: But coming back to Hyperbole,""" start="00:50:00.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for you, it feels like the parameters were""" start="00:50:01.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""slightly different because the feeling was,""" start="00:50:04.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I just want a tunnel that can work between""" start="00:50:06.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""any type of files. Now,""" start="00:50:09.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's all well and good.""" start="00:50:10.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Org-Rome, D-Note, and all the stuff like""" start="00:50:11.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this, they create bidirectional links.""" start="00:50:14.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But it's only between org-mode files.""" start="00:50:17.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Whereas what you're achieving with Hyperbole,""" start="00:50:19.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and you've done it much earlier than everyone""" start="00:50:22.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""else, is that you have this concept""" start="00:50:24.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""regardless of the type of file that you're""" start="00:50:27.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""using. And I find this to be beautiful.""" start="00:50:29.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Like 5 years ago, whenever you were talking""" start="00:50:32.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""about hyperbole, I did not have a concrete""" start="00:50:35.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""idea of what was happening.""" start="00:50:37.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But ever since I've gone through the journey""" start="00:50:38.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of really understanding what the El Caster""" start="00:50:40.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""method were about, it feels like you were""" start="00:50:42.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""foreigners in the topic.""" start="00:50:45.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Obviously, you've mentioned the mother of all""" start="00:50:46.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""demos by Edward Engelbart,""" start="00:50:48.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but those ideas are not novel,""" start="00:50:50.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but it feels like only now are they starting""" start="00:50:54.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to be appropriated by people,""" start="00:50:56.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""especially in free software,""" start="00:50:58.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it's really good to see.""" start="00:50:59.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'm really excited to,""" start="00:51:01.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well, have my small part to play in this.""" start="00:51:02.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I'm also excited to be able to chat with""" start="00:51:04.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you and people like Bastien and other people""" start="00:51:06.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""about all those topics.""" start="00:51:10.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I think, you know,""" start="00:51:12.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's fun that we can laugh now about when""" start="00:51:13.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""people say people are still using Emacs,""" start="00:51:16.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, is because they're not used,""" start="00:51:20.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""certain people aren't using it.""" start="00:51:22.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""They have no idea of how far it's come and""" start="00:51:24.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""how powerful it is. And,""" start="00:51:26.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, we're leveraging Elisp heavily,""" start="00:51:28.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""obviously, but if you look at the definition""" start="00:51:31.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of our types, they look exactly like DIP""" start="00:51:34.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""funds in ELisp. And we've been able to do""" start="00:51:37.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that because of Lisp macros.""" start="00:51:41.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You know, we so we basically have our own""" start="00:51:43.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""domain specific language there,""" start="00:51:46.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but there's almost nothing to learn because""" start="00:51:48.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's just like what you know from UList.""" start="00:51:51.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So again, you know, taking the concept and""" start="00:51:54.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""leveraging it, abstracting it and leveraging""" start="00:51:57.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it multiple times gives you a lot of power.""" start="00:51:59.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And people, you know, somebody said the other""" start="00:52:03.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""day, and I said, finally,""" start="00:52:06.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""this quote happened. He said,""" start="00:52:07.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""there's so many things that I do with""" start="00:52:11.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole every day that I forget that I'm""" start="00:52:15.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""using hyperbole. Because it's just so""" start="00:52:17.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""embedded in this guy's workflow.""" start="00:52:21.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And that's really how I use it.""" start="00:52:23.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You know, there are features in there,""" start="00:52:25.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""can't use everything, right?""" start="00:52:27.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So there are features that I don't use,""" start="00:52:29.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but I use a lot of things and it's all like""" start="00:52:32.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""muscle memory, just like the keyboard,""" start="00:52:35.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the Emacs key bindings.""" start="00:52:38.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it's very exciting to get to that level.""" start="00:52:39.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And now, you know, we haven't started with""" start="00:52:42.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the chatbots or any of the AI integration,""" start="00:52:44.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but I'm starting to think about that a little""" start="00:52:47.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""bit and how we'll interface to that world and""" start="00:52:49.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I think it's going to be very exciting.""" start="00:52:53.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, likewise and I think it harks back to""" start="00:52:56.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""what we were talking about before when we""" start="00:52:58.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""mentioned Hyperbole being a package inside of""" start="00:53:00.660" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""an ecosystem that is Emacs.""" start="00:53:03.700" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But it's not because something is well""" start="00:53:05.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""circumscribed in terms of feature set that it""" start="00:53:08.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""does not influence everything around it.""" start="00:53:10.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Like Hyperbole can be used with something""" start="00:53:12.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""completely at the opposite end of what it was""" start="00:53:15.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""intended for, just because it provides a good""" start="00:53:18.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""set of tools that can be used wherever else""" start="00:53:21.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you want in Emacs. And it's the same thing""" start="00:53:23.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with Org Mode, it's the same thing with many,""" start="00:53:26.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""many different things.""" start="00:53:27.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And it feels like integrating AIs,""" start="00:53:29.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""or generative AIs, into Emacs would provide""" start="00:53:33.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""such a tool that could apply to any kind of""" start="00:53:39.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""other major mode or any kind of other use.""" start="00:53:42.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I'm also excited to see this.""" start="00:53:45.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It feels like we are sitting at the brink of""" start="00:53:46.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""a revolution. I'm not going to say the acne""" start="00:53:50.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""stuff, but it definitely feels like right""" start="00:53:52.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""now, by trying to see what we can do with AI,""" start="00:53:54.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it's definitely going to change the way not""" start="00:53:57.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""only we program, but also the way we take""" start="00:53:59.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""notes and the way we design stuff,""" start="00:54:01.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""arcing back to what John Wigley said""" start="00:54:03.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""yesterday about his draft program on macOS.""" start="00:54:05.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Bob, if you don't mind,""" start="00:54:09.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I see people typing questions and I also see""" start="00:54:11.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""people joining on people buttons,""" start="00:54:13.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""so I'm going to read you the 2 questions that""" start="00:54:14.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""have been added. Is that okay?""" start="00:54:16.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great, go for it.""" start="00:54:19.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool, so first question.""" start="00:54:21.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Wow, what you're describing now,""" start="00:54:23.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and that's when you were talking about the""" start="00:54:25.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""bi-directional links and especially the last""" start="00:54:27.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""question in its entirety,""" start="00:54:31.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""What you're describing now reminds me a lot""" start="00:54:33.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""about HyperCard that I grew up on.""" start="00:54:35.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Do you know if Hyperbole inspired Bill""" start="00:54:37.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Atkinson or if you were inspired by""" start="00:54:39.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""HyperCard? Or were there just a lot of""" start="00:54:41.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""thoughts about hyper-contextuality around""" start="00:54:43.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that time?""" start="00:54:44.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Alright, well this is another interesting""" start="00:54:46.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""anecdote. I don't know if it's true or not,""" start="00:54:50.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but I think HyperCard predated our stuff.""" start="00:54:52.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It was right around the same time when""" start="00:54:57.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole was starting out.""" start="00:55:00.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But when I was doing the Pi research,""" start="00:55:02.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I worked at, when I left school,""" start="00:55:06.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I worked at Motorola, and we did a lot of""" start="00:55:08.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""work with Apple back then.""" start="00:55:11.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And somebody came back and he said,""" start="00:55:13.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, the people over there have seen""" start="00:55:15.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""your Pi research and they really liked it a""" start="00:55:19.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""lot. And so they were leveraging that when""" start="00:55:21.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""they decided to create the division that they""" start="00:55:26.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""called Apple Pi, which was the originator of""" start="00:55:28.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the Newton which eventually led to the""" start="00:55:33.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""iPhone. So it all kind of is interconnected""" start="00:55:36.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""just like the impact that free software has""" start="00:55:41.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""had around the world. So you never know where""" start="00:55:44.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""your stuff is gonna go or end up.""" start="00:55:47.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. All right, moving on to the next""" start="00:55:51.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""question. Is it possible to only use 1""" start="00:55:53.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""feature of hyperbole without the others,""" start="00:55:55.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""i.e. Using only the implicit explicit buttons""" start="00:55:57.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""without I control I roller or without having""" start="00:56:00.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to rewrite part of the code in hyperbole in""" start="00:56:03.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""order to be able to load a smaller hyperbole.""" start="00:56:05.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Does it make sense?""" start="00:56:08.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes we get asked this all the time.""" start="00:56:10.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So you can use any little bit that you want""" start="00:56:12.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""anywhere right you can even just call code""" start="00:56:16.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""from Hyperbole. I mean you don't use""" start="00:56:19.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""everything in Emacs, right?""" start="00:56:23.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But you still install Emacs on your machine.""" start="00:56:25.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's exactly the same thing.""" start="00:56:28.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Those libraries don't take up any memory,""" start="00:56:30.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""they take up a little disk space and it's so""" start="00:56:33.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""trivial compared to the amount of disk we""" start="00:56:36.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""have today. So a lot of things are not loaded""" start="00:56:38.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""unless you activate them.""" start="00:56:41.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And so I know that you do have to build all""" start="00:56:45.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""those things. So maybe that's what bothers""" start="00:56:48.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""people. It takes 2 minutes if you're using,""" start="00:56:51.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it depends how fast your computer is.""" start="00:56:56.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But you build it once on install like every""" start="00:56:58.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""other package. And it used to be that there""" start="00:57:01.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""would be a lot of warnings just because of""" start="00:57:04.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the way we wrote the code and we didn't""" start="00:57:06.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""really have to deal with some of those""" start="00:57:09.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""warnings. But with this new release,""" start="00:57:11.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""we've gotten rid of almost all of them,""" start="00:57:13.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""including the native compiler messages.""" start="00:57:15.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it should be a very clean install now,""" start="00:57:20.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and just use 1 part at a time.""" start="00:57:22.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""But the other parts are there in case you""" start="00:57:26.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""make a link to something and you use a""" start="00:57:29.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""facility just like I was showing as I went""" start="00:57:32.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""across subsystems today.""" start="00:57:34.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It may take you a year,""" start="00:57:36.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but then all of a sudden you find the use""" start="00:57:38.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""case for Hyrule and you say,""" start="00:57:40.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""oh, I'm glad I have it there.""" start="00:57:42.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And yes, some of these things could be split""" start="00:57:44.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""into sub packages like you do in the org""" start="00:57:47.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""ecosystem. But given our limited resources on""" start="00:57:49.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the team, we find having them all in 1 gives""" start="00:57:52.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""us a higher level of quality and lets us""" start="00:57:56.400" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""deliver a better integrated system for your""" start="00:57:59.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""use.""" start="00:58:02.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, exactly. And I think,""" start="00:58:04.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you know, it's, it's not a monolith.""" start="00:58:06.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I mean, it's usually easier,""" start="00:58:10.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""easy, more easy, more easy.""" start="00:58:12.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Sorry, I was right on the first try.""" start="00:58:14.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's usually easier to maintain a monolith""" start="00:58:16.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that contains many bits of functionality like""" start="00:58:20.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""org. You have plenty of people using org""" start="00:58:23.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""mode, not using org-agenda,""" start="00:58:25.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for instance, or you've got plenty of people""" start="00:58:27.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""using org-mode and barely using Babel because""" start="00:58:29.142" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it doesn't really translate to their use.""" start="00:58:31.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I feel like I very much agree with you.""" start="00:58:35.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's okay to install a package and only use""" start="00:58:37.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""some of the functions.""" start="00:58:39.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I was reminded, as you were discussing this,""" start="00:58:40.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""of the consults package,""" start="00:58:43.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which is part of the VertiCo,""" start="00:58:45.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""mbark and marginalia and all this.""" start="00:58:48.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Consult, it replaces a lot of the Emacs""" start="00:58:51.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""built-in commands like for finding your""" start="00:58:54.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buffers or finding text inside of your""" start="00:58:56.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buffer. It's great. And you do not need to""" start="00:58:59.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""completely move to consult as you get""" start="00:59:04.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""started. You can start colonizing 1 step at a""" start="00:59:06.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""time the function that you usually use.""" start="00:59:09.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I highly recommend to people to not let""" start="00:59:12.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the size of a project deter them from trying""" start="00:59:15.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it out because, again,""" start="00:59:18.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in Emacs, everything is horizontal.""" start="00:59:20.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""If somehow you want to use something that was""" start="00:59:23.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""not intended primarily for this,""" start="00:59:28.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""or if you only want to use 10% of a package,""" start="00:59:29.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well, do it. An example that I have for me is""" start="00:59:32.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that Lispy is the minor mode that I use for""" start="00:59:35.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""editing Elisp documents,""" start="00:59:39.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and it's great. Elisp provides similar""" start="00:59:42.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""functions to ParaEdit,""" start="00:59:45.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which might be a little more popular,""" start="00:59:46.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which allows you to have modal editing when""" start="00:59:47.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you are on specific parts of a file,""" start="00:59:50.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""like the opening parenthesis or the closing""" start="00:59:52.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""parenthesis. It's great,""" start="00:59:55.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it provides modal editing for those modes,""" start="00:59:56.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but I certainly do not know everything,""" start="00:59:58.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""every modal command associated to it.""" start="01:00:02.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I just use the 1 that makes the most sense to""" start="01:00:04.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""me. So feel free to explore.""" start="01:00:06.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'll just say we get this so much.""" start="01:00:11.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's not that large. I mean there's a fair""" start="01:00:13.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""number of files but it's just like 1 major""" start="01:00:16.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""directory and then the KOutliner directory.""" start="01:00:19.680" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And when you look at these things,""" start="01:00:24.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you install web applications,""" start="01:00:25.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""everything else, just when you download the""" start="01:00:27.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""source code, it's much,""" start="01:00:30.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""much smaller than any of that.""" start="01:00:31.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So I don't know why people you know accept""" start="01:00:34.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that it's larger than your typical package.""" start="01:00:37.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Why there's really an issue there.""" start="01:00:39.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think it's because people tend to assume""" start="01:00:43.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that a paradigm like the 1 you're describing,""" start="01:00:46.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""which seems to be changing the way you use""" start="01:00:48.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Emacs in a way because you're no longer""" start="01:00:51.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""thinking of as buffers as separate entities,""" start="01:00:53.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can tunnel between them.""" start="01:00:56.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You know, it feels like a huge paradigm shift""" start="01:00:57.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and you assume that the code behind it is""" start="01:01:00.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""going to be humongous as well,""" start="01:01:02.300" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but it's usually not the case.""" start="01:01:04.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It's just that the idea is very pure at the""" start="01:01:05.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""start, and the paradigm shift that it allows""" start="01:01:07.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""is also magnificent. But at the end of the""" start="01:01:10.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""day, the code is fairly simple,""" start="01:01:14.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""because it does 1 thing and it does it well.""" start="01:01:16.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: 1 thing I noticed too,""" start="01:01:19.780" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I mean I'm a big believer in turnkey kind of""" start="01:01:21.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""systems. In fact a long time ago when I built""" start="01:01:23.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""an IDE on Emacs called InfoDoc that was""" start="01:01:27.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""delivered pre-compiled.""" start="01:01:31.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So it's like you download it like every other""" start="01:01:33.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""app and you run it. And so I think""" start="01:01:35.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""eliminating all the friction that occurs,""" start="01:01:39.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and you know, I just got going recently with""" start="01:01:42.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the wonderful packages that you just""" start="01:01:46.380" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""mentioned, VertiCo and Consult,""" start="01:01:49.160" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but they don't have a manual that covers all""" start="01:01:51.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that. They use sort of like a cookbook,""" start="01:01:55.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""a wiki online to answer a lot of the""" start="01:01:58.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""questions that people have and everybody has""" start="01:02:02.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to figure out their configurations you know""" start="01:02:04.600" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""to make these things all work together.""" start="01:02:07.640" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We'd like to do that engineering and say here""" start="01:02:12.800" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it is you know it's like if you want to""" start="01:02:16.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""configure it and make it your own,""" start="01:02:18.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you can do it. But there is a default""" start="01:02:20.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""configuration that handles all the typical""" start="01:02:23.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""use cases and you can just load it up and run""" start="01:02:26.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""because it's made to use,""" start="01:02:30.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you don't have to hack it to make it useful""" start="01:02:32.840" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for you.""" start="01:02:36.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, it reminds me of the discussion we had""" start="01:02:37.900" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""with Stéphane yesterday about sane defaults.""" start="01:02:40.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And I think the question was,""" start="01:02:43.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Emacs should probably ship with sane defaults""" start="01:02:46.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""for people. And Stéphane's answer was,""" start="01:02:49.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well, my sane defaults might not be the same""" start="01:02:51.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""thing as your sane defaults.""" start="01:02:53.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And that's why I think it's important,""" start="01:02:55.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""really, to have a core set of features,""" start="01:02:57.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""be it with hyperbole of org mode,""" start="01:02:59.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""that is well-documented,""" start="01:03:01.360" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""as you mentioned. But what I like about this""" start="01:03:02.880" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in a way, and I think hyperbole is perhaps""" start="01:03:05.460" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""taking more benefits of this than Org Mode,""" start="01:03:07.260" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""is that the self-documentation aspect of it""" start="01:03:09.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""feels like it's easier with hyperbole because""" start="01:03:12.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you're not bound by Org Mode buffers.""" start="01:03:14.540" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You can link to just about everything.""" start="01:03:17.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""And for me, this ability to self-document is,""" start="01:03:19.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""well, first, very true to the philosophy of""" start="01:03:24.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Emacs in the first place,""" start="01:03:26.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""but also opens up those resonance cycles""" start="01:03:27.500" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""where, oh, you get interested and then you""" start="01:03:32.020" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""start reading up and then the documentation""" start="01:03:34.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""is so good that it feeds into your practice""" start="01:03:35.820" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""and then it goes nuclear and you gain so much""" start="01:03:38.320" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""knowledge as a result of this.""" start="01:03:41.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""All right, Bob, we are about out of time.""" start="01:03:42.620" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""We only have about 1 minute until we go to""" start="01:03:44.480" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the next talk. Do you have any passing words?""" start="01:03:46.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: I do. I think, you know,""" start="01:03:50.180" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""the world's complex, it's getting more""" start="01:03:54.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""complex. I think that's why people use Emacs""" start="01:03:57.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""in the first place, because it's a big""" start="01:04:00.520" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""system. You wouldn't use it unless you wanted""" start="01:04:02.560" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it to simplify your life.""" start="01:04:04.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Hyperbole is built with the same idea in""" start="01:04:07.580" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""mind. You may not get it just like Lisp.""" start="01:04:10.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""A lot of people don't understand when they""" start="01:04:13.740" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""first encounter it, but when they do""" start="01:04:15.720" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""understand it, they're blown away.""" start="01:04:17.420" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""It changes their life.""" start="01:04:19.960" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""You know, when you really understand implicit""" start="01:04:22.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""buttons, I think that's 1 of the things in""" start="01:04:25.120" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""hyperbole that can change your Emacs working""" start="01:04:28.100" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""life. So just give that a try and I think""" start="01:04:30.860" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you'll be pleasantly surprised across time.""" start="01:04:34.080" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: you so much Bob. We'll be moving on to the""" start="01:04:39.220" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""next talk in about 20 seconds so everyone see""" start="01:04:40.920" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""you in a bit and Bob thank you so much again.""" start="01:04:42.980" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thanks very much. And thank Thank you.""" start="01:04:37.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right I think we are off here now.""" start="01:04:51.140" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""So thank you so much, Bob.""" start="01:04:53.040" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'm going to need to step out and get ready""" start="01:04:53.940" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, do your thing. You do a great job at""" start="01:04:56.609" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""it. But I wanted to ask you where in London""" start="01:04:59.240" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: for the next talk. I'm not in London,""" start="01:04:55.440" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""I'm in France, and I just moved to London.""" start="01:05:05.280" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 0]: you are. Oh, okay, got it.""" start="01:05:01.760" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Sorry, I thought you were.""" start="01:05:11.200" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Take care.""" start="01:05:13.000" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right, bye-bye, Bob.""" start="01:05:14.340" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Thanks a lot. Bye-bye.""" start="01:05:15.060" video="mainVideo-hyperamp" id="subtitle"]]
+[[!template text="""Bye-bye.""" start="01:05:15.750" video="mainVideo-hyperamp" id="subtitle"]]
+
+Questions or comments? Please e-mail [rsw@gnu.org](mailto:rsw@gnu.org?subject=Comment%20for%20EmacsConf%202023%20hyperamp%3A%20Top%2010%20ways%20Hyperbole%20amps%20up%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/hyperamp-before.md b/2023/info/hyperamp-before.md
new file mode 100644
index 00000000..12a070f0
--- /dev/null
+++ b/2023/info/hyperamp-before.md
@@ -0,0 +1,18 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 66-min talk; Q&A: BigBlueButton conference room
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="hyperamp-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 1:05:16 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.json">Download --main.json (2.9MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.opus">Download --main.opus (37MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.webm">Download --main.webm (234MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/4Cpb89zHKgQjob3gHUs73C">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><div></div><div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.json">Download --main.json (2.9MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.opus">Download --main.opus (37MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--main.webm">Download --main.webm (234MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperamp--top-10-ways-hyperbole-amps-up-emacs--robert-weiner--pad.md">Download --pad.md</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/hyperamp-nav.md b/2023/info/hyperamp-nav.md
new file mode 100644
index 00000000..f56bde9c
--- /dev/null
+++ b/2023/info/hyperamp-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/core">Emacs core development: how it works</a>
+Next by track: <a href="/2023/talks/koutline">Using Koutline for stream of thought journaling</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/hyperdrive-after.md b/2023/info/hyperdrive-after.md
new file mode 100644
index 00000000..8c26acc8
--- /dev/null
+++ b/2023/info/hyperdrive-after.md
@@ -0,0 +1,1338 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="hyperdrive-mainVideo-transcript"></a>
+# Transcript
+
+[[!template text="""Hello, I'm Joseph Turner.""" start="00:00:00.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This talk is about hyperdrive.el,""" start="00:00:02.600" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""peer-to-peer file system in Emacs.""" start="00:00:05.107" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrive is a JavaScript library""" start="00:00:09.100" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""developed by the Holepunch team""" start="00:00:11.480" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for sharing files on a peer-to-peer network.""" start="00:00:13.360" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It's released under the Apache 2.0 license.""" start="00:00:16.500" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Hyperdrives introduction""" start="00:00:19.840" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Here's how it works.""" start="00:00:19.840" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""To participate as a peer, you run a node,""" start="00:00:21.640" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""a lightweight local server that allows you""" start="00:00:24.581" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to connect with other nodes on the network.""" start="00:00:27.281" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You can create a hyperdrive or multiple hyperdrives,""" start="00:00:29.960" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and you can author files within them.""" start="00:00:33.123" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Each hyperdrive is automatically assigned""" start="00:00:36.220" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""a globally unique link""" start="00:00:38.700" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that starts with `hyper://`.""" start="00:00:40.906" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""When you share that link with someone,""" start="00:00:44.580" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""they have access to your hyperdrive.""" start="00:00:47.020" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Anyone who has that link can load the hyperdrive""" start="00:00:49.160" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""from the network and view its content.""" start="00:00:52.820" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""When you load a Hyperdrive file from the network,""" start="00:00:56.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""your node caches that data locally""" start="00:00:59.020" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and automatically begins seeding it""" start="00:01:02.020" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""back to the network,""" start="00:01:04.133" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""making it available for others to download from you.""" start="00:01:05.220" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrives are single writer.""" start="00:01:12.620" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This means that when you create a new drive,""" start="00:01:14.520" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you are the only one who can make changes to it.""" start="00:01:16.880" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Others can view it""" start="00:01:19.720" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and can seed it back to the network,""" start="00:01:21.267" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but you're the only one who can modify it.""" start="00:01:23.800" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrives are offline first.""" start="00:01:27.340" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This means that when you load data from the network,""" start="00:01:29.740" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it's stored locally on your machine""" start="00:01:33.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for you to view later,""" start="00:01:34.900" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""even when you're disconnected from other peers.""" start="00:01:36.180" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You can also create new drives""" start="00:01:38.800" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and modify your drives when you're offline,""" start="00:01:40.800" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and then share those changes""" start="00:01:43.600" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""once you connect with peers later.""" start="00:01:45.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrives are local first.""" start="00:01:47.920" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This means that when you are connected with""" start="00:01:50.300" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""other peers on a local area network,""" start="00:01:52.400" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""even if none of the peers involved""" start="00:01:54.740" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""are connected to the broader Internet,""" start="00:01:56.940" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you can still share files.""" start="00:01:58.980" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrives are sparsely replicated.""" start="00:02:02.060" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This means that you can download individual files""" start="00:02:04.800" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""from a hyperdrive without having to download""" start="00:02:07.479" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the whole thing.""" start="00:02:10.020" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This saves on disk space and also allows you""" start="00:02:11.720" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to quickly load just the files""" start="00:02:15.471" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that you're interested in.""" start="00:02:17.233" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrives are mutable.""" start="00:02:20.540" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You can add files, change files,""" start="00:02:22.467" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""remove files from a hyperdrive.""" start="00:02:25.500" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And when peers load your drive""" start="00:02:28.120" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""using the very same link,""" start="00:02:30.667" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""they will be able to load""" start="00:02:32.560" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the latest changes that you've published.""" start="00:02:34.025" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrives are versioned.""" start="00:02:37.320" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This means that when you make changes to a file,""" start="00:02:39.460" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the previous versions of those files are not lost.""" start="00:02:42.429" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Peers can load the old versions of a file""" start="00:02:46.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that was changed or deleted, for example,""" start="00:02:49.360" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""simply by specifying the version number""" start="00:02:52.440" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""of the hyperdrive when the file still existed""" start="00:02:55.067" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""or existed in a previous state.""" start="00:02:58.167" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""About USHIN and the contributors""" start="00:03:04.600" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""I'm presenting this talk on behalf of USHIN.""" start="00:03:04.600" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""USHIN is a tiny nonprofit whose mission is to""" start="00:03:07.380" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""promote personal, community and global health""" start="00:03:10.680" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""through free and open universal shared information""" start="00:03:14.032" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for everybody.""" start="00:03:17.367" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""USHIN was founded in the early 90s""" start="00:03:19.700" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""by Paula Maas, Steve Nash and others""" start="00:03:21.551" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""with the goal of creating""" start="00:03:24.860" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""a distributed health information network""" start="00:03:26.400" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that would allow people to find, share, compare""" start="00:03:29.131" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and deliberate health information""" start="00:03:33.429" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""from a variety of sources.""" start="00:03:35.667" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Since then, the scope of the project has broadened""" start="00:03:37.780" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to include all kinds of information.""" start="00:03:40.700" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And in recent years, we've been focusing on""" start="00:03:43.260" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""building with peer-to-peer software.""" start="00:03:45.780" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""About three years ago,""" start="00:03:49.500" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""we started working with Mauve Signweaver,""" start="00:03:50.534" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""who has since then been our steadfast""" start="00:03:52.634" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""peer-to-peer explorer and guide.""" start="00:03:54.767" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This year, we started working on""" start="00:03:58.260" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""this hyperdrive.el Emacs package,""" start="00:04:00.080" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and Adam has been the powerhouse""" start="00:04:02.800" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""behind the Emacs Lisp development.""" start="00:04:05.060" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""About a month ago,""" start="00:04:08.080" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Jonas Bernoulli started joining with us,""" start="00:04:08.967" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and he has been offering his expertise""" start="00:04:11.100" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in the realm of user interface design""" start="00:04:14.420" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""using his Transient library.""" start="00:04:15.640" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And Protesilaos Stavrou has been not only valuable""" start="00:04:18.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in terms of user design and feedback,""" start="00:04:22.140" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but he created a wonderful""" start="00:04:25.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""basic introduction to Hyperdrive. Take a look.""" start="00:04:27.120" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Basic introduction to Hyperdrive""" start="00:04:32.646" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""[Prot]: Hello everyone!""" start="00:04:32.646" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""My name is Protesilaos, also known as Prot.""" start="00:04:33.586" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""In this video, I want to show you""" start="00:04:36.366" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the basics of hyperdrive.el.""" start="00:04:37.806" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This is a package for Emacs that lets us connect to""" start="00:04:40.746" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the Hyperdrive peer-to-peer network.""" start="00:04:44.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""We can browse existing drives on the network,""" start="00:04:47.833" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""meaning existing file systems,""" start="00:04:51.573" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""or create and maintain our own hyperdrive,""" start="00:04:53.880" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to which we can add, remove or edit files.""" start="00:04:59.053" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""We will see this together.""" start="00:05:03.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What I have here in front of me is a basic""" start="00:05:05.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""use-package declaration for hyperdrive.el.""" start="00:05:08.733" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""All I am doing is binding `hyperdrive-menu`""" start="00:05:12.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to a key and also activating""" start="00:05:16.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the menu bar entry of hyperdrive.""" start="00:05:19.793" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me show you very quickly, `hyperdrive-menu`.""" start="00:05:23.613" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And this is the sort of interface that it brings up.""" start="00:05:26.813" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""We will take a closer look at it.""" start="00:05:31.293" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""As for the menu bar,""" start="00:05:33.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""we have `hyperdrive-menu` over here,""" start="00:05:35.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and we will take a look at this as well.""" start="00:05:41.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Suffice to say that""" start="00:05:44.193" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you can get the same functionality""" start="00:05:45.693" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""with the menu bar or with `hyperdrive-menu`,""" start="00:05:48.273" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as well as by calling the commands directly""" start="00:05:51.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""with `M-x` or their respective key bindings.""" start="00:05:55.893" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I won't cover everything in that regard,""" start="00:06:00.053" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but please bear this fact in mind.""" start="00:06:02.980" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Managing files with Hyperdrive.el""" start="00:06:06.133" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Let's start then with what I have here""" start="00:06:06.133" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in this other tab, which is a set of files.""" start="00:06:09.213" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I have prepared in my local file system - a hyperdrive.""" start="00:06:13.853" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This contains a set of files""" start="00:06:18.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that I ultimately want to share""" start="00:06:20.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""on the peer-to-peer network,""" start="00:06:22.653" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""meaning that I want this to eventually be""" start="00:06:24.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""reflected in my own hyperdrive.""" start="00:06:28.053" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What I did to get started is""" start="00:06:31.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I invoked `hyperdrive-menu`.""" start="00:06:34.054" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The very first thing you need to do""" start="00:06:36.493" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to get started with Hyperdrive,""" start="00:06:38.573" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""either to browse or to create,""" start="00:06:40.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is to start the gateway,""" start="00:06:43.633" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""meaning to be able to connect to""" start="00:06:46.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the peer-to-peer network.""" start="00:06:48.693" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You see here in `hyperdrive-menu` that there is""" start="00:06:50.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""an indicator next to the &quot;Gateway&quot; heading""" start="00:06:53.493" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""telling me that the gateway is on.""" start="00:06:56.293" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I started it with `G` and then `s`.""" start="00:06:59.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Once you start it,""" start="00:07:04.673" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you can type `h` to visit an existing drive,""" start="00:07:06.573" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""`N` to create a drive,""" start="00:07:10.153" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""or `L` to open a link to an existing hyperdrive.""" start="00:07:12.113" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You may get this link via email, for example.""" start="00:07:17.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""In this case, let me be over here""" start="00:07:21.154" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and let me just kill this buffer.""" start="00:07:24.933" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What I want in this case is to select a hyperdrive.""" start="00:07:27.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You see here I have my own hyperdrive""" start="00:07:32.953" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and also the hyperdrive of USHIN,""" start="00:07:35.453" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the developers of hyperdrive.el.""" start="00:07:37.813" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What I want to do in this case,""" start="00:07:41.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you see there are various options available.""" start="00:07:43.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I want to type `v` to view a file.""" start="00:07:46.853" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And in this case,""" start="00:07:50.213" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I will just type the forward slash,""" start="00:07:50.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which means to view the root directory""" start="00:07:53.633" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""of this hyperdrive. And I am here.""" start="00:07:56.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It is an empty drive apart from""" start="00:08:00.853" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""my credentials over here.""" start="00:08:04.220" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""There is nothing more really to see.""" start="00:08:06.513" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But what I want to do is""" start="00:08:10.113" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to start adding files to this drive.""" start="00:08:12.093" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me use the menu bar for this.""" start="00:08:15.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I will hover over to the menu bar,""" start="00:08:18.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I will find the &quot;Hyperdrive&quot; submenu.""" start="00:08:21.053" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Then I will go find where the drives are.""" start="00:08:24.773" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And you see that there are writable drives,""" start="00:08:27.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""meaning drives that I manage,""" start="00:08:30.673" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and read-only drives, meaning drives of other users.""" start="00:08:32.813" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""In this case, USHIN is read-only, of course,""" start="00:08:37.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and Protesilaos is writable.""" start="00:08:40.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So what I want to do is upload a file to Protesilaos.""" start="00:08:42.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And it prompts me in the Minibuffer for a file.""" start="00:08:48.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I will just add the README.""" start="00:08:52.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It is asking me, &quot;Where do you want to add it?&quot;""" start="00:08:55.293" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And in square brackets, the default is to add it""" start="00:08:58.173" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to the root directory of the hyperdrive.""" start="00:09:00.553" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I will just type `RET` to select the default.""" start="00:09:03.813" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And there it is. It is already in the drive.""" start="00:09:07.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me add the COPYING file as well,""" start="00:09:11.393" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""using the same method.""" start="00:09:14.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I will go find my drive. &quot;Upload File.&quot;""" start="00:09:16.673" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And let's add the COPYING.""" start="00:09:21.393" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And I also want to add it to the root directory.""" start="00:09:23.853" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So already I have two files.""" start="00:09:29.433" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This is looking good.""" start="00:09:30.633" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now I am opening the file inside of hyperdrive.""" start="00:09:31.953" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This is not the same file""" start="00:09:37.014" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as I have in my local directory.""" start="00:09:39.033" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What I can do here, for example, is I can...""" start="00:09:42.673" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me open another file here, the COPYING.""" start="00:09:47.433" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I can create an Org link.""" start="00:09:49.893" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Notice that these are Org files.""" start="00:09:52.113" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I will use the standard `org-store-link` command.""" start="00:09:54.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You can see the key binding I invoked""" start="00:09:58.853" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and the command it calls""" start="00:10:01.173" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""on the top right corner of my screen.""" start="00:10:03.533" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So what I did is""" start="00:10:05.893" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I copied a link to this hyperdrive file.""" start="00:10:07.413" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And in this other file over here,""" start="00:10:11.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I want to say &quot;Free/libre.&quot;""" start="00:10:15.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I am editing my hyperdrive terms:""" start="00:10:22.153" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""&quot;Check the,&quot; and I will paste the link here,""" start="00:10:27.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""&quot;for how to use my files.&quot;""" start="00:10:35.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""If we check what is here,""" start="00:10:40.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you will see that this is a link""" start="00:10:44.813" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""inside of the hyperdrive.""" start="00:10:47.813" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And it's pointing specifically""" start="00:10:50.880" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to that heading over there,""" start="00:10:52.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which has this unique identifier,""" start="00:10:54.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as you can see over here.""" start="00:10:58.173" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So this is wonderful.""" start="00:11:00.513" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I want to rename it to &quot;Check the COPYING""" start="00:11:03.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for how to use my files.&quot;""" start="00:11:09.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I will save this.""" start="00:11:11.953" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now what I want to do is,""" start="00:11:13.933" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I want to invoke `hyperdrive-menu`.""" start="00:11:16.840" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And you will see now the menu, unlike earlier,""" start="00:11:20.493" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""has more commands, more stuff we can do with it.""" start="00:11:23.153" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For example, I can type `w` to copy a URL.""" start="00:11:27.213" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And by typing `w`, you will notice...""" start="00:11:31.793" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me go to the `*scratch*` buffer to paste this in.""" start="00:11:34.500" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You will notice what the URL is.""" start="00:11:37.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It is my hyperdrive, my unique identifier,""" start="00:11:40.093" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and then forward slash, meaning the root directory,""" start="00:11:44.133" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and then README.org.""" start="00:11:47.513" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""That is the file I was editing.""" start="00:11:49.673" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let's do `hyperdrive-menu` again.""" start="00:11:54.093" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let's remove the `*scratch*` buffer.""" start="00:11:56.573" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And let's do `hyperdrive-menu`.""" start="00:11:58.133" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And you will notice that there are options""" start="00:11:59.933" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to download the file, for example.""" start="00:12:02.380" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""If you are reading somebody else's file,""" start="00:12:05.133" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you can download it to your own file system.""" start="00:12:07.213" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me do that. &quot;Download.&quot;""" start="00:12:10.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And it is asking me, &quot;Where do you want to save this?&quot;""" start="00:12:12.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For now, I will save it in the `/tmp/`, like this.""" start="00:12:14.753" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let's call it test.org.""" start="00:12:20.673" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Okay, `/tmp/test.org`.""" start="00:12:23.213" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me go and visit `test.org`.""" start="00:12:25.053" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And there it is.""" start="00:12:29.093" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It downloaded it just like that.""" start="00:12:30.280" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This is how you can, for example,""" start="00:12:32.653" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""download the pictures and videos""" start="00:12:35.373" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that I will eventually share on my hyperdrive.""" start="00:12:38.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let's invoke `hyperdrive-menu` again.""" start="00:12:42.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And let's go up to the parent, you see,""" start="00:12:44.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""with the caret (`^`) sign.""" start="00:12:48.053" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This will take me to the parent directory,""" start="00:12:50.513" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in this case, the root directory of my hyperdrive.""" start="00:12:53.173" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Dired like interface""" start="00:12:56.573" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Let me do it a bit differently.""" start="00:12:56.573" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The same idea, a bit differently.""" start="00:12:58.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For those of you who are familiar with""" start="00:13:00.193" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Dired and the `dired-jump` command,""" start="00:13:02.733" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Dired is the standard file manager of Emacs.""" start="00:13:05.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And `dired-jump` is a command that lets you jump""" start="00:13:08.753" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""from the current file""" start="00:13:13.173" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to the directory that contains that file.""" start="00:13:14.593" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So you see, I am here.""" start="00:13:18.653" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The `dired-jump` command, by default,""" start="00:13:20.733" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is bound to Ctrl-x, Ctrl-j (`C-x C-j`).""" start="00:13:22.553" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So if I do `C-x C-j`, in this case,""" start="00:13:25.233" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it invokes a command.""" start="00:13:29.433" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You can see the name of it, `hyperdrive-up`,""" start="00:13:30.773" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which is functionally equivalent to `dired-jump`.""" start="00:13:33.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It does the same thing, meaning that it took me""" start="00:13:37.733" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to the parent directory of this file.""" start="00:13:41.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I think this is very helpful.""" start="00:13:45.253" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This listing over here, in general,""" start="00:13:48.253" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""tries to mimic or to reuse""" start="00:13:50.693" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the knowledge you already have of Dired.""" start="00:13:55.273" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For example, if you type `o`,""" start="00:13:58.553" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it will open the file at point in the other window,""" start="00:14:01.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""same as in Dired.""" start="00:14:05.313" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Whereas if you type `RET`,""" start="00:14:07.093" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it would open it in the current window.""" start="00:14:08.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Again, same as what you will do in Dired.""" start="00:14:11.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let's see over here.""" start="00:14:16.253" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You have options to jump with `j`,""" start="00:14:18.014" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which is using Minibuffer completion to go to a file.""" start="00:14:21.643" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Right now, I only have two files,""" start="00:14:26.233" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but the idea is the same.""" start="00:14:28.433" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It's, again, what you would do in Dired""" start="00:14:32.100" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""if you type `j` with the default key bindings, though,""" start="00:14:34.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""not with Evil mode or something else.""" start="00:14:37.333" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let's see again what we have over here.""" start="00:14:40.293" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You can create a bookmark, and this will work,""" start="00:14:42.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but no need to show you everything.""" start="00:14:45.934" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The idea is that you create a bookmark""" start="00:14:48.554" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the way you create any Emacs bookmark,""" start="00:14:50.694" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to a file, to a directory.""" start="00:14:53.214" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It doesn't matter.""" start="00:14:54.933" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And then you can jump to it,""" start="00:14:55.994" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the way bookmarks in Emacs always work.""" start="00:14:57.734" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""History in hyperdrive""" start="00:15:01.234" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""What I want to show you now""" start="00:15:01.234" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""a little bit is the history.""" start="00:15:02.893" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""History in Hyperdrive""" start="00:15:06.313" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""has to do with the drive itself.""" start="00:15:09.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Meaning that individual files""" start="00:15:11.434" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""do not have their own history,""" start="00:15:13.614" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but the drive as such has a history.""" start="00:15:15.314" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Whenever you add a file, you remove a file,""" start="00:15:18.674" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""or you edit a file, you are incrementing""" start="00:15:22.014" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the versioning of the hyperdrive by one.""" start="00:15:25.673" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So each action corresponds to one unit of history.""" start="00:15:29.133" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""If you add a file, remove a file, and edit a file,""" start="00:15:34.574" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""this means that you are up three versions.""" start="00:15:37.833" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So whatever your version number is, plus three.""" start="00:15:40.993" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I am on version 24* over here. [* latest, not version 24]""" start="00:15:44.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me go to this file now,""" start="00:15:48.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and let me do `V h`""" start="00:15:55.933" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to see a history of it.""" start="00:15:59.793" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You will notice that between versions 23 and 24,""" start="00:16:02.173" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""this file was constant.""" start="00:16:07.553" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But in version 25, we have a change.""" start="00:16:09.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""When you are in this buffer over here,""" start="00:16:12.633" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you can type the equals sign (`=`),""" start="00:16:14.353" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which is a key binding that will bring up the diff.""" start="00:16:17.213" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So the set of changes between""" start="00:16:22.373" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the previous version and the current version.""" start="00:16:24.473" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And you see here, between versions 23 and 25,""" start="00:16:27.033" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I have this addition.""" start="00:16:32.513" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I think this is wonderful because now""" start="00:16:35.093" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you can always go and check""" start="00:16:38.373" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""what is the state of this file.""" start="00:16:41.173" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What is this person up to?""" start="00:16:42.413" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What have they been changing?""" start="00:16:43.853" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And with Hyperdrive, you can also visit…""" start="00:16:46.313" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me go to the parent here.""" start="00:16:50.793" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""You can always visit a previous history.""" start="00:16:58.514" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So, for example, I will go to the previous history,""" start="00:17:02.413" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and let me see this file again""" start="00:17:06.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in its previous history.""" start="00:17:08.033" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I am looking at the file,""" start="00:17:09.554" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but notice that the file now is not editable""" start="00:17:11.094" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""because this is in the past.""" start="00:17:15.154" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I cannot rewrite history.""" start="00:17:17.354" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I can only go to the present and then modify it""" start="00:17:19.314" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and then create a new history, a new version.""" start="00:17:23.414" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But this helps me see the state of the file""" start="00:17:27.214" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""at that version of the hyperdrive.""" start="00:17:31.214" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So this is the basic idea of it, folks.""" start="00:17:35.973" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Use case of sharing large files""" start="00:17:39.973" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""What I want to do then is""" start="00:17:39.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""continue with my process here.""" start="00:17:42.234" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Let me actually do it like this so that you can see.""" start="00:17:46.254" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Continue with the process of""" start="00:17:51.973" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""publishing all those files""" start="00:17:54.374" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that I have on my hyperdrive.""" start="00:17:56.494" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For example, this is a picture of a flower""" start="00:17:59.754" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that I have taken.""" start="00:18:02.854" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I think it's very nice.""" start="00:18:04.114" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And this is a video of an eagle""" start="00:18:05.734" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that was flying above me.""" start="00:18:08.033" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And I will share this on the Hyperdrive network.""" start="00:18:09.594" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""From the network, by the way,""" start="00:18:13.774" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you can also stream video as well.""" start="00:18:15.733" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It is described in the hyperdrive.el manual,""" start="00:18:18.453" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but I cannot show you everything right now.""" start="00:18:20.694" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I think you get the idea.""" start="00:18:24.253" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The gist is, you have a file system""" start="00:18:26.513" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that you can share with the world""" start="00:18:29.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""using peer-to-peer technology.""" start="00:18:31.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And for me, this is a powerful tool.""" start="00:18:34.133" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This is a valuable proposition""" start="00:18:38.520" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""because I can share these large files I have,""" start="00:18:41.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""these pictures or videos,""" start="00:18:45.013" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which I cannot post on my website""" start="00:18:47.433" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""due to bandwidth considerations.""" start="00:18:49.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And this way, I can still share with the world""" start="00:18:52.713" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""something that I consider interesting.""" start="00:18:55.593" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""That's all for today, folks.""" start="00:18:59.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Thank you very much for your attention.""" start="00:19:00.213" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Remember that hyperdrive.el is still in development""" start="00:19:01.894" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and things may change.""" start="00:19:05.514" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But the fundamentals are in place""" start="00:19:07.394" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and will remain constant.""" start="00:19:10.313" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""That's all for today. Take care. Goodbye.""" start="00:19:13.073" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""[Joseph]: Thank you, Prot.""" start="00:19:19.461" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Drive creation with hyperdrive.el""" start="00:19:20.913" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Another fundamental feature of hyperdrive.el""" start="00:19:20.913" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is drive creation.""" start="00:19:23.980" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The first step, as always,""" start="00:19:26.319" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is to make sure that the gateway is running.""" start="00:19:28.339" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll open up `hyperdrive-menu` with `C-c h`.""" start="00:19:30.859" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""By the way, my key presses,""" start="00:19:35.119" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as well as the commands that they run,""" start="00:19:36.779" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""can be seen at the top right of my screen.""" start="00:19:38.699" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Down here, I see that the gateway is off.""" start="00:19:42.439" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll start it with `G s`.""" start="00:19:44.619" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now, it takes a few moments""" start="00:19:49.139" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for the gateway to spin up.""" start="00:19:50.560" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So to refresh the menu,""" start="00:19:52.219" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I will close it and open it again.""" start="00:19:54.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now we see that the gateway is on.""" start="00:19:58.399" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll press `N` to create a new drive.""" start="00:20:01.219" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now it's prompting me for a new hyperdrive seed.""" start="00:20:05.919" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""A seed is a string of characters""" start="00:20:09.759" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that will be used to generate,""" start="00:20:12.939" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in tandem with my secret master key,""" start="00:20:14.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""a new public key that will globally,""" start="00:20:18.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""uniquely identify this drive.""" start="00:20:21.339" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll type in &quot;emacsconf&quot;.""" start="00:20:24.879" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And after a moment,""" start="00:20:31.759" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""we see the newly created, empty drive.""" start="00:20:32.659" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll open up `hyperdrive-menu` once more.""" start="00:20:36.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And I'll press `h` to open the sub-menu that shows""" start="00:20:40.099" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""more information about this hyperdrive,""" start="00:20:43.799" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as well as commands related to this drive.""" start="00:20:45.979" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""In blue here, we see the seed that I just entered""" start="00:20:50.879" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as well as the public key that it generated.""" start="00:20:54.919" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""We also see that the petname""" start="00:21:00.219" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is also set to emacsconf.""" start="00:21:02.199" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The petname is different from the seed.""" start="00:21:06.540" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The petname is my personal, local identifier""" start="00:21:09.039" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for this drive.""" start="00:21:13.079" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I can change it whenever I want.""" start="00:21:14.679" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And while it's not a secret,""" start="00:21:16.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it's not displayed to other users.""" start="00:21:19.739" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I will leave it for now.""" start="00:21:23.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""&quot;emacsconf&quot; is fine.""" start="00:21:26.360" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But when I go to share this drive,""" start="00:21:28.139" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll want to display something more memorable""" start="00:21:30.859" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""than this long public key.""" start="00:21:34.159" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And that's what the nickname is for.""" start="00:21:36.879" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll change that by pressing `n`,""" start="00:21:39.219" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I'll type in &quot;Emacs Conference&quot;.""" start="00:21:42.519" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now, when other peers load this hyperdrive""" start="00:21:48.219" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""by its URL, which I can copy by pressing `w`,""" start="00:21:51.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""they will see the nickname""" start="00:21:57.059" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in addition to the public key.""" start="00:21:59.499" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So if hyperdrive.el is like a phone book,""" start="00:22:02.019" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the public keys are akin to phone numbers,""" start="00:22:05.720" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the nickname is like the name that your contacts""" start="00:22:09.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""give you when they introduce themselves,""" start="00:22:13.939" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and the petname is the name""" start="00:22:16.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that you actually write down in your phone book.""" start="00:22:18.319" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll show you what nicknames and petnames look like""" start="00:22:22.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for drives that are not writable to me.""" start="00:22:25.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll press `C-g` to close this submenu,""" start="00:22:29.619" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and now I'm back at the main menu.""" start="00:22:32.479" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll press `C-u h` to choose a hyperdrive,""" start="00:22:34.639" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I'll look at Prot's hyperdrive here.""" start="00:22:39.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And here we see that the nickname""" start="00:22:44.559" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""of Prot's hyperdrive is &quot;Protesilaos&quot;.""" start="00:22:46.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now, it's grayed out,""" start="00:22:49.839" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which means that I can't change it.""" start="00:22:50.919" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I can't change it because it's not my hyperdrive.""" start="00:22:53.239" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But I can change the petname if I want it""" start="00:22:56.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to show up under a different name.""" start="00:22:58.539" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll press `p`,""" start="00:23:00.539" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I'll type in &quot;Prot&quot;, and hit Enter.""" start="00:23:02.439" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now I'll open his hyperdrive by pressing `f`.""" start="00:23:06.679" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And I'll pick a path, I'll just hit `RET`""" start="00:23:11.319" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to open the root directory.""" start="00:23:13.899" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now, when Prot's hyperdrive shows up,""" start="00:23:16.759" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""at the top of the screen,""" start="00:23:19.459" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I see that it's identified with the petname &quot;Prot.&quot;""" start="00:23:20.539" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""hyperdrive-mirror""" start="00:23:26.199" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Now I'll show off `hyperdrive-mirror`.""" start="00:23:26.199" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""`hyperdrive-mirror` is like `hyperdrive-upload-file`,""" start="00:23:28.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""except that it allows you to upload""" start="00:23:32.159" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""an entire directory full of files recursively.""" start="00:23:33.879" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For this example, I will upload""" start="00:23:37.919" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the contents of the emacsconf-mirror directory.""" start="00:23:40.039" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""First step is to open the menu. I'll press H,""" start="00:23:44.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and then I will choose the emacsconf drive.""" start="00:23:48.919" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""In the bottom here, we see the Mirror group.""" start="00:23:53.379" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The first option that I can change""" start="00:23:57.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is the source directory.""" start="00:23:59.479" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The source directory is the directory on my local""" start="00:24:01.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""machine from which files will be uploaded.""" start="00:24:04.619" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""By default, the source directory""" start="00:24:08.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is set to the current directory of the main buffer.""" start="00:24:11.199" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This is good for now, so I'll leave it.""" start="00:24:17.060" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The target directory is the directory""" start="00:24:19.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in the hyperdrive where the files will end up.""" start="00:24:22.199" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""By default, it's the root directory,""" start="00:24:25.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but for this example,""" start="00:24:28.839" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll put these files in a subdirectory called notes.""" start="00:24:30.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The filter is the rule that allows you""" start="00:24:36.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to programmatically determine which files""" start="00:24:40.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in the local directory will be uploaded""" start="00:24:43.379" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""into the hyperdrive, and which ones won't.""" start="00:24:46.579" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""By default, all files are mirrored, but in this case,""" start="00:24:50.339" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""let's say that I want to upload only the Org files,""" start="00:24:54.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""these first three, and I want to exclude""" start="00:24:58.499" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the markdown file, solar-oven-notes.md.""" start="00:25:01.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll press `m f`, and I will choose""" start="00:25:05.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the regular expression string option.""" start="00:25:10.379" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""If I wanted to, I could choose a named function""" start="00:25:13.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""or a lambda, but I won't demo that here.""" start="00:25:16.279" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll type in `org$`, which will match against""" start="00:25:22.199" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the files that end with &quot;org.&quot;""" start="00:25:26.339" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The filter is here, and I'll leave confirmation on.""" start="00:25:31.659" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The confirmation step just allows me to review""" start="00:25:35.899" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the list of files that are going to be uploaded""" start="00:25:39.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""into the drive before it happens.""" start="00:25:42.139" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll press `m m` to mirror them, and I see here""" start="00:25:45.899" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that these three files are going to be uploaded.""" start="00:25:52.879" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Looks good. I'll press `C-c C-c` to confirm the mirror.""" start="00:25:58.439" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now it says three files have been uploaded,""" start="00:26:05.559" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and here they are in the drive.""" start="00:26:07.739" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Good, so now I will modify the""" start="00:26:11.379" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""fermented-overnight-oats file in the hyperdrive.""" start="00:26:15.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I've loaded it, and I'll add here:""" start="00:26:19.939" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""&quot;or other grains - cook them in advance if you want to,&quot;""" start="00:26:24.340" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I'll save it.""" start="00:26:31.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now this file, fermented-overnight-oats.org,""" start="00:26:33.779" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""has been modified on the hyperdrive""" start="00:26:37.779" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""more recently than on the file system.""" start="00:26:40.679" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The file system file has not been modified.""" start="00:26:44.539" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll go back to my local directory,""" start="00:26:48.900" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I'll modify a different file.""" start="00:26:53.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""In this case, I'll add another hoedown""" start="00:26:56.539" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to the fiddle-tunes.org file.""" start="00:27:00.459" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""&quot;Tom and Jerry.&quot; That's a good hoedown.""" start="00:27:04.619" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now I'll mirror again.""" start="00:27:09.619" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll open the menu, and I'll press `h`,""" start="00:27:14.119" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and then I'll open up the emacsconf demo drive.""" start="00:27:16.779" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now I've also decided that""" start="00:27:20.579" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I want to include the solar-oven-notes.md file.""" start="00:27:22.959" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll remove the filter""" start="00:27:26.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""so that it's no longer excluded.""" start="00:27:28.499" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll leave the rest of the settings the same,""" start="00:27:32.119" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I'll press `m m` again.""" start="00:27:34.079" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now we see that the""" start="00:27:38.779" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""`*hyperdrive-mirror*` buffer looks different.""" start="00:27:40.019" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So, there are two main groups.""" start="00:27:43.539" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""These are the files that are going to be uploaded,""" start="00:27:47.379" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and these are the files that are ignored.""" start="00:27:49.986" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""They're not going to be uploaded.""" start="00:27:52.899" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The first subgroup is the files that are new locally.""" start="00:27:56.539" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So the solar-oven-notes.md file is new on my machine,""" start="00:28:00.519" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and it doesn't exist in the hyperdrive.""" start="00:28:04.899" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So the mirror command is going to take that file""" start="00:28:07.319" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and add it to the hyperdrive.""" start="00:28:10.039" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This group contains the files that are newer locally.""" start="00:28:13.759" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So the fiddle-tunes.org file""" start="00:28:17.519" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""has been modified on my local machine,""" start="00:28:19.779" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""but it hasn't been modified on the hyperdrive.""" start="00:28:23.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So `hyperdrive-mirror` is going to take the""" start="00:28:26.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""updated version and put it on the hyperdrive.""" start="00:28:28.859" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Now, the first group that's going to be ignored""" start="00:28:33.859" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""are the files that are older locally.""" start="00:28:35.959" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So the fermented oats file has been modified""" start="00:28:39.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""on the hyperdrive more recently""" start="00:28:42.979" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""than on my local file system.""" start="00:28:45.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So `hyperdrive-mirror` isn't going to overwrite""" start="00:28:47.539" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the version of the file in my hyperdrive""" start="00:28:51.059" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""with the older local version.""" start="00:28:53.519" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And finally, the emacsconf-preparation.org file""" start="00:28:57.279" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""hasn't been modified on either the hyperdrive""" start="00:29:00.779" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""or my local file system,""" start="00:29:05.499" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and the timestamp is identical.""" start="00:29:07.439" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So `hyperdrive-mirror` is going to""" start="00:29:09.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""ignore this file as well.""" start="00:29:11.279" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So the only two files that are going""" start="00:29:13.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to be uploaded now are the solar-oven-notes.md file""" start="00:29:15.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and the fiddle-tunes.org file.""" start="00:29:19.319" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll confirm that with `C-c C-c`.""" start="00:29:21.639" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now in my hyperdrive""" start="00:29:25.379" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""we see that there are four files.""" start="00:29:26.579" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The solar-oven-notes.md file has been uploaded,""" start="00:29:28.519" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and if I open the fiddle-tunes.org file,""" start="00:29:31.679" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""we see that it now contains the line &quot;Tom and Jerry,&quot;""" start="00:29:35.519" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which means that it was updated based on""" start="00:29:39.479" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the change to the file on my local file system.""" start="00:29:41.659" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This `hyperdrive-mirror` command is the command""" start="00:29:47.099" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that we use to periodically update""" start="00:29:50.559" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the USHIN hyperdrive with""" start="00:29:54.139" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the contents of the USHIN website.""" start="00:29:56.599" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""There's going to be a link to the USHIN hyperdrive""" start="00:30:00.319" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as well as the website at the end of the video.""" start="00:30:03.019" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""hyperdrive history""" start="00:30:06.819" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Now I'll go into a little more detail""" start="00:30:06.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""about the Hyperdrive history buffer""" start="00:30:09.079" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""by showing off the README file in Prot's hyperdrive.""" start="00:30:11.219" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll press `C-c h` to open the menu,""" start="00:30:15.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""`C-u h` to be prompted for a drive.""" start="00:30:19.019" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll select Prot's drive,""" start="00:30:22.199" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""then I'll press `f` to jump to a file""" start="00:30:24.239" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""inside of Prot's drive,""" start="00:30:26.739" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and then `RET` to go to the root directory.""" start="00:30:28.739" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""From here, I'll press `j` to jump to""" start="00:30:32.399" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""an item in his directory.""" start="00:30:35.339" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll press `RET` on the README to load it.""" start="00:30:37.299" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And then finally, I'll open up""" start="00:30:42.379" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""`C-c h` to look at the menu.""" start="00:30:44.119" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Here, I see that I'm looking at""" start="00:30:49.579" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the latest version of Prot's README.org file.""" start="00:30:50.979" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I also see that the previous version""" start="00:30:56.859" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""of README.org is unknown.""" start="00:30:58.739" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It's unknown because hyperdrives""" start="00:31:02.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""are sparsely replicated.""" start="00:31:05.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""That means that when my node loaded this""" start="00:31:07.819" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""README.org file, it didn't bother""" start="00:31:09.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to load anything else.""" start="00:31:12.359" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It didn't load the previous history""" start="00:31:13.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""or any other file in his drive.""" start="00:31:16.059" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But now that I want to check out whether""" start="00:31:18.659" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""there is a previous version, I'll press `V p`.""" start="00:31:20.759" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And when it loads, I see in the mode line down here""" start="00:31:26.199" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that I'm now looking at version 25 of this drive.""" start="00:31:28.919" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""That means that I'm looking at the README.org file""" start="00:31:33.319" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""at version 25 of this drive.""" start="00:31:36.499" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll open the menu again, and I see""" start="00:31:39.459" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that the same version number is displayed here.""" start="00:31:42.019" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The previous version, before version 25,""" start="00:31:47.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is also unknown because we haven't bothered""" start="00:31:50.479" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to load anything before version 25.""" start="00:31:53.559" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I also see that the next version, after version 25,""" start="00:31:56.859" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is the latest version.""" start="00:32:00.479" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""So I'll open that up by pressing `V n`.""" start="00:32:02.419" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now we are back where we started,""" start="00:32:06.719" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""at the latest version.""" start="00:32:10.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But now we see that the previous version,""" start="00:32:12.919" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the version before the latest version, is version 25.""" start="00:32:15.079" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Because now that our node has loaded the previous version,""" start="00:32:18.999" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it can display that information to us.""" start="00:32:24.300" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""From here, I'll open up the history buffer.""" start="00:32:28.620" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll press `V h`.""" start="00:32:31.640" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And I can see that there are two known existent""" start="00:32:35.320" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""ranges in Prot's README.org history.""" start="00:32:40.320" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This means that the latest version of README.org""" start="00:32:46.119" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""was modified at version 39.""" start="00:32:50.120" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And that Prot made four changes""" start="00:32:54.420" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to other files in his hyperdrive""" start="00:32:57.480" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""besides the README.org file since then.""" start="00:33:00.320" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Before that, the time that Prot modified""" start="00:33:04.280" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the README.org file was at version 25.""" start="00:33:08.660" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And then he made 13 other changes to other files""" start="00:33:11.840" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""inside of this drive.""" start="00:33:15.200" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Before that, we don't know.""" start="00:33:18.580" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""We haven't loaded the history.""" start="00:33:20.259" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""But since we're curious,""" start="00:33:21.859" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll hit `RET` on the unknown line.""" start="00:33:23.179" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And now we see that in Prot's hyperdrive,""" start="00:33:27.920" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the README.org file didn't exist""" start="00:33:32.140" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for the first 22 revisions of his drive.""" start="00:33:34.940" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Then Prot created it at version 23.""" start="00:33:39.020" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Then again, at 25, made a change.""" start="00:33:43.780" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And then made another change at 39.""" start="00:33:46.920" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For good measure, I'll show you the diffs.""" start="00:33:50.560" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""The first diff just contains the entire file""" start="00:33:54.420" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""because the file didn't exist before version 23.""" start="00:33:58.180" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Then, at version 25, Prot added a link""" start="00:34:05.119" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to the COPYING.org file.""" start="00:34:08.620" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And then, at 39,""" start="00:34:13.119" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Prot changed the link to his own hyperdrive""" start="00:34:14.220" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to be a relative link.""" start="00:34:17.340" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Streaming video from hyperdrive""" start="00:34:20.880" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Now, I'll stream a video from the USHIN hyperdrive""" start="00:34:20.880" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that shows off a prototype interface we created""" start="00:34:24.300" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for exploring networks of sources of information.""" start="00:34:27.900" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll open up `hyperdrive-menu`.""" start="00:34:31.720" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Press `C-u h` to be prompted for a drive.""" start="00:34:33.940" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I'll select the USHIN drive.""" start="00:34:37.220" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Press `f` to jump to a file in it.""" start="00:34:39.740" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And then I'll jump to the media directory.""" start="00:34:41.940" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Once it loads, I'll press `RET` on the video""" start="00:34:46.560" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that I want to stream.""" start="00:34:50.180" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""[Voice from the video]: This is a demonstration""" start="00:34:54.560" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""of the subjective trust interface""" start="00:34:56.686" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that the USHIN team built for the u4u.io web app.""" start="00:34:57.839" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""[Joseph]: There it is.""" start="00:35:02.500" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Streaming a video from Hyperdrive.""" start="00:35:04.080" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""hyperdrive.el under the hood""" start="00:35:08.746" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Here's how hyperdrive.el works under the hood.""" start="00:35:08.746" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It uses plz [Please],""" start="00:35:13.027" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""the HTTP library that Adam Porter wrote,""" start="00:35:14.727" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to send requests via curl to hyper-gateway.""" start="00:35:18.080" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""hyper-gateway is a program that Mauve Signweaver wrote,""" start="00:35:22.720" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which runs a hyperdrive node under the hood.""" start="00:35:26.580" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It also runs a local HTTP server,""" start="00:35:30.760" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which accepts requests to control the node.""" start="00:35:34.040" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For example, if hyperdrive.el wants to show a file""" start="00:35:38.460" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""from someone's hyperdrive,""" start="00:35:43.480" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it sends the appropriate link via curl""" start="00:35:45.220" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as a GET request to hyper-gateway.""" start="00:35:49.120" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""hyper-gateway then fetches the data from the network""" start="00:35:52.960" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and returns it via curl,""" start="00:35:57.240" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""via plz, back to hyperdrive.el.""" start="00:35:59.340" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""If hyper-gateway already has a locally cached copy,""" start="00:36:03.940" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""it doesn't bother checking the network.""" start="00:36:07.420" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It just sends it straight away.""" start="00:36:09.240" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Likewise, if hyperdrive.el wants to add a file""" start="00:36:12.560" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to a hyperdrive, it sends a PUT request.""" start="00:36:15.880" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""hyper-gateway is not installed as part of hyperdrive.el.""" start="00:36:20.200" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It needs to be installed""" start="00:36:24.980" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as a separate, executable program.""" start="00:36:26.660" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""We have plans to switch from using hyper-gateway""" start="00:36:35.740" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to another program that Mauve Signweaver""" start="00:36:39.460" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""is working on, called hyper-sdk-rpc.""" start="00:36:42.459" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""hyper-sdk-rpc will give us more fine-grained control""" start="00:36:47.839" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""over the underlying Hyperdrive node,""" start="00:36:52.020" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which will open up some new features.""" start="00:36:54.700" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""For example, we'll be able to rename files atomically,""" start="00:36:56.820" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""diff directories between versions,""" start="00:37:00.900" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and list the peers that we're currently connected to.""" start="00:37:03.420" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Here are some of the Emacs libraries""" start="00:37:11.220" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that hyperdrive.el depends on.""" start="00:37:13.360" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrive.el uses plz to send HTTP requests""" start="00:37:17.540" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to hyper-gateway. Check it out.""" start="00:37:22.400" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It's on GNU ELPA.""" start="00:37:25.699" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""ewoc.el is a built-in library that's documented""" start="00:37:28.560" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in the Emacs Lisp manual under the rather cryptic""" start="00:37:33.640" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""heading &quot;Abstract Display Functions.&quot;""" start="00:37:37.340" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Really, what it does is it allows you""" start="00:37:41.600" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""to map a data model to some display.""" start="00:37:44.520" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""What we do with it in hyperdrive.el is,""" start="00:37:50.000" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in the directory view, we map directory entry items,""" start="00:37:53.860" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""files and directories, to display items.""" start="00:38:02.049" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""And ewoc.el makes it easy to update the display""" start="00:38:04.240" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""whenever the underlying data changes.""" start="00:38:08.701" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrive.el uses persist.el to store""" start="00:38:14.761" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Hyperdrive metadata about known hyperdrives""" start="00:38:21.280" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""as well as version history between sessions,""" start="00:38:25.640" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""so that the data is cached""" start="00:38:29.481" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""when you log out and log back in.""" start="00:38:32.121" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""If you're going to be developing a program in Emacs""" start="00:38:34.961" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for Emacs 29 or later,""" start="00:38:38.721" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I recommend looking at multisession.el,""" start="00:38:41.961" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""because it's built-in, and it has some features""" start="00:38:44.941" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that persist.el doesn't have.""" start="00:38:50.161" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template new="1" text="""Next steps""" start="00:38:57.541" video="mainVideo-hyperdrive" id="subtitle"]]
+
+[[!template text="""Thank you for listening to this talk.""" start="00:38:57.541" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""I hope you get a chance to try out hyperdrive.el.""" start="00:39:00.001" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Here is a link to the hyperdrive.el manual""" start="00:39:03.681" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""in the USHIN hyperdrive.""" start="00:39:08.621" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""When you go to paste this link in,""" start="00:39:11.561" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""you'll need to combine it back into one line.""" start="00:39:14.981" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""This link is available in the hyperdrive.el manual,""" start="00:39:18.921" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""which is available from within a browser,""" start="00:39:22.501" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""at this link on the USHIN website.""" start="00:39:26.661" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""We also have a public conference room that you can join.""" start="00:39:29.821" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It's an XMPP multi-user chat""" start="00:39:32.961" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""that the Sopranica team graciously makes available""" start="00:39:35.521" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""for us to use.""" start="00:39:39.781" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""There's also a Matrix bridge,""" start="00:39:41.621" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""if that's more your cup of tea.""" start="00:39:43.901" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Thank you to the EmacsConf organizers.""" start="00:39:48.660" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""It's been a pleasure to participate,""" start="00:39:52.821" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""and I look forward to hearing the rest of the talks.""" start="00:39:55.161" video="mainVideo-hyperdrive" id="subtitle"]]
+[[!template text="""Have a good day.""" start="00:39:57.614" video="mainVideo-hyperdrive" id="subtitle"]]
+
+
+
+Captioner: bhavin192
+
+<a name="hyperdrive-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: I guess we are now live.""" start="00:00:12.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So Joseph, thanks for being here.""" start="00:00:15.360" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Thanks for talking to the hyperdrive.""" start="00:00:16.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""We already had some, or we already have a lot""" start="00:00:22.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""of questions here. And I guess I would start""" start="00:00:24.360" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""with, let's call it the difficult,""" start="00:00:26.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the most difficult 1. So when you were""" start="00:00:29.119" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""developing hyperdrive for your colleague,""" start="00:00:30.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""what do you, or what have you learned the""" start="00:00:34.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""most?""" start="00:00:34.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: I have learned how much faster and more""" start="00:00:43.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""enjoyable the development of this project can""" start="00:00:46.360" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""be with talented people working by my side,""" start="00:00:51.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""like Jonas and Adam and Prat and Mo,""" start="00:00:55.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it's been really a pleasure to work with""" start="00:00:58.100" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""these folks.""" start="00:00:58.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: So you have started at first on your own and""" start="00:01:04.959" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""then probably pushed it somewhere in open""" start="00:01:07.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""source or how did it develop,""" start="00:01:10.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""your development experience?""" start="00:01:11.740" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: A few years ago, we started looking into""" start="00:01:15.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""using peer-to-peer technology for sharing all""" start="00:01:21.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""kinds of information. And we came across Move""" start="00:01:25.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""SignWeaver, who was recommended to us by a""" start="00:01:29.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""mutual friend. And we started working with""" start="00:01:32.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Move, and then about a year ago,""" start="00:01:33.840" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""we started looking into using Emacs,""" start="00:01:37.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the peer-to-peer software,""" start="00:01:40.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""so that we could make use of all of the""" start="00:01:43.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""powerful things that Emacs already does with""" start="00:01:46.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""org mode and other packages.""" start="00:01:47.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And then we started working with Adam and""" start="00:01:51.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Pratt and Jonas.""" start="00:01:52.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yes.""" start="00:01:54.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: So we are skipping to the next question.""" start="00:01:59.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So to read it out, I use multiple computers""" start="00:02:03.700" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and my partner also would like access to my""" start="00:02:06.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""notes. So, 2 questions at first.""" start="00:02:08.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""First 1, how well would this work with using""" start="00:02:12.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""this to edit my Zettelkasten hyperdrive using""" start="00:02:15.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""multiple computers?""" start="00:02:15.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Hyperdrive is single writer currently.""" start="00:02:21.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So what that means is that if you have a""" start="00:02:24.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrive that you've created,""" start="00:02:25.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""you're the only 1 who can make changes to it.""" start="00:02:28.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And that's limited right now to editing 1""" start="00:02:31.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrive from 1 machine.""" start="00:02:33.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""In theory, you could use the same private key""" start="00:02:38.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and write to it from multiple machines,""" start="00:02:40.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""but you would have to make sure that you sync""" start="00:02:43.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it on both machines and didn't make""" start="00:02:46.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""concurrent writes because then you would fork""" start="00:02:48.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the history of your hyperdrive,""" start="00:02:49.840" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and that would be bad.""" start="00:02:51.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But we've spent a lot of time making links to""" start="00:02:57.740" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrives work well,""" start="00:02:59.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""relative links within hyperdrives to other""" start="00:03:02.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""files inside of your drive.""" start="00:03:03.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So you should be able to,""" start="00:03:05.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""with some exceptions, just take your personal""" start="00:03:10.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""information management set of org files or""" start="00:03:13.360" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""whatever it is that you have,""" start="00:03:14.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and upload them into a hyperdrive if all of""" start="00:03:18.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that is publicly available or would be good""" start="00:03:22.740" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""to share publicly. And you can make that""" start="00:03:27.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""available for other people to link to.""" start="00:03:28.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So you can have multiple different""" start="00:03:30.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrives that link to 1 another.""" start="00:03:32.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: So it's like a huge network of hyperdrives""" start="00:03:35.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""connected to each other in some way.""" start="00:03:38.000" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah.""" start="00:03:39.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: So that's kind of neat and kind of cool.""" start="00:03:41.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""There was a follow-up question or the second""" start="00:03:44.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""part of the question. Okay,""" start="00:03:46.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""then using the same hyperdrive is probably""" start="00:03:48.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""not possible, but interlinking would be the""" start="00:03:51.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""best way to do it. There was a question""" start="00:03:57.500" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""concerning how they should install it.""" start="00:03:59.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So What would be a good way of getting""" start="00:04:01.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrives if you do not want to install npm""" start="00:04:03.580" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and have a binary? Could you compile it with""" start="00:04:06.460" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""denner or rusk or zig or go?""" start="00:04:08.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""CLI alternative tool, I would prefer to""" start="00:04:10.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""download a single binary.""" start="00:04:11.840" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: There's something that Jonas was playing""" start="00:04:17.420" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""around with using Geeks to install Hyper""" start="00:04:20.459" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Gateway. So the way that HyperDrive.el,""" start="00:04:22.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the Emacs package, works right now is similar""" start="00:04:26.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""to the way that the transmission Emacs client""" start="00:04:30.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""for BitTorrent works, where you have a client""" start="00:04:34.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""in Emacs that connects to a daemon that is a""" start="00:04:37.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""separate process that's running on your""" start="00:04:39.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""machine, the transmission daemon.""" start="00:04:41.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But in this case, we have HyperGateway,""" start="00:04:43.500" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""which is running as a daemon on your machine.""" start="00:04:46.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And then hyperdrive.el""" start="00:04:48.180" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""connects to that daemon and sends requests,""" start="00:04:51.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and all of the hyperdrive stuff under the""" start="00:04:53.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hood happens with her gateway.""" start="00:04:55.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But so that package can,""" start="00:04:57.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""or hypergateway, the program can be""" start="00:05:00.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""installed, The easiest way is to just""" start="00:05:02.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""download it from the GitHub releases.""" start="00:05:04.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""You could also use NPM to install it.""" start="00:05:07.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And then the third option that we've been""" start="00:05:09.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""playing around with is Jonas was writing a""" start="00:05:12.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""little script to install it using Geeks,""" start="00:05:14.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""since Geeks now comes with Node 18.""" start="00:05:18.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And so you should be able to install it using""" start="00:05:20.740" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Geeks.""" start="00:05:20.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, thank you. We have 2 people here""" start="00:05:25.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""joined with microphone.""" start="00:05:26.100" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Do we have now any question to Joseph or just""" start="00:05:30.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""here for chilling out.""" start="00:05:32.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I guess it's a no. Plasma,""" start="00:05:41.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""yeah.""" start="00:05:42.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: What about using, having some of the""" start="00:05:46.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""information being private in the hyperdrives.""" start="00:05:47.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's not what we have been focusing on at""" start="00:05:54.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""this point. At this point,""" start="00:05:55.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""what we've been working on is mainly using""" start="00:05:57.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrives for a public forum type tool.""" start="00:06:02.180" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But you could encrypt those files if you""" start="00:06:06.420" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""wanted to. You can also just,""" start="00:06:09.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""a poor man's security would just be to share""" start="00:06:13.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""your HyperDrive link only with those people""" start="00:06:16.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that you want to have access to your drive.""" start="00:06:19.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But the way that it works right now is anyone""" start="00:06:21.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""who has the link to a hyperdrive can access""" start="00:06:23.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""its content. So long as there are peers""" start="00:06:26.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""available on the network who can serve it to""" start="00:06:28.740" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""you.""" start="00:06:28.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: Any follow up question from your side,""" start="00:06:37.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Plasma?""" start="00:06:37.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: I had 1, I'll just have to re-remember it.""" start="00:06:46.720" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: If you remember it, just feel free to""" start="00:06:55.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""interrupt me.""" start="00:06:56.000" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: What about working? I've looked at this""" start="00:06:58.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""before. What about, if I remember correctly,""" start="00:07:03.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it doesn't do as well with large files,""" start="00:07:04.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""so if you're going to store 200 gigs of video""" start="00:07:09.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""files, stuff like IPFS works a lot better,""" start="00:07:12.180" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""or BitTorrent. This is,""" start="00:07:15.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""are you, were you using the,""" start="00:07:17.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""any way of using multiple protocols for stuff""" start="00:07:21.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""like that? Or what were you doing with,""" start="00:07:25.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""or were you just doing the small files with""" start="00:07:27.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the same protocol? Or""" start="00:07:28.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: I would love to see an IPFS client in Emacs""" start="00:07:34.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""as well that could interface with Kubo or""" start="00:07:37.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""some other IPFS daemon and I think that those""" start="00:07:40.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""could work really well together.""" start="00:07:41.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""We mostly have been playing around with""" start="00:07:45.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""sharing relatively small files,""" start="00:07:47.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""up to hundreds of megabytes or maybe a""" start="00:07:52.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""gigabyte. We haven't played around yet with""" start="00:07:55.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrive.el, the Emacs client,""" start="00:07:57.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""testing that with HyperGateway.""" start="00:07:59.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But there may be other experiments that have""" start="00:08:04.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""been done that show that that works well.""" start="00:08:05.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""The main thing is that IPFS uses content""" start="00:08:10.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""addressability to reduce duplication of the""" start="00:08:14.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""content. Whereas in HyperDrive,""" start="00:08:16.620" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""if you upload the same file with the same""" start="00:08:20.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""contents twice, now you have double the""" start="00:08:23.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""content being stored in your HyperDrive.""" start="00:08:25.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It's not deduplicated.""" start="00:08:26.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""You can always clear out part of the history""" start="00:08:30.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""of your hyperdrive But IPFS has really good""" start="00:08:36.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""built-in deduplication whereas hyperdrive""" start="00:08:39.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""does not""" start="00:08:39.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 4]: I have a question.""" start="00:08:44.159" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: What about like commenting on other like if""" start="00:08:47.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""you have a couple of different Hypercore""" start="00:08:50.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""blogs, what about like commenting between""" start="00:08:53.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""them? Like you have some people who have a""" start="00:08:56.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""commenting form on Reddit for their blog""" start="00:08:59.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""posts.""" start="00:08:59.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: So Move SignWeaver has been doing a lot of""" start="00:09:04.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""work recently with the distributed press API""" start="00:09:07.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""to integrate ActivityPub with these""" start="00:09:12.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""peer-to-peer technologies.""" start="00:09:14.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Move can give you more information about""" start="00:09:17.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that. But there is another feature that we'd""" start="00:09:22.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""like to add to hyperdrive.el,""" start="00:09:23.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""which is peer discovery using the swarming""" start="00:09:29.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""feature that HyperCore,""" start="00:09:30.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""HyperSWARM offers, where you'd be able to say""" start="00:09:34.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that my node, my peer-to-peer node is""" start="00:09:38.500" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""interested in Emacs and free software as""" start="00:09:41.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""topics. And those would be 2 different""" start="00:09:43.100" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""topics. I would advertise on the network that""" start="00:09:45.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I'm interested in those topics.""" start="00:09:46.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And I would be able to discover other peers""" start="00:09:49.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""on the network who have also advertised that""" start="00:09:52.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""they're interested in those same topics.""" start="00:09:53.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And then they would tell me,""" start="00:09:56.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hey, here's the public key of my hyperdrive.""" start="00:09:59.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Come check it out. I have posted information""" start="00:10:01.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""about those topics. And so in that way,""" start="00:10:04.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""you'd be able to, in a distributed fashion,""" start="00:10:06.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""discover other peers on the network who are""" start="00:10:09.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""interested in topics that you're interested""" start="00:10:11.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""in.""" start="00:10:11.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: Something that would be useful in addition to""" start="00:10:16.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that idea is like if you had your emacs""" start="00:10:19.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Zettelkasten Publish like let's say you have""" start="00:10:25.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""some private data You make sure that that's""" start="00:10:27.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""scrubbed out before it goes to your hyper""" start="00:10:29.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""core and then you have another part of it""" start="00:10:31.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that gets turned into a website for it's also""" start="00:10:35.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""given to other hyper core clients but you'd""" start="00:10:38.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""rather get the emacs users the org documents""" start="00:10:40.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""then you also publish some of them on a""" start="00:10:44.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""website so everybody as much people can get""" start="00:10:48.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it as possible. And then a way of figuring""" start="00:10:53.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""out who you'd want to do,""" start="00:10:55.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""or if you're an Emacs user,""" start="00:10:57.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""maybe figure out that they're all related to""" start="00:10:59.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""each other, but you want to get the art mode""" start="00:11:01.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""documents because you're using EMAX.""" start="00:11:03.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Yeah.""" start="00:11:05.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: Maybe a side note, we have 4 minutes here on""" start="00:11:10.360" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""before we switch into the next track,""" start="00:11:12.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""just to let you know.""" start="00:11:13.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you. So the hyper drive mirror feature""" start="00:11:17.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that we added, would allow you to selectively""" start="00:11:21.220" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""choose which files you want to share in a""" start="00:11:24.840" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrive. So, with Prot's denote file""" start="00:11:28.500" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""naming scheme or Carl Voigt's file tags""" start="00:11:30.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""naming scheme, you could just specify a""" start="00:11:33.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""regular expression. And you could say,""" start="00:11:35.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I want to share out of my directory of org""" start="00:11:40.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""files, I want to share only those files that""" start="00:11:42.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""have been tagged as public,""" start="00:11:44.220" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""or only those files that have been tagged as""" start="00:11:47.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""emacs and then only those ones would get""" start="00:11:49.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""uploaded into your hyperdrive""" start="00:11:50.720" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: or exclude all in any of the ones that say""" start="00:11:54.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""private""" start="00:11:54.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: yep mike had a question""" start="00:12:01.620" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 4]: yeah I have a question for the hyperdrive.""" start="00:12:05.220" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So I just maybe I missed it and you haven't""" start="00:12:08.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""put a link.""" start="00:12:09.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, Mikhail, we can't hear you.""" start="00:12:16.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: Heard you for a second.""" start="00:12:22.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes?""" start="00:12:28.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 4]: Can someone hear me? Okay,""" start="00:12:29.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I have no idea what happened to my""" start="00:12:31.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""microphone, but now it's back.""" start="00:12:32.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: Now we can. You can see the microphone on the""" start="00:12:34.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""top of the screen. So""" start="00:12:35.840" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 4]: yes, thank you. Okay. I have a question to""" start="00:12:38.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrive. Is the hyperdrive a find on the""" start="00:12:41.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hole punch point, point T O hole Or is it""" start="00:12:46.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""just another hyperdrive?""" start="00:12:47.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's exactly the project that we're using.""" start="00:12:51.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So the HolePunch team has released hyperdrive""" start="00:12:54.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and other hyper core libraries as free""" start="00:12:59.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""software libraries that you can use.""" start="00:13:01.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And so MoV SignWeaver,""" start="00:13:03.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the project that MoV is working on,""" start="00:13:07.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""HyperGateway, depends on those libraries and""" start="00:13:11.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it makes it easy for you to build other""" start="00:13:15.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""clients like hyperdrive.el""" start="00:13:17.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""which connect to the hyperdrive network.""" start="00:13:20.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I hope that answers your question.""" start="00:13:22.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 4]: Yes it does, thank you.""" start="00:13:25.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And what did make you choose hyperdrive for""" start="00:13:28.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""this Emacs project?""" start="00:13:29.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Mainly the fact that the drives are mutable,""" start="00:13:34.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""which makes it distinct from IPFS or""" start="00:13:37.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""BitTorrent, where when you share some piece""" start="00:13:40.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""of content, you're stuck with that static""" start="00:13:44.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""piece of content, which works well for some""" start="00:13:46.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""cases, but if you say you have a Zettelkasten""" start="00:13:49.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""or you have a set of org files that you want""" start="00:13:52.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""to share with people, you want to be able to""" start="00:13:56.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""update those files and have other people pull""" start="00:13:58.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""those updates from you.""" start="00:13:59.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And so HyperDrive allows you to have these""" start="00:14:02.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""mutable sets of files that you can share and""" start="00:14:05.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""use the same link for other peers to pull the""" start="00:14:08.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""latest changes from you.""" start="00:14:09.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Also, it's versioned, as we showed in the""" start="00:14:11.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""video, which is really helpful for having""" start="00:14:15.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""community deliberations and community""" start="00:14:17.500" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""discussions where you want to be able to""" start="00:14:19.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""reference some something that somebody said""" start="00:14:22.420" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""in the past and not have it get deleted or""" start="00:14:26.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""changed or something.""" start="00:14:26.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 0]: We are now switching to talk So just for""" start="00:14:30.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""letting you know if you want to say something""" start="00:14:32.720" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""now. Too late. The BB room is still open,""" start="00:14:37.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""so you can still discuss.""" start="00:14:38.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""There's also a lot going on on the pad.""" start="00:14:41.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But you can also discuss here inside and""" start="00:14:47.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""answer the pet questions maybe later.""" start="00:14:49.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, there are good questions.""" start="00:14:52.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I'll go ahead, please.""" start="00:14:58.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: continuing here on the pad?""" start="00:15:01.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Are we I can hear you.""" start="00:15:04.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 5]: Yeah, so the question I had on the pad was,""" start="00:15:07.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""would it make sense in any sense to put a""" start="00:15:10.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""FUSE interface or put the POSIX semantics in""" start="00:15:13.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""front of this at some point?""" start="00:15:14.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, that would be cool.""" start="00:15:17.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It's kind of a similar question to any plans""" start="00:15:20.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""for a Tramp interface.""" start="00:15:21.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""There was a project that the HyperCore""" start="00:15:25.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""HolePunch team was working on a year or more""" start="00:15:31.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""ago that provided a FUSE interface.""" start="00:15:34.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And I think it didn't pan out.""" start="00:15:39.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But it's a good idea. Same with the Tramp""" start="00:15:43.580" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""interface. It seems like a good idea that""" start="00:15:46.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""would make it possible to more easily hook""" start="00:15:51.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""into the built-in Emacs functionality for,""" start="00:15:55.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""for example, like incremental file name""" start="00:16:01.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""completion, which we don't currently support""" start="00:16:03.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""in Hyperdrive.el. So I'd love to have""" start="00:16:09.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""feedback and design ideas for those projects.""" start="00:16:12.720" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 5]: Yeah, there's just Everything in Emacs just""" start="00:16:15.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""sort of assumes the file system is there and""" start="00:16:17.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""usable in that way. That's all.""" start="00:16:20.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, it's a good idea.""" start="00:16:23.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: An idea for the privacy type thing is""" start="00:16:28.180" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Syncthing links. Because I think you can set""" start="00:16:33.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""up Syncthing in such a way that you have the""" start="00:16:36.100" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""private networks that other people can't""" start="00:16:38.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""actually get access to.""" start="00:16:40.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: I did not know that that was possible with""" start="00:16:45.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Syncthing. I'll have to look into that.""" start="00:16:47.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: At least I think it is anyway,""" start="00:16:48.840" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""because yeah, there's ways you can explicitly""" start="00:16:53.000" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""authorize devices. Yeah,""" start="00:16:56.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""right. I think you could actually set it up""" start="00:17:00.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""in such a way that you can have private stuff""" start="00:17:03.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and links, and then that might be a way that""" start="00:17:06.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""you can get a completely distributed""" start="00:17:10.119" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Zettelcast and with private notes.""" start="00:17:12.720" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. Good idea. There's a question in the""" start="00:17:22.339" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""pad about DATRS, a Rust version of""" start="00:17:26.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""HyperDrive. I had not heard of that,""" start="00:17:28.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""so I'll have to look into that.""" start="00:17:30.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""If you had your druthers,""" start="00:17:33.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""what would make your work on hyperdrive.dl""" start="00:17:34.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""easier? It's been a lot of fun.""" start="00:17:40.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I would love to have more user feedback.""" start="00:17:42.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""That would be my wish.""" start="00:17:45.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I tried putting a git repo in HyperDrive.""" start="00:17:50.500" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Does it work well? I don't think that would""" start="00:17:53.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""work well because, as I mentioned a moment a""" start="00:17:56.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""few moments ago, the data that you put into a""" start="00:18:00.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrive is duplicated.""" start="00:18:00.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So if you had the whole work tree in""" start="00:18:06.300" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperdrive every time you made a change and""" start="00:18:08.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""saved it, it would be duplicated.""" start="00:18:12.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""If you had just a bare repository,""" start="00:18:15.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I don't know, try it.""" start="00:18:18.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: They're trying to solve the same problem,""" start="00:18:21.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""but 1 of the optimizations they have for""" start="00:18:23.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""being able to view a whole bunch of people's""" start="00:18:25.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""data is they made shallow clones a lot""" start="00:18:28.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Would you phrase that again,""" start="00:18:34.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""please?""" start="00:18:35.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: easier. Right? So like Git and Hypercore,""" start="00:18:39.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""1 of the things they do is they allow you to""" start="00:18:42.720" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""have a whole history of every single change""" start="00:18:46.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""for a dataset Zettelkasten project.""" start="00:18:51.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But 1 of the optimizations Hypercore did to""" start="00:18:56.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""make it more network web friendly is they""" start="00:19:02.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""made the shallow clones work a lot better and""" start="00:19:04.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""a lot... Yeah, they made that work a lot""" start="00:19:07.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""better so you don't have to download every""" start="00:19:08.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""single thing for every single project.""" start="00:19:11.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And because they both are implementing the""" start="00:19:14.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""delta upgrades, I don't see how they could""" start="00:19:17.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""work really well together.""" start="00:19:19.000" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""At least from what it looked like to me.""" start="00:19:21.780" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It can't hurt to experiment.""" start="00:19:25.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: But yeah, I would agree with you.""" start="00:19:28.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Is data transferred between nodes in the""" start="00:19:35.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""clear or encrypted? That's a good question.""" start="00:19:38.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I don't know how it's encrypted.""" start="00:19:41.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I don't, I wouldn't recommend sharing""" start="00:19:47.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""sensitive data with hyperdrive right now?""" start="00:19:53.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I would recommend if you want to play with""" start="00:19:55.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it, have it be something where you're""" start="00:19:57.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""expecting the data to be shared.""" start="00:20:00.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Is there a searchable catalog?""" start="00:20:03.460" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: It's also the data in transport versus data""" start="00:20:06.700" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""at rest. I'm pretty sure the data at rest""" start="00:20:08.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""would not be encrypted.""" start="00:20:09.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Right. You can separate that into those 2""" start="00:20:14.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""questions.""" start="00:20:14.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. Right. Is there a searchable catalog""" start="00:20:19.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""of hyper drives? So that's a thing,""" start="00:20:23.000" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""an idea that we've been a distributed trust""" start="00:20:32.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""network for discovering peers that are""" start="00:20:38.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""trusted for a particular topic.""" start="00:20:41.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And we actually made a demo video of a""" start="00:20:47.220" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""previous prototype that's available on the""" start="00:20:51.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Ashen hyperdrive that you can watch that""" start="00:20:54.580" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""shows the basic idea. But the idea is just""" start="00:20:58.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that you would have a list of peers that you""" start="00:21:02.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""think are worth listening to or worth reading""" start="00:21:07.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""for a particular topic.""" start="00:21:09.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And those peers would have peers that they""" start="00:21:11.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""think are worth listening to for that same""" start="00:21:14.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""topic. And so you would say,""" start="00:21:16.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""if I'm interested in Emacs,""" start="00:21:17.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I want to see all the peers that I trust for""" start="00:21:21.220" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the topic Emacs. And if,""" start="00:21:23.700" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""say, Adam Porter shows up in my list and Adam""" start="00:21:27.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Porter trusts Jonas and Jonas trusts Pratt,""" start="00:21:30.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I would be able to read hyperdrive""" start="00:21:33.420" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""information from all of those people by""" start="00:21:36.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""looking at the indirect relationships that I""" start="00:21:41.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""have by following the chain of relationships,""" start="00:21:43.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""kind of like a web of trust.""" start="00:21:44.760" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And so it would also allow you to have a""" start="00:21:49.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""network of peers that you trust to block""" start="00:21:53.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""other people on your behalf.""" start="00:21:54.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So it would be useful for subjective""" start="00:21:57.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""moderation where you can remove spam and bad""" start="00:22:02.220" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""actors from the people that you follow""" start="00:22:04.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""without having to delegate that powerful""" start="00:22:08.940" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""responsibility to some third party in a""" start="00:22:13.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""permanent way where that third party might""" start="00:22:15.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""abuse that power. So it allows you to share""" start="00:22:23.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""your list of trusted peers and your list of""" start="00:22:26.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""blocked peers with other people in a""" start="00:22:29.180" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""peer-to-peer way.""" start="00:22:29.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: Have you ever looked at GNUnet?""" start="00:22:38.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It kind of does some...""" start="00:22:40.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It's trying to do something weird with the""" start="00:22:45.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""internet where it redesigns it from the""" start="00:22:47.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""ground up to be peer-to-peer,""" start="00:22:51.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""local first, or something like that.""" start="00:22:53.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: I would like to know more about GNUnet.""" start="00:22:58.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Yes. I have heard of it,""" start="00:23:01.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""but I haven't really researched it.""" start="00:23:03.620" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""If you edit a file on the hyperdrive,""" start="00:23:09.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""then edit the same file on the local mirror,""" start="00:23:12.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""how is the conflict handled when you sync the""" start="00:23:15.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""mirror again? So I think if I understand the""" start="00:23:21.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""question, the answer is that you can't edit""" start="00:23:29.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the file in 2 different places,""" start="00:23:32.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I think is the answer to the question.""" start="00:23:36.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""If you were to manually copy the private key""" start="00:23:41.220" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""from 1 machine onto another machine,""" start="00:23:44.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""then you could cause a conflict,""" start="00:23:51.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""like a merge conflict,""" start="00:23:54.400" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""but you would have to go out of your way to""" start="00:23:58.100" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""do that. And It's not handled.""" start="00:24:00.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I think the Hypercore Hole Punch team has""" start="00:24:03.580" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""another project that they're working on that""" start="00:24:05.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""would, it's called AutoBase,""" start="00:24:07.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""that would merge those conflicts.""" start="00:24:09.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""But we're not using that right now.""" start="00:24:13.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And I think it's in early development still.""" start="00:24:16.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So there might be a solution in the future.""" start="00:24:19.860" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: What's a surprising change of thoughts or""" start="00:24:32.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""what's the most interesting thing you weren't""" start="00:24:36.900" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""expecting to discover while developing this?""" start="00:24:39.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Like change of thoughts on how you write or I""" start="00:24:44.640" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""don't know.""" start="00:24:45.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, I'm relatively new to Emacs and to Lisp""" start="00:24:59.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and really to programming in general.""" start="00:25:01.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And so it's been a fantastic learning""" start="00:25:04.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""experience. Adam, Alpha Papa,""" start="00:25:08.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Adam and I have been doing a lot of pair""" start="00:25:11.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""programming sessions where we work together""" start="00:25:12.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and I get to learn from him.""" start="00:25:15.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""And we've had meetings with Jonas and Prat""" start="00:25:19.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""and meetings with Mauve where it's a""" start="00:25:23.560" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""fantastic learning experience for me to""" start="00:25:25.520" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""discover how to build software in an""" start="00:25:30.660" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""efficient and intelligent way.""" start="00:25:32.820" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It's a huge pleasure. If there are no more""" start="00:25:40.580" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""questions, I just wanted to encourage""" start="00:25:43.320" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""everyone to try it out and to let us know""" start="00:25:48.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""what you think. It would be really helpful to""" start="00:25:50.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""have some feedback from people who are using""" start="00:25:54.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it in new and creative ways that we haven't""" start="00:25:57.240" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""anticipated.""" start="00:25:57.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 6]: Hi, I'd just like to say that I tried this""" start="00:26:02.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""new thing called hyperdrive.el""" start="00:26:02.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""today, and I think it's pretty cool.""" start="00:26:05.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 2]: Sorry, that was somebody else.""" start="00:26:12.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Hey Joseph, how's it going?""" start="00:26:13.440" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Oh, talk today.""" start="00:26:15.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: Oh, thanks. Wonderful.""" start="00:26:16.420" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: Who's that? Oh, hey. Well,""" start="00:26:19.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I'm going to say goodbye.""" start="00:26:34.060" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Thank you. And thank you for your questions,""" start="00:26:37.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: I know that""" start="00:26:39.680" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 1]: PlasmaStrike. I've met you before.""" start="00:26:40.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Appreciate your questions,""" start="00:26:42.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""your thoughts.""" start="00:26:42.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, by the way, Joseph,""" start="00:26:50.380" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""we have our, our first,""" start="00:26:53.000" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I don't know if our first new user,""" start="00:26:55.120" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""but we have the first link being shared,""" start="00:26:57.280" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""to hyperdrive file in the chat and I loaded""" start="00:27:01.160" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""it and it works. And it's funny too.""" start="00:27:03.080" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It's worth looking at.""" start="00:27:03.880" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""So. Oh, I think it's frozen.""" start="00:27:09.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""I don't know if anybody can hear me.""" start="00:27:11.580" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: I can.""" start="00:27:12.720" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay, cool. The browser is frozen.""" start="00:27:15.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""It's it's not, okay. Just unfroze.""" start="00:27:19.020" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""Anyway. All right. Well,""" start="00:27:21.740" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""By the way, I enjoyed your talks about""" start="00:27:24.000" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""hyperbole. I'm going to rewatch those later""" start="00:27:26.260" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""when I get a chance. It was nice to meet you,""" start="00:27:28.040" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""too. Bob is a really great guy to work with.""" start="00:27:31.100" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: Definitely a lot of interesting people.""" start="00:27:38.800" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 2]: I owe him 1. Yes, sir.""" start="00:27:40.200" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""All right, you have a good day,""" start="00:27:41.580" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 3]: Will do, I like the insistence on local""" start="00:27:45.140" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""first. Feels like it's a good dovetail with""" start="00:27:48.740" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""the hyper core""" start="00:27:49.540" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""[Speaker 2]: enjoy the conference. Yeah,""" start="00:27:51.180" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""yeah, I think there's a lot of a lot of""" start="00:27:54.960" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""interesting possibilities to build on this we""" start="00:27:57.980" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""have some plans that we Will get to you later""" start="00:28:01.340" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""this well in the coming year And we'll see""" start="00:28:05.600" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""where the hyperdrive people,""" start="00:28:07.480" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""you know, upstream how they develop it as""" start="00:28:09.920" video="qanda-hyperdrive" id="subtitle"]]
+[[!template text="""well and yeah, so exciting times.""" start="00:28:14.340" video="qanda-hyperdrive" id="subtitle"]]
+
+Questions or comments? Please e-mail [joseph@ushin.org](mailto:joseph@ushin.org?subject=Comment%20for%20EmacsConf%202023%20hyperdrive%3A%20hyperdrive.el%3A%20Peer-to-peer%20filesystem%20in%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/hyperdrive-before.md b/2023/info/hyperdrive-before.md
new file mode 100644
index 00000000..944b9184
--- /dev/null
+++ b/2023/info/hyperdrive-before.md
@@ -0,0 +1,20 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+Actually a general-audience talk; just on the development track for scheduling purposes
+
+[[!toc ]]
+Format: 41-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="hyperdrive-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 40:03 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--intro.webm">Download --intro.webm (996kB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--main.webm">Download --main.webm (149MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/9wLA55XACiGnS3nNBNwsV5">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="hyperdrive-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="hyperdrive-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--answers.opus"></audio></div><div></div>Duration: 28:15 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--answers.json">Download --answers.json (1.1MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--answers.opus">Download --answers.opus (9MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-hyperdrive--hyperdriveel-peertopeer-filesystem-in-emacs--joseph-turner--answers.webm">Download --answers.webm (48MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/hyperdrive-nav.md b/2023/info/hyperdrive-nav.md
new file mode 100644
index 00000000..9634dd75
--- /dev/null
+++ b/2023/info/hyperdrive-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/gc">emacs-gc-stats: Does garbage collection actually slow down Emacs?</a>
+Next by track: <a href="/2023/talks/lspocaml">Writing a language server in OCaml for Emacs, fun, and profit</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/koutline-after.md b/2023/info/koutline-after.md
new file mode 100644
index 00000000..a48d8b9d
--- /dev/null
+++ b/2023/info/koutline-after.md
@@ -0,0 +1,128 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="koutline-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""Today I will share a nice workflow I have""" start="00:00:03.340" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""developed for stream of consciousness""" start="00:00:04.400" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""journaling. The goal of stream of""" start="00:00:06.560" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""consciousness journaling is to get your""" start="00:00:08.080" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""thoughts on the screen as effectively and""" start="00:00:09.960" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""efficiently as possible.""" start="00:00:10.679" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""These 2 features when combined reinforce each""" start="00:00:12.780" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""other and let you hear yourself think in a""" start="00:00:14.860" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""very efficient manner,""" start="00:00:15.960" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""increasing the number,""" start="00:00:17.220" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""quality, and types of thoughts you can get""" start="00:00:18.960" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""out of it. The tools I will be using for this""" start="00:00:21.100" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""are Emacs, KL line from the Hyperbolt""" start="00:00:22.680" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""package, centered cursor mode,""" start="00:00:24.080" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Olivetti mode, and optionally,""" start="00:00:25.119" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""voice to text. Additionally,""" start="00:00:26.820" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""you can see my commands and key bindings on""" start="00:00:28.939" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""the right. I will start off by showing a""" start="00:00:31.500" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""typing demo""" start="00:00:32.119" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""about how my day went.""" start="00:00:48.120" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""There are certain functionalities for stream""" start="00:01:12.900" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""of consciousness journaling that are desired""" start="00:01:14.640" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""or detrimental to the process.""" start="00:01:15.900" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Stream of thought functionalities,""" start="00:01:17.040" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""things I want. The ability to optionally use""" start="00:01:26.000" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""speech to text. I do this by using""" start="00:01:27.720" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Nerdictation, a Python program.""" start="00:01:29.380" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""I am still experimenting with this as it""" start="00:01:32.320" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""changes the quality and types of thoughts you""" start="00:01:34.120" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""can get out of stream of consciousness""" start="00:01:35.280" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""journaling. I am still looking for better""" start="00:01:37.680" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""ways of doing this. The ability to easily""" start="00:01:39.900" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""organize and split off my thoughts by""" start="00:01:41.680" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""creating and manipulating outlines.""" start="00:01:43.040" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Creating them in real time is needed for live""" start="00:01:46.280" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""journaling and allows for later editing""" start="00:01:48.240" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""really easily. I showed off some of these""" start="00:01:53.140" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""commands before. To just write words without""" start="00:01:56.479" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""worrying about format.""" start="00:01:57.540" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""To not worry about scrolling,""" start="00:02:00.160" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""I use centered cursor mode.""" start="00:02:01.640" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""To not worry about lines,""" start="00:02:05.200" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""I use the KOutline auto-filling""" start="00:02:06.960" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""functionality. To not worry about pressing""" start="00:02:09.360" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Enter, and to have a nice looking journal""" start="00:02:11.400" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""with hard returns afterwards.""" start="00:02:12.660" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Manually filling is needed with spacing when""" start="00:02:19.060" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""it is wrong. I do that with metaJ.""" start="00:02:22.160" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Counterproductive functionality.""" start="00:02:30.680" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Spell checking. While this is useful for""" start="00:02:33.480" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""editing, it is not useful for stream of""" start="00:02:35.500" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""consciousness journaling.""" start="00:02:36.220" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Having this on or off conditionally while you""" start="00:02:39.020" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""are live journaling is a killer feature of""" start="00:02:40.760" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Emacs. Reading slash editing the journal.""" start="00:02:48.040" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Part of the value proposition of this is to""" start="00:02:50.240" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""listen to what you are thinking,""" start="00:02:51.420" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""so this is needed functionality.""" start="00:02:52.680" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""You cannot listen very well when you are""" start="00:02:55.580" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""speaking, and the converse is true as well.""" start="00:02:57.360" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""You cannot speak very well when you are""" start="00:02:59.240" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""listening, decreasing what you can get out of""" start="00:03:01.280" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""it. Features when editing or listening to""" start="00:03:04.120" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""your journal. Spell checking.""" start="00:03:05.200" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""I use the Spackage Spellfoo,""" start="00:03:07.780" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""but there are others. I use multiple panes to""" start="00:03:20.740" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""read and edit. I use a combination of follow""" start="00:03:25.040" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""mode and some of my custom functions.""" start="00:03:27.940" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""These are what I use right here.""" start="00:03:31.860" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""The ability to change the view specs of the""" start="00:03:53.360" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""document. Stuff like, toggling blank lines.""" start="00:03:59.340" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Show the first heading of everything.""" start="00:04:08.300" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""You can also export the KOutline pages to""" start="00:04:18.620" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""HTML for other people to read or another way""" start="00:04:21.560" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""to look at it. Easy manipulation of cells.""" start="00:04:29.440" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""You use the Alt and arrow keys just like in""" start="00:04:34.040" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Orm mode to delete cells easily.""" start="00:04:37.200" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""The ability to manually reformat KL9 cells in""" start="00:04:47.020" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""addition to auto formatting of the cells for""" start="00:04:49.540" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""when spacing looks off.""" start="00:04:50.860" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""MetaJ is nice, and auto-filling is also nice""" start="00:04:53.900" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""for having multiple pages.""" start="00:04:54.920" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Why do I use these tools versus other common""" start="00:04:58.660" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""tools? K-Outline vs. Playtext Writing in""" start="00:05:06.060" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""outlines helps me easily structure my""" start="00:05:08.460" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""thoughts in a way that is easy to write,""" start="00:05:09.960" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""read, and edit. Org Mode vs.""" start="00:05:12.500" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""K-Outline Org Mode gives me lots of ways to""" start="00:05:15.360" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""structure my journal slash document.""" start="00:05:17.120" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""While this is great for a lot of things,""" start="00:05:19.600" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""for stream of consciousness journaling,""" start="00:05:21.540" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""this causes decision fatigue and loss of""" start="00:05:24.960" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""concentration. Types of questions I get when""" start="00:05:30.320" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""structuring an org-mode document?""" start="00:05:31.960" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Do I keep everything in a heading or below""" start="00:05:35.080" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""the heading in paragraphs?""" start="00:05:36.100" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""How do I handle new lines?""" start="00:05:38.080" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Do I just use visual line mode with no hard""" start="00:05:40.240" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""returns? Or if I make hard returns,""" start="00:05:42.520" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""on what line number do I do them?""" start="00:05:44.800" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""More visual line nodes in org-mode documents""" start="00:05:50.080" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""like a potential org ID in your property""" start="00:05:52.660" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""stores. While a lot of the above is really""" start="00:05:57.720" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""nice if you are making something like a""" start="00:05:59.880" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""website to present to other people,""" start="00:06:01.640" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""these features are counterproductive to""" start="00:06:04.080" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""stream-of-thought journaling.""" start="00:06:05.040" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Org mode is also top-notch for other things""" start="00:06:08.900" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""such as GTD. I don't think org mode has""" start="00:06:11.780" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""bindings to create child,""" start="00:06:13.820" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""same-level, and parent cells.""" start="00:06:15.460" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""Centered cursor mode versus scroll lock mode""" start="00:06:19.340" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""built-in. Scroll lock mode changes its place""" start="00:06:22.640" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""when you move the cursor from the bottom or""" start="00:06:28.180" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""the top of the page. Centered cursor mode""" start="00:06:30.080" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""will reliably fix itself to the center when""" start="00:06:33.420" video="mainVideo-koutline" id="subtitle"]]
+[[!template text="""the cursor position is not there.""" start="00:06:36.280" video="mainVideo-koutline" id="subtitle"]]
+
+Questions or comments? Please e-mail [plasmastrike@voiddragon.me](mailto:plasmastrike@voiddragon.me?subject=Comment%20for%20EmacsConf%202023%20koutline%3A%20Using%20Koutline%20for%20stream%20of%20thought%20journaling)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/koutline-before.md b/2023/info/koutline-before.md
new file mode 100644
index 00000000..f6b7cc81
--- /dev/null
+++ b/2023/info/koutline-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 7-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="koutline-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 06:44 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--main.opus">Download --main.opus (4.5MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--main.webm">Download --main.webm (23MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-koutline--using-koutline-for-stream-of-thought-journaling--matthew-jorgensen-plasmastrike--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/vV7qtK176DVE6RLXrZ18Ee">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/koutline-nav.md b/2023/info/koutline-nav.md
new file mode 100644
index 00000000..247cf825
--- /dev/null
+++ b/2023/info/koutline-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/hyperamp">Top 10 ways Hyperbole amps up Emacs</a>
+Next by track: <a href="/2023/talks/parallel">Parallel text replacement</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/lem-after.md b/2023/info/lem-after.md
new file mode 100644
index 00000000..cf100dc9
--- /dev/null
+++ b/2023/info/lem-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20lem%3A%20How%20to%20build%20an%20Emacs%202%3A%20Revenge%20of%20the%20Lem)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/lem-before.md b/2023/info/lem-before.md
new file mode 100644
index 00000000..af9cef3a
--- /dev/null
+++ b/2023/info/lem-before.md
@@ -0,0 +1,4 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/lem-nav.md b/2023/info/lem-nav.md
new file mode 100644
index 00000000..85b81cfd
--- /dev/null
+++ b/2023/info/lem-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/flat">A modern Emacs look-and-feel without pain</a>
+Next by track: <a href="/2023/talks/lspocaml">Writing a Language Server In OCaml for Emacs, fun, and profit</a>
+Track: <span class="sched-track gen">gen</span>
+</div>
diff --git a/2023/info/llm-after.md b/2023/info/llm-after.md
new file mode 100644
index 00000000..5a020a0b
--- /dev/null
+++ b/2023/info/llm-after.md
@@ -0,0 +1,1144 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="llm-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Intro to the Talk""" start="00:00:00.000" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""Hello, I'm Andrew Hyatt and I'm going to talk to you""" start="00:00:00.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""about large language models and how""" start="00:00:04.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they relate to Emacs.""" start="00:00:06.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I'm going to talk to you about the technology""" start="00:00:11.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and how we're going to use it in Emacs.""" start="00:00:14.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There'll be demos and there'll be talks about,""" start="00:00:18.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'll finish up by kind of talking about where""" start="00:00:21.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think this should go in the future.""" start="00:00:22.880" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""What are LLMs?""" start="00:00:25.080" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""So to start off with, let's just talk like,""" start="00:00:25.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I just want to make sure everyone's on the same page.""" start="00:00:28.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What are large language models?""" start="00:00:29.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Not everyone may be caught up on this.""" start="00:00:30.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Large language models are a way... Basically,""" start="00:00:34.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the current versions of large language models""" start="00:00:39.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""are all based on the similar architecture""" start="00:00:43.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""called the transformer.""" start="00:00:44.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's just an efficient way to train and produce output.""" start="00:00:45.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So these things are basically models""" start="00:00:48.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that predict the next word or something like that.""" start="00:00:51.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And they're trained on an enormous corpus of information""" start="00:00:58.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and they get extremely good""" start="00:01:02.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""at predicting the next word.""" start="00:01:04.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And from that basic ability, you can train""" start="00:01:06.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""through further tuning from human input,""" start="00:01:09.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""human ratings and things like that.""" start="00:01:12.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can train different models based on that""" start="00:01:13.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that will do question answering.""" start="00:01:17.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And this is how basically ChatGPT works.""" start="00:01:18.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's a base LLM, like GPT.""" start="00:01:22.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then you have a chat version of that,""" start="00:01:25.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is just trained to just... You give""" start="00:01:27.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it a prompt, like what do you want it to do?""" start="00:01:29.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it gives you an output that does what you told it to do,""" start="00:01:32.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or at least attempts to do it.""" start="00:01:37.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Those are the power of large language models is""" start="00:01:39.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they're extremely, extremely impressive.""" start="00:01:42.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Certainly this is, in AI,""" start="00:01:45.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this has been the biggest thing to happen""" start="00:01:47.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""probably in my lifetime,""" start="00:01:49.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or at least my lifetime as my working lifetime.""" start="00:01:51.560" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Power of LLMs (Magit Demo)""" start="00:01:56.360" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""So let me give you a demonstration of""" start="00:01:56.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what kinds of stuff it could do in Emacs.""" start="00:02:02.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So here I have a Emacs file.""" start="00:02:06.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is my Emacs init file.""" start="00:02:09.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I have a change.""" start="00:02:12.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's commit that change.""" start="00:02:13.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And, you know, I don't like writing commit messages,""" start="00:02:16.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so I can generate it.""" start="00:02:19.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it did an actually just looking.""" start="00:02:23.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So all it does is it's looking, it's just reading the diff.""" start="00:02:27.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm just feeding it the diff with some instructions.""" start="00:02:29.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it is this a incredible commit message?""" start="00:02:32.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not bad, actually.""" start="00:02:37.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can see that it actually has really extracted""" start="00:02:39.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the meaning of what I'm doing and has written""" start="00:02:42.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a reasonably good commit message.""" start="00:02:46.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Now I have to edit it because this is not quite correct.""" start="00:02:48.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it's kind of impressive how good it is.""" start="00:02:53.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And my editing, it's kind of easier for me to edit this""" start="00:02:55.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""than just to write a new one.""" start="00:03:00.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And quite often it's good enough to just submit as is.""" start="00:03:01.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is kind of, you know, you could say""" start="00:03:04.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this is just commit messages.""" start="00:03:08.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could respond to emails.""" start="00:03:09.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could, you know, using your own custom instructions""" start="00:03:10.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""about what you want your email to say.""" start="00:03:15.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It'll write the email for you.""" start="00:03:17.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It could do like this""" start="00:03:19.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs is a way to interact with buffers.""" start="00:03:19.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This could basically just output text.""" start="00:03:22.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So it's super useful for""" start="00:03:24.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""understanding something and outputting text based on that,""" start="00:03:27.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is just useful for Emacs.""" start="00:03:30.320" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Drawbacks of LLMs (regex demo)""" start="00:03:32.240" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""So the drawback is, yeah, it's good,""" start="00:03:32.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's not that reliable.""" start="00:03:39.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you'd think it's very easy to get caught up in like,""" start="00:03:43.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""oh my gosh, like this is so powerful.""" start="00:03:45.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I bet it could work this, whatever idea could work.""" start="00:03:47.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And these ideas, like they almost can.""" start="00:03:50.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""For example, I was thinking, you know what I could do?""" start="00:03:52.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't like writing regexes.""" start="00:03:55.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Why can't I have a regex replace that's powered by LLMs?""" start="00:03:57.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that way I could give just an instruction""" start="00:04:01.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to regex replace.""" start="00:04:03.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And so for example, I could do Emacs LLM regex replace.""" start="00:04:07.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This is not checked in anywhere.""" start="00:04:12.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are just my own kind of private functions.""" start="00:04:12.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""My description lowercase all the org headings.""" start="00:04:17.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's see if it works.""" start="00:04:19.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It might work.""" start="00:04:20.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""No, it doesn't work.""" start="00:04:21.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So if I, I'm not going to bother to show you""" start="00:04:22.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what it actually came up with, but it's something,""" start="00:04:26.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""if you looked at it, it'd be like, wow,""" start="00:04:28.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this is very close to being...""" start="00:04:29.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It looks like it should work, but it doesn't.""" start="00:04:31.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Okay.""" start="00:04:34.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not quite good enough to get it right.""" start="00:04:35.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it's possible that perhaps by giving it""" start="00:04:38.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a few examples of, or explaining more""" start="00:04:41.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what makes Emacs regexes different.""" start="00:04:43.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It could do a better job""" start="00:04:46.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and maybe could solve these problems,""" start="00:04:47.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's always a little bit random.""" start="00:04:49.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You're never quite sure what you're going to get.""" start="00:04:50.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is the drawback.""" start="00:04:52.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Like there's a lot of things that look like you could do it,""" start="00:04:54.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but when it actually comes down to trying it,""" start="00:04:58.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's surprisingly hard.""" start="00:05:01.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And, you know, and whatever you're doing,""" start="00:05:03.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's surprisingly hard to get something""" start="00:05:06.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is repeatably, that's, that is always good.""" start="00:05:09.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So yeah, that's currently the problem.""" start="00:05:13.880" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Embeddings""" start="00:05:20.120" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""So I want to talk about embeddings.""" start="00:05:20.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They're another thing that LLMs offer""" start="00:05:23.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and that are extremely useful.""" start="00:05:26.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They are, what they do is they encode from""" start="00:05:28.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a input text that could be a word, a sentence,""" start="00:05:33.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a small document.""" start="00:05:38.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It encodes a vector about what the meaning,""" start="00:05:42.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the semantic meaning of that is.""" start="00:05:45.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That means you could, something that is,""" start="00:05:46.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""uses completely different words,""" start="00:05:51.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but is basically talking about the same thing,""" start="00:05:52.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""perhaps in a different language, should be pretty close""" start="00:05:54.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as a vector to the other vector.""" start="00:05:57.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You know, as long as they're similarly semantic things,""" start="00:06:02.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""like the words""" start="00:06:05.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""highway and Camino are two different words.""" start="00:06:12.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They mean the same thing.""" start="00:06:18.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They should have very similar embeddings.""" start="00:06:19.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So it is a way to kind of encode this""" start="00:06:21.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and then you could use this for search.""" start="00:06:25.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""For example, I haven't tried to do this yet,""" start="00:06:26.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you could probably just make an embedding""" start="00:06:28.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""for every paragraph in the Emacs manual""" start="00:06:31.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and the Elisp manual.""" start="00:06:33.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then, and then there's a very standard technique.""" start="00:06:36.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just... You find that you have a query,""" start="00:06:39.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""oh, how do I do whatever, whatever in Emacs again?""" start="00:06:43.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you could, you just find that 20 things""" start="00:06:45.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that are closest to whatever you're""" start="00:06:49.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""trying to... the embedding of your query.""" start="00:06:50.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You send those things to the LLM, as you know,""" start="00:06:51.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""with the original query,""" start="00:06:55.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you're basically telling the--asking the LLM,""" start="00:06:57.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""look, the user is trying to do this.""" start="00:06:59.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Here's what I found in the Emacs manual.""" start="00:07:01.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's on the Elisp manual.""" start="00:07:03.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's close to what they're trying to do.""" start="00:07:04.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So can you kind of just tell the user what to do?""" start="00:07:07.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And from this, and you could say,""" start="00:07:12.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""just use things from this, you know, that I give you.""" start="00:07:14.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Don't just make up your own idea.""" start="00:07:17.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You know, don't use your own ideas,""" start="00:07:20.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because sometimes it likes to do that""" start="00:07:21.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and those things are wrong.""" start="00:07:23.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you could try to, you know, do this and you get,""" start="00:07:24.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could get quite good results using this.""" start="00:07:26.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So no one has done this yet,""" start="00:07:28.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but that should not be hard to do.""" start="00:07:30.000" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Image Generation""" start="00:07:32.800" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""Image generation is something that's, you know,""" start="00:07:32.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's not quite an LLM in the sense of...""" start="00:07:34.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are... It's a different technology,""" start="00:07:38.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but these things are kind of packaged together""" start="00:07:43.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in a sense.""" start="00:07:48.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you'll see that when I talk about Emacs packages,""" start="00:07:49.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a lot of them bundle image generation""" start="00:07:51.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and large language models.""" start="00:07:54.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You know, the APIs are often bundled together by providers.""" start="00:07:55.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And the general idea is it's kind of similar""" start="00:07:59.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because it's very similar to large, you know,""" start="00:08:02.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""doing a chat thing where you, you know,""" start="00:08:04.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the chat is like, you give it a text request,""" start="00:08:06.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""like write me a sonnet about, you know,""" start="00:08:09.761" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the battle between Emacs and vi.""" start="00:08:12.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it could, it could do it.""" start="00:08:14.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It could do a very good job of that.""" start="00:08:15.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But you could also say, you know,""" start="00:08:17.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""draw me a picture of Emacs and vi as boxers,""" start="00:08:22.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as a character-character boxing in a ring,""" start="00:08:27.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""like a, you know, political cartoon style.""" start="00:08:30.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it can do that as well.""" start="00:08:32.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And so you could basically think of this""" start="00:08:35.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as just sort of... it's kind of the""" start="00:08:37.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""same thing with what you're doing""" start="00:08:39.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""with large language models,""" start="00:08:42.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but instead of outputting a text,""" start="00:08:43.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you're outputting a picture.""" start="00:08:44.800" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Fine-tuning""" start="00:08:48.480" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""There's also, I want to mention the concept of fine-tuning.""" start="00:08:48.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Fine-tuning is a way to take your--""" start="00:08:51.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""take a corpus of inputs and outputs and just from""" start="00:08:55.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a large language model, you're like, okay,""" start="00:08:59.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""given this base large language model,""" start="00:09:01.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I want to make sure that when I give you input,""" start="00:09:03.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you give me something like output.""" start="00:09:06.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And this is what I'm just going to""" start="00:09:08.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""train you further on these,""" start="00:09:10.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""these mappings between input and output.""" start="00:09:11.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And for example, you could do this. Like,""" start="00:09:14.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""let's say you wanted to fix that regex demo""" start="00:09:16.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I had to make it good.""" start="00:09:18.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't think it, I think it'd be""" start="00:09:21.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""relatively effective to train,""" start="00:09:23.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to have regex descriptions""" start="00:09:25.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and regex examples, Emacs regex examples""" start="00:09:27.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as inputs and outputs.""" start="00:09:30.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could get, you know, maybe a hundred,""" start="00:09:31.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a few hundreds of these things.""" start="00:09:34.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could train it.""" start="00:09:35.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think that is a reasonable way to,""" start="00:09:38.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""let's just say, I don't know how well it would work,""" start="00:09:40.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but these things definitely work some of the time""" start="00:09:43.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and produce pretty good results.""" start="00:09:46.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you could do this on your own machine.""" start="00:09:48.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Corporations like OpenAI offer APIs with, you know,""" start="00:09:53.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to build your fine tunes on top of OpenAI.""" start="00:09:59.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think, I'm not a hundred percent sure,""" start="00:10:01.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but I think then you can share your model""" start="00:10:04.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""with other people.""" start="00:10:05.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But if not, then you just, you know,""" start="00:10:06.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could use your model for your own specialized purposes.""" start="00:10:08.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But in the world of models that you could run,""" start="00:10:10.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""for example, based on Llama, which is like...""" start="00:10:14.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Llama is this model you can run on your own machine from Meta.""" start="00:10:16.875" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's many fine-tuned models that you could download""" start="00:10:23.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you could run on your own.""" start="00:10:26.881" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They can do very different things too.""" start="00:10:28.961" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Some output Python programs, for example,""" start="00:10:30.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that you could just run.""" start="00:10:33.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you just say...""" start="00:10:34.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Tell me how old... Let's just say""" start="00:10:37.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you have a random task, like""" start="00:10:40.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""tell me how old these five cities are in minutes,""" start="00:10:42.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""based on historical evidence.""" start="00:10:48.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's kind of a weird query, but it probably can figure,""" start="00:10:49.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it could probably run that for you.""" start="00:10:53.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It'll encode its knowledge into whatever""" start="00:10:55.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the Python program, then use the Python program""" start="00:10:57.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to do the correct calculations.""" start="00:10:59.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So pretty, pretty useful stuff.""" start="00:11:01.040" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Open Source""" start="00:11:08.160" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""So I also want to mention open source""" start="00:11:08.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and basically free software here.""" start="00:11:10.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These LLMs are mostly not free software.""" start="00:11:12.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They're sometimes open source,""" start="00:11:17.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but they're generally not free""" start="00:11:19.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""without restrictions to use.""" start="00:11:21.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Most of these things, even Llama,""" start="00:11:23.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which you can use on your own machine,""" start="00:11:27.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""have restrictions that you cannot use it""" start="00:11:28.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to train your own model.""" start="00:11:31.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This is something that, you know,""" start="00:11:32.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it costs millions and millions of dollars""" start="00:11:35.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to train and produce these models.""" start="00:11:37.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that's just computation costs.""" start="00:11:40.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They do not want you""" start="00:11:42.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""stealing all that work by training your own models""" start="00:11:45.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""based on their output.""" start="00:11:47.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But there are research LLMs that do, I believe,""" start="00:11:48.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""conform to free software principles.""" start="00:11:55.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They're just not as good yet.""" start="00:11:58.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think that might change in the future.""" start="00:11:59.520" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""The Future""" start="00:12:02.840" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""So speaking of the future,""" start="00:12:02.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""one of the things I'd like to point out""" start="00:12:04.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is that like the demos I showed you are based on,""" start="00:12:07.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm using OpenAI 3.5 model.""" start="00:12:09.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's more than, well, no,""" start="00:12:13.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's like a year old basically at this point.""" start="00:12:16.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And things are moving fast.""" start="00:12:18.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They came out with 4.0.""" start="00:12:21.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""4.0 is significantly better.""" start="00:12:22.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't have access to it.""" start="00:12:23.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Even though I'm using the API and I'm paying money for it,""" start="00:12:24.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you only can get access to 4.0""" start="00:12:30.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""if you can spend a dollar.""" start="00:12:33.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I've never been able to spend,""" start="00:12:34.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""use so much API use that I've spent a dollar.""" start="00:12:36.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So I have, I don't have 4.0, but I've tried it""" start="00:12:38.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because I do pay for this""" start="00:12:44.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so I could get access to 4.0""" start="00:12:46.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it is substantially better.""" start="00:12:48.341" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""By all reports, it's,""" start="00:12:49.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the difference is extremely significant.""" start="00:12:50.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I would not be surprised""" start="00:12:53.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""if some of the limitations and drawbacks I described""" start="00:12:55.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""mostly went away with 4.0.""" start="00:12:59.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're probably at a stage""" start="00:13:02.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""where regexes will work maybe 5% of the time""" start="00:13:06.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""if you try them.""" start="00:13:09.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But with 4.0, it could work like 80% of the time.""" start="00:13:10.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Now, is that good enough?""" start="00:13:13.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Probably not, but it's a,""" start="00:13:14.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I wouldn't be surprised if you got results like that.""" start="00:13:17.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And in a year's time, in two years time,""" start="00:13:20.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""no one knows how much this is going to play out""" start="00:13:22.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""before progress stalls,""" start="00:13:26.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but there are a lot of interesting research.""" start="00:13:27.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't think, research wise,""" start="00:13:32.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't think things have slowed down.""" start="00:13:34.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You're still seeing a lot of advances.""" start="00:13:35.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You're still seeing a lot of models coming out""" start="00:13:38.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and that will come out.""" start="00:13:41.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That will be each one, one upping the other one""" start="00:13:41.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in terms of quality.""" start="00:13:46.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It'll be really interesting to see how this all plays out.""" start="00:13:49.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think that message here is that""" start="00:13:52.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we're at the beginning here.""" start="00:13:55.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This is why I think this talk is important.""" start="00:13:58.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think this is why we should be""" start="00:14:01.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""paying attention to this stuff.""" start="00:14:02.280" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""LLMs in Emacs - existing packages""" start="00:14:08.200" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""Let's talk about the existing packages.""" start="00:14:08.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Because there's a lot out there, people have,""" start="00:14:11.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think people have been integrating with""" start="00:14:13.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""these LLMs that often have a relatively easy to use API.""" start="00:14:17.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So it's kind of natural that people""" start="00:14:21.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""have already put out a lot of packages.""" start="00:14:24.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Coming off this problem from a lot of different angles,""" start="00:14:25.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't have time to go through""" start="00:14:28.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""all of these packages.""" start="00:14:30.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are great packages though.""" start="00:14:31.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""If you're not familiar with them,""" start="00:14:33.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""please check them out.""" start="00:14:35.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And they all are doing slightly different things.""" start="00:14:37.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Some of these are relatively straightforward.""" start="00:14:41.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Interactions, just a way to""" start="00:14:43.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""almost in a comment sort of way to kind of""" start="00:14:47.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""have just an interaction,""" start="00:14:52.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""long running interaction with an LLM""" start="00:14:54.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""where you kind of build off previous responses,""" start="00:14:55.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""kind of like the OpenAI's UI.""" start="00:14:59.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Two very more Emacsy things where you can sort of""" start="00:15:01.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""embed these LLM responses within a org-mode block""" start="00:15:08.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""using the org-mode's context.""" start="00:15:13.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Or GitHub Copilot integration where you can use it""" start="00:15:15.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""for auto completion in a very powerful,""" start="00:15:20.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you know, this stuff is very useful if it could figure out""" start="00:15:23.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what you're trying to do based on the context.""" start="00:15:27.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's quite effective.""" start="00:15:29.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But I want to kind of call out one thing""" start="00:15:31.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that I'd like to see change.""" start="00:15:36.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Which is that users right now,""" start="00:15:38.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""not all of these have a choice of,""" start="00:15:42.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""first of all, there's a lot of them.""" start="00:15:45.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Each one of them is doing their own calls.""" start="00:15:47.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And each one of them is, so each one of them""" start="00:15:49.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""has their own interfaces.""" start="00:15:54.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They're rewriting the interface to OpenAI or wherever.""" start="00:15:55.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And they're not, they don't, most of these""" start="00:15:57.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""do not make it that configurable or at all configurable""" start="00:16:00.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what LLM use.""" start="00:16:05.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This is not good.""" start="00:16:06.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It is important that we use,""" start="00:16:07.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we give the user a way to change the LLM they use.""" start="00:16:09.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that is because you might not be comfortable""" start="00:16:15.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""sending your requests over to a private corporation""" start="00:16:21.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""where you don't get to see how they use their data.""" start="00:16:24.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Your data, really.""" start="00:16:27.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's especially true with things like embeddings""" start="00:16:29.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""where you might be sending over your documents.""" start="00:16:33.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You're just giving them your documents, basically.""" start="00:16:35.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And, you know, that does happen.""" start="00:16:37.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't think really that there's a reason""" start="00:16:40.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to be uncomfortable with this,""" start="00:16:43.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but that, you know, people are uncomfortable and that's okay.""" start="00:16:44.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""People might want to use a local machine,""" start="00:16:51.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a local LLM for maximum privacy.""" start="00:16:53.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's something we should allow.""" start="00:16:58.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""People might want to especially use free software.""" start="00:17:00.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's something we should definitely allow.""" start="00:17:04.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This is Emacs.""" start="00:17:05.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We need to encourage that.""" start="00:17:07.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But right now, as most of these things are written,""" start="00:17:08.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can't do it.""" start="00:17:12.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And they're spending precious time""" start="00:17:13.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""just doing things themselves.""" start="00:17:17.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This is why I wrote LLM, which is...""" start="00:17:18.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it will just make that connection to the LLM for you""" start="00:17:20.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it will connect to, you know, it has plugins.""" start="00:17:23.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So if you can, the user can configure what plugin""" start="00:17:26.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it actually goes to.""" start="00:17:30.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Does it go to OpenAI?""" start="00:17:31.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Does it go to Google Cloud Vertex?""" start="00:17:32.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Does it go to Llama on your machine?""" start="00:17:35.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're using Ollama,""" start="00:17:37.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is just a way to run Llama locally.""" start="00:17:38.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And more things in the future, I hope.""" start="00:17:41.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is, I'm hoping that we use this.""" start="00:17:47.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's designed to be sort of maximally usable.""" start="00:17:52.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't need to install anything.""" start="00:17:54.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's on GNU ELPA.""" start="00:17:56.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So even if you write something""" start="00:17:58.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that you want to contribute to GNU ELPA,""" start="00:17:59.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can use it because it's on GNU ELPA.""" start="00:18:01.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's part of the Emacs package, Emacs core packages.""" start="00:18:02.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, but it has no functionality.""" start="00:18:06.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's really just there as a library""" start="00:18:09.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to use by other things offering functionality. Okay.""" start="00:18:11.720" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Abstracting LLM challenges""" start="00:18:15.960" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""And it's a little bit difficult to abstract.""" start="00:18:15.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I want to point this out""" start="00:18:19.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because I think it's an important point""" start="00:18:21.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is that the, it's, some of these LLMs, for example,""" start="00:18:23.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""have image generation.""" start="00:18:29.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Some do not.""" start="00:18:30.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Some of them have very large context windows, even for chat.""" start="00:18:31.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You say, okay, all these things can do chat.""" start="00:18:35.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Okay.""" start="00:18:37.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Yeah, kind of.""" start="00:18:37.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Some of these things you could pass a book to,""" start="00:18:38.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""like Anthropic's API.""" start="00:18:40.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Most, you cannot.""" start="00:18:41.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So there really are big differences""" start="00:18:43.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in how these things work.""" start="00:18:45.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I hope those differences diminish in the future.""" start="00:18:46.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it's just one of the challenges""" start="00:18:51.540" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that I hope we can work through in the LLM library.""" start="00:18:53.801" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So it's compatible, but there's definitely""" start="00:18:57.521" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""limits to that compatibility.""" start="00:19:02.161" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Emacs is the ideal interface for LLMs""" start="00:19:04.080" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""I want to point out just to finish off,""" start="00:19:04.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs is the, Emacs has real power here""" start="00:19:06.161" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that nothing else I think in the industry is offering.""" start="00:19:12.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""First of all, people that use Emacs""" start="00:19:15.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""tend to do a lot of things in Emacs.""" start="00:19:19.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We have our to-dos in Emacs with the org mode.""" start="00:19:20.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We have mail.""" start="00:19:22.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We, you know, we might read email and we might,""" start="00:19:23.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and respond to email in Emacs.""" start="00:19:25.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We might have notes in Emacs.""" start="00:19:27.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This is very powerful.""" start="00:19:29.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Using... there's not other stuff like that.""" start="00:19:31.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you could feed this stuff to an LLM.""" start="00:19:34.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could do interesting things""" start="00:19:35.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""using a combination of all this data.""" start="00:19:37.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""No one else could do this.""" start="00:19:38.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We need to start thinking about it.""" start="00:19:40.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Secondly, Emacs can execute commands.""" start="00:19:41.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This might be a bad idea.""" start="00:19:45.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This might be how the robots take over,""" start="00:19:46.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you could have the LLMs respond with Emacs""" start="00:19:48.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""commands and run those Emacs commands""" start="00:19:51.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and tell the LLM the response and have it do things""" start="00:19:54.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as your agent in the editor.""" start="00:19:57.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think we need to explore ideas like this.""" start="00:19:58.680" video="mainVideo-llm" id="subtitle"]]
+
+[[!template new="1" text="""Outro""" start="00:20:01.960" video="mainVideo-llm" id="subtitle"]]
+
+[[!template text="""And I think we need to share these ideas""" start="00:20:01.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and we need to make sure that we're pushing the""" start="00:20:04.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""envelope for Emacs and actually, you know, doing things,""" start="00:20:07.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""sharing ideas, sharing progress,""" start="00:20:10.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and kind of seeing how far we can push this stuff.""" start="00:20:12.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's really help Emacs out, be sort of,""" start="00:20:15.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""take advantage of this super powerful technique.""" start="00:20:20.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Thank you for listening.""" start="00:20:24.520" video="mainVideo-llm" id="subtitle"]]
+
+
+
+Captioner: bala
+
+<a name="llm-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Okay. Hello, everyone.""" start="00:00:13.099" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think this is the start of the Q&A session.""" start="00:00:16.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""So people can just ask me questions here.""" start="00:00:25.119" video="qanda-llm" id="subtitle"]]
+[[!template text="""Or I think maybe these questions are going to""" start="00:00:28.259" video="qanda-llm" id="subtitle"]]
+[[!template text="""be read by someone. Yes,""" start="00:00:30.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""thank you. Should I start doing that?""" start="00:00:34.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""I also know that there's questions in the""" start="00:00:39.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""either pad room, so I could start out""" start="00:00:41.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""answering those as well.""" start="00:00:42.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, sure. Whichever way you prefer.""" start="00:00:45.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""If you prefer to read the questions yourself,""" start="00:00:46.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""by all means, or if you would prefer me to""" start="00:00:48.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""read them to you, that also works.""" start="00:00:50.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, I see.""" start="00:00:50.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Why don't you read them to me?""" start="00:00:51.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think it'll just be more interesting then.""" start="00:00:53.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure. OK, let's see. The first question is,""" start="00:00:56.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""what is your use case for embedding,""" start="00:00:58.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""mainly for searching?""" start="00:01:00.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I mean, I think the use case really is""" start="00:01:06.180" video="qanda-llm" id="subtitle"]]
+[[!template text="""searching. And I think it is very useful when""" start="00:01:12.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""you're searching for something in a vague""" start="00:01:15.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""way. Just to give you an example,""" start="00:01:18.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""I have a note system called EKG.""" start="00:01:23.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""I type all my notes on it.""" start="00:01:25.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""You can find it on GitHub and Melba.""" start="00:01:28.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""But I wrote something at some point a year""" start="00:01:34.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""ago or something. I wrote something that I""" start="00:01:35.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""just vaguely remembered.""" start="00:01:36.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""Oh, this was about a certain kind of""" start="00:01:38.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""communication. I wanted communicating to""" start="00:01:41.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""large audiences. There's some interesting tip""" start="00:01:43.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""that I wrote down that was really cool.""" start="00:01:44.700" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I was like, well, I need to find it.""" start="00:01:49.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I did an embedding search for something""" start="00:01:52.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, you know, tips for communicating.""" start="00:01:55.479" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like those words may not have been in what I""" start="00:01:58.979" video="qanda-llm" id="subtitle"]]
+[[!template text="""was trying to find at all,""" start="00:02:00.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""But it was able to find it.""" start="00:02:02.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""And that is something that's very hard to do""" start="00:02:05.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""in other ways. Like, you know,""" start="00:02:07.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""if you had to do this with normal search,""" start="00:02:08.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""you have to do synonyms.""" start="00:02:09.199" video="qanda-llm" id="subtitle"]]
+[[!template text="""And like maybe those synonyms wouldn't cover""" start="00:02:10.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""it. Like with embedding,""" start="00:02:11.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""you can basically get at like the vague""" start="00:02:13.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""sentiment. You're like,""" start="00:02:14.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, you're, you know,""" start="00:02:17.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""you can really query on like what things are""" start="00:02:19.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""about as opposed to what words they have.""" start="00:02:21.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""Also, it's super good for similarity search.""" start="00:02:25.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""So you could say, look,""" start="00:02:27.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""I have a bunch of things that are encoded""" start="00:02:30.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""with embeddings that I want to show.""" start="00:02:31.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""For example, you can make an embedding for""" start="00:02:34.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""every buffer. You'd be like,""" start="00:02:35.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""well, show me buffers that are similar to""" start="00:02:37.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""this buffer. That doesn't sound super useful,""" start="00:02:38.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""but this is the kind of thing you could do.""" start="00:02:40.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so if you have a bunch of notes or""" start="00:02:45.300" video="qanda-llm" id="subtitle"]]
+[[!template text="""something else that you want to search on,""" start="00:02:46.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""you'd be like, what's similar to this buffer?""" start="00:02:48.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""Or what notes are similar to each other?""" start="00:02:51.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""What buffers are similar to each other?""" start="00:02:53.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's super good for this sort of thing.""" start="00:02:55.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it's also good for this kind of retrieval""" start="00:03:00.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""augmented generation, where you sort of,""" start="00:03:03.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""you retrieve things and the purpose is not""" start="00:03:05.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""for you to see them, but then you pass that""" start="00:03:06.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""to the LLM. And then it's able to be a little""" start="00:03:12.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""bit more accurate because it has the actual""" start="00:03:14.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""text that you're trying to,""" start="00:03:15.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""that is relevant, and it can cite from and""" start="00:03:18.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""things like that. And then it could give you""" start="00:03:20.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""a much better answer that's kind of,""" start="00:03:22.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, not just from its own little neural""" start="00:03:25.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""nets and memory.""" start="00:03:26.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool, thanks. Let's see,""" start="00:03:31.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""next question. What do you think about embed""" start="00:03:35.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""Emacs manual versus GPT's Emacs manual?""" start="00:03:40.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'm not exactly sure what this question is""" start="00:03:45.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""trying to say. So I mean,""" start="00:03:46.980" video="qanda-llm" id="subtitle"]]
+[[!template text="""if someone wrote that and wants to expand on""" start="00:03:51.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""it a little bit, but I think that maybe""" start="00:03:55.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""you're saying like you could embed,""" start="00:03:58.420" video="qanda-llm" id="subtitle"]]
+[[!template text="""have embeddings for like various,""" start="00:04:00.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""like every paragraph or something of the""" start="00:04:02.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""Emacs manual. But it's also the case that""" start="00:04:04.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""like GPT is already for sure already read it,""" start="00:04:06.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""right? And so you could ask questions that""" start="00:04:09.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""are about Emacs and our ELISP or whatever""" start="00:04:13.460" video="qanda-llm" id="subtitle"]]
+[[!template text="""part of the manual you want to find.""" start="00:04:15.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it will do a reasonably good job,""" start="00:04:19.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""especially the better models will do a""" start="00:04:22.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""reasonably good job of saying you something""" start="00:04:24.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""that is vaguely accurate.""" start="00:04:26.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""But if you do this retrieval augmented""" start="00:04:29.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""generation with embeddings,""" start="00:04:30.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""you can get something that is very accurate.""" start="00:04:32.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""At least I think. I haven't tried it,""" start="00:04:36.700" video="qanda-llm" id="subtitle"]]
+[[!template text="""but this is a technique that works in other""" start="00:04:38.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""similar cases. So you can also imagine like,""" start="00:04:43.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""oh, this whole thing I said,""" start="00:04:44.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, oh, you can query for vague things and""" start="00:04:47.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""get parts of the manual,""" start="00:04:49.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""perhaps. I'm not exactly sure if that would""" start="00:04:52.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""be useful, but maybe. Usually when I'm""" start="00:04:55.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""looking things up in the Emacs manual or""" start="00:04:57.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""Elist manual, I have something extremely""" start="00:04:58.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""specific and I kind of know where to look.""" start="00:05:00.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""But having other ways to get at this""" start="00:05:02.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""information is always good.""" start="00:05:04.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. Looks like they added a clarification""" start="00:05:10.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""if you would like to read that yourself,""" start="00:05:12.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""or would you like me to read it for you?""" start="00:05:14.180" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah. Yes, OK. It says,""" start="00:05:17.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""I've never tried. Yeah,""" start="00:05:20.460" video="qanda-llm" id="subtitle"]]
+[[!template text="""the question is like OK,""" start="00:05:21.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""there is a difference between the kind of""" start="00:05:23.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""thing as I just described.""" start="00:05:23.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""I have not tried the difference with the EMAX""" start="00:05:26.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""manual itself. It'd be interesting to see""" start="00:05:31.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""what this is, but I would expect like these""" start="00:05:33.700" video="qanda-llm" id="subtitle"]]
+[[!template text="""techniques, the retrieval augmented""" start="00:05:35.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""generation is generally pretty good.""" start="00:05:38.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I suspect it would,""" start="00:05:41.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""I would bet money on the fact that it's gonna""" start="00:05:43.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""give you, you know, better results than just,""" start="00:05:45.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, doing a free form query without any""" start="00:05:48.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""retrieval augmented generation.""" start="00:05:49.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool. Let's see. Next question.""" start="00:05:54.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""When deferring commit messages to an LLM,""" start="00:05:56.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""what, if anything, do you find you might have""" start="00:05:59.700" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: lost? Yeah, it's a good question.""" start="00:06:02.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""When deferring anything to a computer,""" start="00:06:06.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, you know, I used to have to remember""" start="00:06:08.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""how to get places, and now,""" start="00:06:11.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, on the few occasions which I drive,""" start="00:06:14.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, It could just tell me how to get""" start="00:06:16.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""places. So similar things could occur here""" start="00:06:21.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""where like, okay, I'm just leaving the LLM.""" start="00:06:24.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so I'm kind of missing out on some""" start="00:06:27.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""opportunity to think coherently about a""" start="00:06:30.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""particular commit. Particular commits are""" start="00:06:32.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""kind of low level. I don't think it's usually""" start="00:06:36.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""relatively obvious and what they're doing.""" start="00:06:39.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""And in this case, I think there's not much""" start="00:06:42.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""loss. But for sure, in other cases,""" start="00:06:44.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""if you're starting to get into situations""" start="00:06:46.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""where it's writing your emails and all this""" start="00:06:48.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""stuff. First of all, it's in 1 sense,""" start="00:06:52.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm not sure you might be losing something by""" start="00:06:55.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""delegating things. On the other hand,""" start="00:06:57.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, when you're interacting with these""" start="00:06:59.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""LLMs, you have to be extremely specific about""" start="00:07:01.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""what you want, or else it's just not going to""" start="00:07:03.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""do a good job. And that might actually be a""" start="00:07:07.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""good thing. So the question might be that""" start="00:07:09.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""maybe you might gain things by using an LLM""" start="00:07:11.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""to do your work. It might not actually even""" start="00:07:13.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""save you that much time,""" start="00:07:15.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""at least initially, because you have to kind""" start="00:07:18.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""of practice again super specific about what""" start="00:07:20.460" video="qanda-llm" id="subtitle"]]
+[[!template text="""you want to get out of the output it's going""" start="00:07:22.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""to give you so like oh I'm you know maybe you""" start="00:07:26.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""know you're on the emacs devel mailing list""" start="00:07:29.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""and you're like okay write this email about""" start="00:07:31.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""this about this And here's what I want to""" start="00:07:34.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""say. And here's the kind of tone I want to""" start="00:07:35.370" video="qanda-llm" id="subtitle"]]
+[[!template text="""use. And here's the like,""" start="00:07:36.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""oh, you might want to specify like everything""" start="00:07:37.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""that you kind of want to get into this.""" start="00:07:39.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""Usually it's easier just to write the email.""" start="00:07:42.180" video="qanda-llm" id="subtitle"]]
+[[!template text="""But I think that practice of kind of""" start="00:07:45.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""understanding what you want is not something""" start="00:07:48.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""you normally do. And I think it's going to be""" start="00:07:52.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""an interesting exercise that will help people""" start="00:07:56.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""understand. That said,""" start="00:07:57.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""I haven't done that much of that,""" start="00:07:58.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""so I can't say, oh, yeah,""" start="00:07:59.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""I've done this and it works for me.""" start="00:08:01.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""Maybe. I think it's an interesting thing to""" start="00:08:03.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""explore.""" start="00:08:03.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure. Thanks. Let's see.""" start="00:08:07.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""Let's see. Can you share your font settings""" start="00:08:10.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""in your Emacs config? Those are some nice""" start="00:08:13.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""fonts for reading.""" start="00:08:14.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I think I was using Menlo at the time.""" start="00:08:18.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""Unfortunately, I don't save those kinds of""" start="00:08:20.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""things, like a history of this.""" start="00:08:21.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""I've kind of switched now to,""" start="00:08:24.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""what was that? I think I wrote it down in""" start="00:08:27.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""the, I switched to MunaSpace,""" start="00:08:29.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""which just came out like a week or 2 ago,""" start="00:08:31.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""and is also pretty cool.""" start="00:08:33.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think it's Menlo.""" start="00:08:35.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""The internal question,""" start="00:08:37.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""what font are you using?""" start="00:08:38.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Indeed, yeah. It looks like someone guessed""" start="00:08:42.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""as well that it might be Menlo.""" start="00:08:43.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""OK, Cool. Yeah, next question.""" start="00:08:47.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""In terms of standardization,""" start="00:08:48.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""do you see a need for the medium to large""" start="00:08:53.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""scale effort needed? And then they also""" start="00:08:55.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""elaborate about it.""" start="00:08:56.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I mean, I do think,""" start="00:09:03.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't know if it's large scale,""" start="00:09:06.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""but at least it's probably medium scale.""" start="00:09:08.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""There's a lot of things that are missing that""" start="00:09:10.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""we don't have right now in emacs when you're""" start="00:09:12.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""dealing with LLMs. 1 is,""" start="00:09:13.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""a prompting system. And by that,""" start="00:09:18.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""I mean, you know, prompts are just like big""" start="00:09:21.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""blocks of text, but there's also senses that""" start="00:09:24.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""like prompts need to be composable and you""" start="00:09:28.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""need to be able to iterate on parts of the""" start="00:09:30.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""prompt. And so it's also customizable.""" start="00:09:36.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""Users might want to customize it.""" start="00:09:38.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""On the other hand, it's not super easy to""" start="00:09:41.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""write the prompt. So you want really good""" start="00:09:43.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""defaults. So the whole prompt system is kind""" start="00:09:47.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""of complicated. That needs to be kind of""" start="00:09:51.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""standardized, because I don't think there's""" start="00:09:52.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""any tools for doing something like that right""" start="00:09:54.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""now. I personally use my system,""" start="00:09:58.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""my note system for EKG.""" start="00:10:00.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't think that's appropriate for""" start="00:10:01.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""everyone, but it does,""" start="00:10:02.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""I did write it to have some of these""" start="00:10:04.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""capabilities of composability that I think""" start="00:10:06.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""are useful for a prompt generation.""" start="00:10:08.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""It'd be nice to have a system like that,""" start="00:10:11.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""but for general use. I don't,""" start="00:10:15.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""this is something I've been meaning to think""" start="00:10:17.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""about, like how to do it,""" start="00:10:18.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""but like this, you know,""" start="00:10:19.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""if someone's interested in getting this area,""" start="00:10:21.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, I would love to chat about that or,""" start="00:10:26.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, I think there's a lot of""" start="00:10:27.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""interesting ideas that we could have to have""" start="00:10:31.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""a system that allows us to make progress""" start="00:10:34.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""here. And also, I think there's more to""" start="00:10:38.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""standardization to be done.""" start="00:10:40.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""1 thing I'd also like to see that we haven't""" start="00:10:42.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""done yet is a system for standardizing on""" start="00:10:47.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""getting structured output.""" start="00:10:48.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""This is gonna be super useful.""" start="00:10:49.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""I have this for open AIs API,""" start="00:10:52.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""cause they support it.""" start="00:10:53.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it's really nice, cause then you can""" start="00:10:55.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""write elist functions that like,""" start="00:10:57.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""okay, I'm going to call the LLM.""" start="00:10:59.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm gonna get structured output.""" start="00:11:00.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""I know what that structure is going to be.""" start="00:11:02.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's not going to be just a big block of""" start="00:11:03.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""text. I could turn it into a,""" start="00:11:05.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, a P list or something.""" start="00:11:07.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""And then I could get the values out of that P""" start="00:11:09.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""list. And I know that way I could do,""" start="00:11:11.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""I could write actual apps that are,""" start="00:11:14.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, very, very sort of,""" start="00:11:18.300" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, useful for very specific purposes""" start="00:11:20.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""and not just for text generation.""" start="00:11:21.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think that's 1 of the most important""" start="00:11:24.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""things we want to do. And I have some ideas""" start="00:11:27.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""about how to do it. I just haven't pursued""" start="00:11:28.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""those yet. But if other people have ideas,""" start="00:11:31.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think this would be really interesting to""" start="00:11:34.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""add to the LLM package.""" start="00:11:35.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""So contact me there.""" start="00:11:37.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Awesome. Quick note before we continue.""" start="00:11:42.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I'm not sure how long we're going to be on""" start="00:11:44.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""stream for, because this is the last talk""" start="00:11:46.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""before the break. If we are on the stream""" start="00:11:48.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""long-term, then great.""" start="00:11:49.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""But if not, folks are welcome to continue""" start="00:11:51.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""writing questions on the pad.""" start="00:11:53.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""And hopefully, Andrew will get to them at""" start="00:11:55.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""some point. Or if Andrew maybe has some extra""" start="00:11:58.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""time available and wants to stay on""" start="00:11:59.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""BigBlueButton here, then folks are also""" start="00:12:01.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""welcome to join here and chat with Andrew""" start="00:12:03.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""directly as well. Okay,""" start="00:12:08.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""awesome. So yeah, the next question is,""" start="00:12:10.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""what are your thoughts on the carbon""" start="00:12:12.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""footprint of LLM usage?""" start="00:12:14.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, it's a really interesting question.""" start="00:12:17.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't have any particular knowledge or""" start="00:12:23.180" video="qanda-llm" id="subtitle"]]
+[[!template text="""opinions about that. It's something I think""" start="00:12:25.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""we should all be educating ourselves more""" start="00:12:26.980" video="qanda-llm" id="subtitle"]]
+[[!template text="""about. It is really, I mean,""" start="00:12:32.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""there's 2 parts of this,""" start="00:12:33.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""right? They take a, there's a huge amount of""" start="00:12:35.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""carbon footprint involved in training these""" start="00:12:37.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""things. Then running them is relatively""" start="00:12:38.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""lightweight. So the question is not""" start="00:12:42.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""necessarily like once it's trained,""" start="00:12:44.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""like I don't feel like it's a big deal to""" start="00:12:46.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""keep using it, but like training these things""" start="00:12:48.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""is kind of like the big carbon cost of it.""" start="00:12:50.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""But like right now, the way everything's""" start="00:12:53.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""going, like every, you know,""" start="00:12:56.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""all, you know, the top 5 or 6 tech companies""" start="00:12:59.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""are all training their LLMs,""" start="00:13:00.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""and this is all costing a giant amount of""" start="00:13:03.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""carbon probably. On the other hand these same""" start="00:13:06.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""companies are pretty good about using the""" start="00:13:08.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""least amount of carbon necessary you know""" start="00:13:10.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""they have their own their tricks for doing""" start="00:13:12.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""things very efficiently.""" start="00:13:13.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool next question, LLMs are slow and""" start="00:13:22.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""responding. Do you think Emacs should provide""" start="00:13:24.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""more async primitives to keep it responsive?""" start="00:13:26.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like the URL retrieve is quite bad at""" start="00:13:29.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""building API clients with it.""" start="00:13:31.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""Building API clients with it?""" start="00:13:31.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah. Well, OK, so first of all,""" start="00:13:36.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""people should be using the LLM client.""" start="00:13:40.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""And So right now, 1 thing I should have""" start="00:13:48.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""mentioned at the top is that there are new""" start="00:13:50.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""packages that I recorded this talk that you""" start="00:13:52.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""just saw several months ago.""" start="00:13:54.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so like Elama, there's this package Elama""" start="00:13:57.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""that came out that is using the LM package.""" start="00:13:59.700" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so for example, it doesn't need to worry""" start="00:14:02.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""about this sort of thing because it just uses""" start="00:14:05.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""LLM and package and the LLM package worries""" start="00:14:07.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""about this. And while I'm on the subject of""" start="00:14:11.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""things I forgot to mention,""" start="00:14:12.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""I also should just mention very quickly that""" start="00:14:15.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""there is now an open source model,""" start="00:14:17.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""Mistral. And so that's kind of this new thing""" start="00:14:21.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""on the scene that happened after I recorded""" start="00:14:23.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""my talk. And I think it's super important to""" start="00:14:26.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""the community and important that we have the""" start="00:14:28.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""opportunity to use that if we want to.""" start="00:14:30.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""Okay, but to answer the actual question,""" start="00:14:33.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""there has been some talk about the problems""" start="00:14:37.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""with URL retrieve in the URL package in""" start="00:14:40.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""general in EmacsDevEl.""" start="00:14:42.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's not great. I would like to have better""" start="00:14:46.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""primitives. And I've asked the author of""" start="00:14:50.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""Please PLZ to kind of provide some necessary""" start="00:14:54.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""callbacks. I think that's a great library.""" start="00:14:56.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I'd like to see that kind of like,""" start="00:15:00.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's nice that we have options,""" start="00:15:01.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""and that is an option that uses curl on the""" start="00:15:03.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""back end, and that has some benefits.""" start="00:15:05.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""So there's this big debate about whether we""" start="00:15:09.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""should have primitives or just use curl.""" start="00:15:10.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm not exactly sure what the right call is,""" start="00:15:13.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""but there has been discussions about this.""" start="00:15:15.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Excellent. And someone commented that GPTEL""" start="00:15:19.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""is async and apparently very good at tracking""" start="00:15:21.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""the point.""" start="00:15:22.300" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, yes, GPTEL has similar functionalities""" start="00:15:26.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""to LLM, although I believe it's going to move""" start="00:15:29.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""to LLM itself sometime soon.""" start="00:15:33.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: Next question, speaking of which,""" start="00:15:39.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""anyone trained or fine-tuned or prompted a""" start="00:15:42.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""model with their org data yet and applied it""" start="00:15:44.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""to interesting use cases like planning,""" start="00:15:46.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""scheduling, et cetera,""" start="00:15:47.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""and maybe care to comment?""" start="00:15:49.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: I don't know anyone who is doing that.""" start="00:15:54.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think it is interesting.""" start="00:15:55.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like this is what I kind of mentioned at the""" start="00:15:57.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""very end of the talk. There is a lot of stuff""" start="00:16:01.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""there like you could you know if you""" start="00:16:02.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""especially mean an LLM can kind of work as""" start="00:16:04.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""sort of like a secretary kind of person that""" start="00:16:07.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""could help you prioritize Still it's a""" start="00:16:12.180" video="qanda-llm" id="subtitle"]]
+[[!template text="""slightly unclear how what the best way to use""" start="00:16:14.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""it is So I think there's more of a question""" start="00:16:16.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""for the community about like what people have""" start="00:16:18.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""been trying. I see someone has mentioned that""" start="00:16:21.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""they are using it for weekly review.""" start="00:16:23.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it's kind of nice to like,""" start="00:16:26.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""maybe you could read your agenda or maybe""" start="00:16:29.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""this for like weekly review.""" start="00:16:30.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""It could like read all the stuff you've done""" start="00:16:32.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""and ask you questions about it.""" start="00:16:33.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""And like, what should happen next?""" start="00:16:35.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""Or like, is this going to cause a problem?""" start="00:16:36.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like, I can, I can understand if that could""" start="00:16:39.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""happen? That's like, that's kind of nice.""" start="00:16:40.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""And this kind of people have had good success""" start="00:16:43.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""out of using these LLMs to bounce ideas off""" start="00:16:48.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""of are, you know, for,""" start="00:16:49.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, I've seen people say that like they""" start="00:16:52.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""want, they use it for reading and they kind""" start="00:16:55.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""of dialogue with the LM to kind of like do""" start="00:16:58.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""sort of active reading.""" start="00:16:59.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""So you can imagine doing something similar""" start="00:17:02.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""with your tasks where it's sort of you're""" start="00:17:04.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""engaged in dialogue about like planning your""" start="00:17:06.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""tax with some with a alum that could kind of""" start="00:17:08.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""understand what those are and ask you some""" start="00:17:10.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""questions I think it. You know,""" start="00:17:13.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""if it'd be nice. So, the problem is like""" start="00:17:16.839" video="qanda-llm" id="subtitle"]]
+[[!template text="""there's no great way to share all this stuff.""" start="00:17:18.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""I guess if you have something like this,""" start="00:17:20.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""put it on Reddit. If you don't have Reddit,""" start="00:17:23.300" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't know what to do.""" start="00:17:24.599" video="qanda-llm" id="subtitle"]]
+[[!template text="""I would say put it somewhere.""" start="00:17:26.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""At the very least, I could maybe open up like""" start="00:17:28.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""an LLM discussion session on the LLM package""" start="00:17:31.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""GitHub, But not everyone likes to use GitHub.""" start="00:17:34.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't know. It'd be nice if there's a""" start="00:17:36.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""mailing list or IRC chat for this sort of""" start="00:17:38.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""thing. But there isn't at the moment.""" start="00:17:40.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right. Let's see. I think that's the end""" start="00:17:46.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""of the questions on the pad so far.""" start="00:17:48.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""There was also some discussion or some""" start="00:17:51.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""chatter, I believe, on IRC.""" start="00:17:52.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm not sure. Andrew, are you on IRC right""" start="00:17:54.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: I am, but I don't think I'm on any place that""" start="00:18:00.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""has the chatter. So if there's chatter,""" start="00:18:01.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""then I'm not seeing it.""" start="00:18:02.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: now? Okay. Yeah, it was in the emacsconf-dev""" start="00:18:04.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""channel.""" start="00:18:06.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, let me see if I can.""" start="00:18:09.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""Oh, yes. I mean, I could see the channel,""" start="00:18:25.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I missed whatever came before.""" start="00:18:27.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""So if there's anything you want to kind of""" start="00:18:29.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""call out, I can try to answer it here.""" start="00:18:30.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: OK, cool. I believe at least 2 other folks""" start="00:18:35.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""who are participating in the discussion there""" start="00:18:37.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""who have also joined here on BigBlueButton,""" start="00:18:40.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""Codin Quark and AeonTurn92.""" start="00:18:42.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""So you folks, if Andrew is still available""" start="00:18:47.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""and has time, you're welcome to chat here and""" start="00:18:50.460" video="qanda-llm" id="subtitle"]]
+[[!template text="""ask questions or discuss here as well.""" start="00:18:53.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: 1 Thank you. Thank you for your help,""" start="00:18:55.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""and thank you for reading all the questions.""" start="00:18:57.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: AUDIENCE 2 Cheers, and thanks to you for a""" start="00:18:59.700" video="qanda-llm" id="subtitle"]]
+[[!template text="""great talk and the discussion.""" start="00:19:00.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: AUDIENCE AUDIENCE 1 Thank you.""" start="00:19:01.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: AUDIENCE 2 Cheers.""" start="00:19:03.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I'll just, I will wait here and see if""" start="00:19:07.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""there's any questions.""" start="00:19:08.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""If not, I will log off after a few minutes.""" start="00:19:10.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, I guess since we were mentioned that""" start="00:19:15.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""there was a small chat about local alarms.""" start="00:19:18.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""Because chat dpt is nice,""" start="00:19:22.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""no, but privacy concerns,""" start="00:19:25.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""and it's not free and stuff.""" start="00:19:27.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""Which, so The question is,""" start="00:19:31.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""what is the promise for local models?""" start="00:19:36.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, so local is definitely...""" start="00:19:39.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: Or at least open source.""" start="00:19:41.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, so there is a local open source model,""" start="00:19:45.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""Misral, which you could run.""" start="00:19:47.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""The LLM package allows you to use,""" start="00:19:51.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think there's 3 kind of local things you""" start="00:19:56.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""could use. Like many of these things,""" start="00:19:58.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""there's like many kind of ways to do the same""" start="00:20:00.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""sort of thing. So LLM is supporting OLAMMA""" start="00:20:03.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""and LLAMMA-CPP. And let's see,""" start="00:20:10.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""1 other. Which 1 is it?""" start="00:20:12.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""And maybe that's it. Maybe the,""" start="00:20:18.420" video="qanda-llm" id="subtitle"]]
+[[!template text="""oh, GPT for all. So each 1 of these kind of""" start="00:20:21.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""has slightly different functionality.""" start="00:20:23.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""For example, I think GPT for all doesn't""" start="00:20:26.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""support embeddings. And I hear that Olama's""" start="00:20:31.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""embeddings are kind of currently broken.""" start="00:20:33.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""But basically they should support everything.""" start="00:20:35.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""And the open source models are,""" start="00:20:39.100" video="qanda-llm" id="subtitle"]]
+[[!template text="""so the local models are reasonably good.""" start="00:20:43.180" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like I don't think you'd use them and be""" start="00:20:44.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, what is this horrible nonsense?""" start="00:20:46.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like it's, it gives you relatively good""" start="00:20:50.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""results. Like it's not gonna be at the level""" start="00:20:51.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""of like GPT 3.5 or 4, but it's not far away""" start="00:20:56.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""from GPT 3.5, I think.""" start="00:20:57.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: I'm just saying that Olam has like a presets""" start="00:21:02.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""for connecting the actual working servers for""" start="00:21:05.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""Olama?""" start="00:21:06.300" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: So, I'll try. Yeah, so you could,""" start="00:21:08.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""what you could do is you could like for""" start="00:21:09.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""example you could download Olama which is""" start="00:21:11.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""just a way of setting up local models and""" start="00:21:15.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""running local models on your machine.""" start="00:21:17.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""So typically what it does,""" start="00:21:18.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""you like download a program,""" start="00:21:19.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""let's say Olama. Then Olama will have the""" start="00:21:23.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""ability to download models.""" start="00:21:24.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so you could choose from just a host of""" start="00:21:27.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""different models. Each 1 of these things has""" start="00:21:29.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""a bunch of different models.""" start="00:21:30.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""So it downloads all these things to your""" start="00:21:31.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""machine. But I would say that the key problem""" start="00:21:36.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""here is that it requires a fairly beefy""" start="00:21:40.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""machine.""" start="00:21:40.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: So. Yeah, yeah, of course.""" start="00:21:42.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""Why I was asking, because you briefly""" start="00:21:45.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""mentioned that there are some Israeli""" start="00:21:46.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""servers. I understand that they run it like a""" start="00:21:52.300" video="qanda-llm" id="subtitle"]]
+[[!template text="""government or stuff like that?""" start="00:21:53.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""No, no, sorry. People want everyone?""" start="00:21:55.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: I don't, I mean, maybe you've said something""" start="00:21:59.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""that sounded like Israeli servers.""" start="00:22:00.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay, okay.""" start="00:22:01.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: I think- There's no government LLMs as far as""" start="00:22:04.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""I know. Although, I'm sure the governments""" start="00:22:06.820" video="qanda-llm" id="subtitle"]]
+[[!template text="""are working on their own LLMs,""" start="00:22:08.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""et cetera. But yeah, basically your choices""" start="00:22:10.980" video="qanda-llm" id="subtitle"]]
+[[!template text="""are spend a, I mean, if you use open AI or""" start="00:22:15.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""something or anything else,""" start="00:22:16.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""you're really not spending any money.""" start="00:22:17.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like I've never been able to spend any money""" start="00:22:20.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""on OpenAI. Like unless you're doing something""" start="00:22:23.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""very intensive and really are using it to,""" start="00:22:25.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, if you're using it for your""" start="00:22:28.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""personal use, it's just hard to spend any""" start="00:22:29.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""money. But on the other hand,""" start="00:22:31.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's not free. So you can,""" start="00:22:32.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know,""" start="00:22:33.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: Actually, it's rather cheap.""" start="00:22:36.300" video="qanda-llm" id="subtitle"]]
+[[!template text="""There's no question about that.""" start="00:22:37.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""The problem is that it has a bad track record""" start="00:22:40.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""on privacy.""" start="00:22:41.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, that's, I think that is a key problem.""" start="00:22:45.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""This is probably the number 1 reason why you""" start="00:22:48.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""might want to use a local AI,""" start="00:22:51.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""a local LLM. Another 1 is like,""" start="00:22:54.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""you may not agree with the decisions.""" start="00:22:57.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""You know, there's a lot of trust and safety""" start="00:23:00.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""stuff that these companies have to do.""" start="00:23:05.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like they don't want like the LMs to kind of""" start="00:23:09.020" video="qanda-llm" id="subtitle"]]
+[[!template text="""like give you, like tell you how you can make""" start="00:23:11.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""meth or how you can make a bomb,""" start="00:23:13.180" video="qanda-llm" id="subtitle"]]
+[[!template text="""which they would do. They would totally do""" start="00:23:14.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""it. So, But each time you kind of restrict""" start="00:23:19.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""what is happening with what you can get out""" start="00:23:22.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""of the LM, it gets a little worse.""" start="00:23:23.860" video="qanda-llm" id="subtitle"]]
+[[!template text="""So some people""" start="00:23:24.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: want to have local. That's expected.""" start="00:23:27.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""I guess even open source language modules""" start="00:23:31.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""will soon have HR spaces because it's simply""" start="00:23:33.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""a legal issue.""" start="00:23:34.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: I think that's true. I also think that there""" start="00:23:40.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""probably will be, although I don't know of""" start="00:23:42.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""any offhand, that will are completely""" start="00:23:45.060" video="qanda-llm" id="subtitle"]]
+[[!template text="""uncensored. I know people are interested and""" start="00:23:46.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""are running uncensored models.""" start="00:23:48.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't know how to do it.""" start="00:23:49.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think it's a little bit dubious,""" start="00:23:52.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""but some people do want to do it.""" start="00:23:54.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""There's another reason for using local""" start="00:23:56.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""servers. Do you have any recommendation for""" start="00:24:02.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""models to run locally and also comments on""" start="00:24:05.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""whether a GPU is required?""" start="00:24:06.780" video="qanda-llm" id="subtitle"]]
+[[!template text="""Usually a GPU, well, you can run it without a""" start="00:24:14.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""GPU, but it does run much better.""" start="00:24:16.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like for example, I think when I used,""" start="00:24:19.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""Lama is sort of like a standard.""" start="00:24:22.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""This was the model for that Facebook came out""" start="00:24:27.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""with for local use. And It was,""" start="00:24:31.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""yeah, it's good. It's,""" start="00:24:37.260" video="qanda-llm" id="subtitle"]]
+[[!template text="""but it's now it's I think,""" start="00:24:40.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""Mistral is kind of like has a better""" start="00:24:44.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""performance, But there's also different model""" start="00:24:46.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""sizes. There's 7B, like the Lama 7B is OK.""" start="00:24:51.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""The Mistral 7B, 7 billion,""" start="00:24:52.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""are like, basically it'll take like,""" start="00:24:54.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""you can run it with like 16 gigs of RAM,""" start="00:24:58.380" video="qanda-llm" id="subtitle"]]
+[[!template text="""is pretty good. It's probably about as equal""" start="00:25:02.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""to the LLAMA13B. Those are the number of""" start="00:25:06.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""parameters, if I remember correctly.""" start="00:25:08.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""And then there's a 7B,""" start="00:25:10.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""which I've never been able to run.""" start="00:25:12.340" video="qanda-llm" id="subtitle"]]
+[[!template text="""And even if the 7B, if you run it without a""" start="00:25:16.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""GPU, it takes quite a while to answer.""" start="00:25:19.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think I've had experiences where it took""" start="00:25:22.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""literally like several,""" start="00:25:23.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""like 5 minutes before it even started""" start="00:25:26.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""responding, but you do eventually get""" start="00:25:28.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""something. And it could be that like things""" start="00:25:32.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""have gotten better since the last time I""" start="00:25:33.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""tried this, because things are moving fast.""" start="00:25:35.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""But it is super recommended to have a GPU.""" start="00:25:38.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""This is the problem. It's kind of like,""" start="00:25:42.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""yes, free software is great.""" start="00:25:43.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""But if free software is requiring that you""" start="00:25:46.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""have these kind of beefy servers and have all""" start="00:25:50.460" video="qanda-llm" id="subtitle"]]
+[[!template text="""this hardware, that's not great.""" start="00:25:52.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think there's a case to be made.""" start="00:25:53.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 1]: a hardware""" start="00:25:55.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: with slots instead of a laptop.""" start="00:25:59.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""Yeah, yeah, that's right.""" start="00:26:01.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 2]: Ideally, you can have Ideally,""" start="00:26:03.660" video="qanda-llm" id="subtitle"]]
+[[!template text="""it would be nice if FSL for all things could""" start="00:26:07.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""run something for open source model.""" start="00:26:12.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""And not free, but the key point is that it's""" start="00:26:16.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""Libre?""" start="00:26:16.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, so actually I think Google does do that.""" start="00:26:22.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'll have to look it up,""" start="00:26:24.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I haven't explored this yet.""" start="00:26:27.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""But Google's server, which LLM does support,""" start="00:26:31.220" video="qanda-llm" id="subtitle"]]
+[[!template text="""supports arbitrary models.""" start="00:26:33.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""So you can run LLMA or things like that.""" start="00:26:36.420" video="qanda-llm" id="subtitle"]]
+[[!template text="""The problem is that even if you're running""" start="00:26:38.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""Mistral, which has no restrictions.""" start="00:26:40.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""So this is the kind of thing that like the""" start="00:26:42.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""Free Software Foundation cares a lot about.""" start="00:26:44.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like you want it to be like no restrictions,""" start="00:26:47.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""legal restrictions on you as you run the""" start="00:26:49.740" video="qanda-llm" id="subtitle"]]
+[[!template text="""model. So even if it's running Mistral,""" start="00:26:52.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""just by using the server,""" start="00:26:54.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""the company server, it will impose some""" start="00:26:58.460" video="qanda-llm" id="subtitle"]]
+[[!template text="""restrictions on you probably,""" start="00:26:59.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""right? There's gonna be some license that you""" start="00:27:02.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""have to, or something you have to abide by.""" start="00:27:04.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think, yes, it depends on how much you""" start="00:27:08.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""care about it, I guess.""" start="00:27:09.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""I should find out more about that and make""" start="00:27:19.500" video="qanda-llm" id="subtitle"]]
+[[!template text="""sure that it's a good point that I should,""" start="00:27:21.580" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, people should be able to run free""" start="00:27:23.980" video="qanda-llm" id="subtitle"]]
+[[!template text="""models over the server.""" start="00:27:25.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I should make sure we support that in the""" start="00:27:28.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""LLM package. So, is there any other questions""" start="00:27:40.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""Or is otherwise we can end the session.""" start="00:27:48.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""Yeah, all right. Thank you.""" start="00:28:00.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""Thank you. Thank you everyone who listened.""" start="00:28:02.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm super happy like I,""" start="00:28:04.540" video="qanda-llm" id="subtitle"]]
+[[!template text="""the interest is great.""" start="00:28:06.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think there's great stuff to be done here""" start="00:28:08.900" video="qanda-llm" id="subtitle"]]
+[[!template text="""and I'm kind of super excited what we're""" start="00:28:10.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""going to do in the next year,""" start="00:28:11.940" video="qanda-llm" id="subtitle"]]
+[[!template text="""so hopefully, like next year,""" start="00:28:13.140" video="qanda-llm" id="subtitle"]]
+[[!template text="""and the conference we have something even""" start="00:28:14.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""more exciting to say about LLM and how they""" start="00:28:16.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""can be used with Emacs.""" start="00:28:17.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""So thank""" start="00:28:19.620" video="qanda-llm" id="subtitle"]]
+[[!template text="""you""" start="00:28:30.060" video="qanda-llm" id="subtitle"]]
+
+Questions or comments? Please e-mail [ahyatt@gmail.com](mailto:ahyatt@gmail.com?subject=Comment%20for%20EmacsConf%202023%20llm%3A%20LLM%20clients%20in%20Emacs%2C%20functionality%20and%20standardization)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/llm-before.md b/2023/info/llm-before.md
new file mode 100644
index 00000000..2371bd44
--- /dev/null
+++ b/2023/info/llm-before.md
@@ -0,0 +1,33 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 21-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="llm-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="llm-mainVideo" data="""
+00:00.000 Intro to the Talk
+00:25.080 What are LLMs?
+01:56.360 Power of LLMs (Magit Demo)
+03:32.240 Drawbacks of LLMs (regex demo)
+05:20.120 Embeddings
+07:32.800 Image Generation
+08:48.480 Fine-tuning
+11:08.160 Open Source
+12:02.840 The Future
+14:08.200 LLMs in Emacs - existing packages
+18:15.960 Abstracting LLM challenges
+19:04.080 Emacs is the ideal interface for LLMs
+20:01.960 Outro
+
+"""]]<div></div>Duration: 20:26 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--main.opus">Download --main.opus (12MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--main.webm">Download --main.webm (50MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/ck1LWXvRiAGNLWFA8s4Ymi">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="llm-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="llm-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--answers.opus"></audio></div><div></div>Duration: 28:32 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--answers.json">Download --answers.json (1.3MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--answers.opus">Download --answers.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-llm--llm-clients-in-emacs-functionality-and-standardization--andrew-hyatt--answers.webm">Download --answers.webm (46MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/llm-nav.md b/2023/info/llm-nav.md
new file mode 100644
index 00000000..13555b70
--- /dev/null
+++ b/2023/info/llm-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/voice">Enhancing productivity with voice computing</a>
+Next by track: <a href="/2023/talks/overlay">Improving compiler diagnostics with overlays</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/lspocaml-after.md b/2023/info/lspocaml-after.md
new file mode 100644
index 00000000..56d6ba54
--- /dev/null
+++ b/2023/info/lspocaml-after.md
@@ -0,0 +1,793 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="lspocaml-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""Hi, I'm Austin Theriault,""" start="00:00:00.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and this is writing a language server in OCaml""" start="00:00:01.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""for Emacs, fun, and profit.""" start="00:00:04.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Real quick, who am I?""" start="00:00:07.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Well, I'm a software engineer at Semgrep.""" start="00:00:08.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I work on our editor integrations,""" start="00:00:10.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and I love working on programming languages, editors,""" start="00:00:13.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and cryptography.""" start="00:00:15.360" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""What is Semgrep?""" start="00:00:16.540" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""What is Semgrep?""" start="00:00:16.540" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""We're a small cybersecurity startup""" start="00:00:17.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""whose core product is a SaaS tool,""" start="00:00:20.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is static application security testing.""" start="00:00:21.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You can think of it as like a security linter.""" start="00:00:24.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Normal linters will say, hey,""" start="00:00:27.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you wrote ugly code, fix it.""" start="00:00:30.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""We'll say, hey, you wrote a SQL injection, fix that.""" start="00:00:31.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""We support 30+ languages,""" start="00:00:35.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and we have lots of customers all using different IDEs.""" start="00:00:36.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Why does that matter?""" start="00:00:39.320" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""How do we show security bugs early?""" start="00:00:40.720" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""Well, our goal is to show security bugs""" start="00:00:40.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""as early as possible in the development cycle.""" start="00:00:42.780" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""In the industry, we call this shifting left.""" start="00:00:45.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And so how far left can we shift? The editor.""" start="00:00:48.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So that's why it matters""" start="00:00:52.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that our customers have different editors.""" start="00:00:53.620" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Our goal is to have Semgrep and the editor""" start="00:00:56.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""show up like other language tooling.""" start="00:00:58.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And what I mean by that is I wrote some bad OCaml up here,""" start="00:01:01.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and the editor gave me that red squiggly and said,""" start="00:01:05.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""fix your OCaml, and we want Semgrep to do something similar.""" start="00:01:07.600" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And so our goal then is to provide a similar experience""" start="00:01:12.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""to normal language checking.""" start="00:01:15.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And then since we're a small startup,""" start="00:01:16.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and there's a ton of different IDEs that our customers use,""" start="00:01:19.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""ideally, we don't want to have to rewrite a plugin""" start="00:01:22.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""for every single type of editor out there.""" start="00:01:24.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Our other goal is abstract away""" start="00:01:27.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""editing and language features for editors to one code base.""" start="00:01:29.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Ideally, we write it once""" start="00:01:32.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then plug it into all of them.""" start="00:01:33.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So how can we do that, though?""" start="00:01:35.800" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""What is the Language Server Protocol?""" start="00:01:37.880" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""Well, in the process of working on this stuff,""" start="00:01:37.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I found out about""" start="00:01:40.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""the Language Server Protocol.""" start="00:01:43.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And what's great about the Language Server Protocol is""" start="00:01:44.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""it's a specification that defines all the ways""" start="00:01:47.280" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that these language tools might interact""" start="00:01:50.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""with a development tool. And by development tool,""" start="00:01:52.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I mean like VS Code, Sublime, Emacs, any of those.""" start="00:01:56.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And by language tool, I mean something like PyRight, MyPy.""" start="00:02:01.600" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So what's cool about LSP is that""" start="00:02:07.280" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you can separate out those tools into language servers""" start="00:02:09.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and the development tools into language clients.""" start="00:02:13.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And because they share this common specification,""" start="00:02:15.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""they can now interact without knowing each other.""" start="00:02:18.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So it's this great abstraction that means""" start="00:02:20.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""all you have to do is go write one language server""" start="00:02:22.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and you can hook it up to a bunch of language clients""" start="00:02:25.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and it'll just work.""" start="00:02:27.440" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Case study: Rust Analyzer""" start="00:02:29.040" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""So let's do a quick case study on language servers in LSP,""" start="00:02:29.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""just so you get an idea of why this is super cool.""" start="00:02:34.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So there's this language server called Rust Analyzer.""" start="00:02:37.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's a language server for the Rust language.""" start="00:02:40.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""If you've ever developed in Rust,""" start="00:02:42.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you'll know that takes a really long time to compile,""" start="00:02:44.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but the compiler gives you fantastic feedback.""" start="00:02:46.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Rust has a lot of advanced language features,""" start="00:02:50.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so that feedback is super important for developing.""" start="00:02:52.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And so Rust Analyzer will give you that feedback instantly.""" start="00:02:55.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Here's a ton of things that it gives you.""" start="00:02:58.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Code completion, fixes, compiler errors, warnings,""" start="00:03:01.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""type signatures. Rust has a pretty strong type system.""" start="00:03:05.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It also has this thing called lifetimes.""" start="00:03:08.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""A bunch of advanced language features in Rust Analyzer""" start="00:03:12.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""helps you manage all that""" start="00:03:15.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and gives you all that info""" start="00:03:16.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""without having to wait for it to compile.""" start="00:03:17.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Developing with the Rust Analyzer""" start="00:03:19.220" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""is just orders of magnitude easier""" start="00:03:21.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""than just trying to write Rust straight.""" start="00:03:24.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Rust Analyzer, fantastic. They went and they developed it,""" start="00:03:26.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and now you can go use that in Emacs, NeoVim,""" start="00:03:30.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""VS Code, wherever.""" start="00:03:33.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So you can develop Rust in a way that's relatively efficient""" start="00:03:35.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""without having to give up your favorite editor.""" start="00:03:39.080" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Rust Analyzer in action""" start="00:03:42.760" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""So here's a quick little demo""" start="00:03:42.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""of all the cool things it can do.""" start="00:03:44.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So you can see I typed an error.""" start="00:03:46.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It tells me that I wrote an error.""" start="00:03:48.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I used the incorrect lifetime,""" start="00:03:50.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is some advanced language feature,""" start="00:03:52.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and it'll let me know that.""" start="00:03:54.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I expanded a Rust macro just there,""" start="00:03:55.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is similar to Lisp macros,""" start="00:03:57.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then I ran a single unit test,""" start="00:03:59.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and that's really cool because I ran a single unit test""" start="00:04:01.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""from my editor.""" start="00:04:04.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I didn't have to go and type any commands or anything.""" start="00:04:05.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It just worked.""" start="00:04:07.840" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Why is this useful?""" start="00:04:09.960" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""So why is this just useful in general for a user?""" start="00:04:09.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Well, you get the same experience across editors.""" start="00:04:13.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Like I was saying, you don't have to give up""" start="00:04:15.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""one editor for another""" start="00:04:17.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so you get some sort of cool language feature.""" start="00:04:18.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You can easily set up and use language servers""" start="00:04:21.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""made for other editors""" start="00:04:23.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""if developers don't support your editor of choice.""" start="00:04:24.600" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Performance is not dependent on the editor.""" start="00:04:27.860" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""That's fantastic because to do all that Rust stuff,""" start="00:04:31.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""it takes a lot of CPU power,""" start="00:04:35.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and so that's going to be slow""" start="00:04:37.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""if your editor language is not great, not fast.""" start="00:04:40.500" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And then bug fixes, updates, all that,""" start="00:04:43.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""it all comes out at the same time.""" start="00:04:47.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And then from the developer perspective, well,""" start="00:04:50.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""adding new editors is quick and easy.""" start="00:04:53.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""For reference, when I wrote the Semgrep language server,""" start="00:04:55.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""it took me maybe two or three weeks,""" start="00:04:58.700" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but then actually going and setting it up for VS Code,""" start="00:05:00.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that took an hour. For Emacs, 30 minutes.""" start="00:05:04.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""IntelliJ, maybe another hour.""" start="00:05:06.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So it took me a day to add support""" start="00:05:08.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""for three different editors,""" start="00:05:10.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which was I think something like 75% of the market share""" start="00:05:11.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""or something crazy like that.""" start="00:05:14.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So very quick. You only need one mental model.""" start="00:05:16.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You don't have to figure out""" start="00:05:20.180" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""all these different extension mental models,""" start="00:05:21.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""how those editors work, anything like that.""" start="00:05:23.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And another thing that's cool is""" start="00:05:26.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you only have to write tests for the language server,""" start="00:05:28.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""not necessarily for the editor.""" start="00:05:30.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's great to have just one set of tests""" start="00:05:31.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that you have to pass.""" start="00:05:33.840" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""So what about Emacs?""" start="00:05:36.220" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""So why does a language server protocol matter with Emacs?""" start="00:05:36.220" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Well, like I was saying before,""" start="00:05:40.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Emacs gets the benefit from work put into other editors.""" start="00:05:42.380" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So we get all this language support,""" start="00:05:45.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and no one actually has to go and write the list for it""" start="00:05:47.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""or write those tools specific to Emacs.""" start="00:05:51.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You get the language tooling,""" start="00:05:53.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""the CPU-intensive part of the editors.""" start="00:05:54.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It can be written in something else.""" start="00:05:56.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Lisp is fast. It's not that fast.""" start="00:05:58.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Having that speed is fantastic. It's all asynchronous.""" start="00:06:01.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It won't slow down Emacs.""" start="00:06:04.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And then there's this package called `lsp-mode`,""" start="00:06:06.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is an LSP client commonly included""" start="00:06:08.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""in popular Emacs distributions.""" start="00:06:11.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So a lot of people already have that.""" start="00:06:13.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""If you're using Emacs 29 or greater, you have `eglot-mode`,""" start="00:06:15.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is a lighter weight version of `lsp-mode`.""" start="00:06:18.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's just another LSP client.""" start="00:06:21.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""When I wrote the Semgrep language server,""" start="00:06:24.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Emacs 29 hadn't come out yet.""" start="00:06:26.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I'm not going to talk too much about `eglot-mode`""" start="00:06:28.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because I did everything in `lsp-mode`,""" start="00:06:31.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but I would imagine a lot of this stuff is very similar.""" start="00:06:33.300" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Here's a list of some supported languages.""" start="00:06:37.780" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Technical part - Brief communication overview""" start="00:06:40.700" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""Now let's get into the technical part.""" start="00:06:40.700" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""How does LSP actually work?""" start="00:06:42.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So let's go over how it communicates first.""" start="00:06:45.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It uses JSONRPC,""" start="00:06:47.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is just kind of like HTTP,""" start="00:06:49.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but instead of sending plain text, you're sending JSON.""" start="00:06:51.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So it's just sending JSON back and forth.""" start="00:06:54.620" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's great because it's a way""" start="00:06:56.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""for two programs to communicate""" start="00:06:58.540" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""without sharing a common programming language.""" start="00:06:59.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Transport platform agnostic,""" start="00:07:02.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so it could be stdin, stdout,""" start="00:07:04.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""sockets, whatever. It's just JSON.""" start="00:07:07.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You can send it over whatever.""" start="00:07:09.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""There's two different types of messages,""" start="00:07:11.140" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""a request, which requires a response from the other party,""" start="00:07:12.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and a notification, which does not expect a response.""" start="00:07:15.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So just a quick little example,""" start="00:07:19.260" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""a user might open a document,""" start="00:07:21.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then it'll send like a text document did open""" start="00:07:23.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and what document it was to the language server,""" start="00:07:28.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then they'll change it.""" start="00:07:30.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Maybe they edit some code and introduce a syntax error.""" start="00:07:31.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""The changes will be sent to the language server,""" start="00:07:35.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then the language server will publish diagnostics,""" start="00:07:37.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is those red squigglies""" start="00:07:39.220" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I was talking about earlier,""" start="00:07:41.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and say, hey, syntax error or whatever here,""" start="00:07:42.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""or maybe the user says,""" start="00:07:45.460" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I want to go to the definition of this function,""" start="00:07:46.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then the language server will spit back,""" start="00:07:49.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""hey, this is where that function lives.""" start="00:07:51.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""All very useful,""" start="00:07:53.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and the communication is relatively simple,""" start="00:07:55.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is great.""" start="00:07:57.720" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Example request""" start="00:07:58.760" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""This is what it looks like, what a request looks like.""" start="00:07:58.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Notifications look somewhat similar.""" start="00:08:01.240" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""LSP capabilities""" start="00:08:03.380" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""So now we know how LSP communication works,""" start="00:08:03.380" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but how does the actual protocol work?""" start="00:08:05.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Well, almost all of the protocol is opt-in,""" start="00:08:09.860" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""meaning you don't have to support the entire specification,""" start="00:08:12.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you can just pick and choose.""" start="00:08:15.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Servers and clients will then communicate""" start="00:08:17.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""what part of the protocol they both support,""" start="00:08:19.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so they'll both say, hey,""" start="00:08:21.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""we support being notified when a user opens a document,""" start="00:08:22.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""or if they're looking for documentation.""" start="00:08:26.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And so then once they agree upon what they'll both support,""" start="00:08:28.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""then they'll send that stuff,""" start="00:08:33.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""those notifications and requests back and forth.""" start="00:08:35.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Things like opening and closing files, diagnostics,""" start="00:08:38.580" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""code completion, hovering over stuff, type signatures,""" start="00:08:41.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""all of that. And what's cool is""" start="00:08:46.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""even though the specification is huge""" start="00:08:48.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and probably has everything you need,""" start="00:08:50.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you can go ahead and add custom capabilities""" start="00:08:52.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""if you really want to.""" start="00:08:54.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So you can just define a custom method,""" start="00:08:55.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then now that works for you,""" start="00:08:57.980" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and now you can have that in all your editors.""" start="00:09:01.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""For example, Rust Analyzer""" start="00:09:03.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""has structural search and replace,""" start="00:09:04.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is like find and replace,""" start="00:09:06.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but with respect to the structure of the code.""" start="00:09:08.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And if you choose to go down this route""" start="00:09:11.600" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""with the custom capabilities,""" start="00:09:13.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you do have to remember you're going to have to""" start="00:09:15.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""implement it in every client.""" start="00:09:16.660" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And that's a little bit more work,""" start="00:09:18.700" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but it's better than where we were without LSP.""" start="00:09:20.400" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Tips on writing a LS""" start="00:09:23.380" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""So some quick tips on writing a language server.""" start="00:09:23.380" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I'm not going to get too into this""" start="00:09:25.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because it's very application-specific.""" start="00:09:27.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I wrote Semgrep's in OCaml""" start="00:09:30.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""since our code base was almost all OCaml already,""" start="00:09:32.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and I wanted to leverage that.""" start="00:09:35.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Would not recommend""" start="00:09:36.600" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""unless you also have a code base all in OCaml.""" start="00:09:38.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Structure is similar to a Rust server,""" start="00:09:41.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so a bunch of independent endpoints.""" start="00:09:43.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I would do everything functionally if I were you.""" start="00:09:45.740" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""This is EmacsConf.""" start="00:09:48.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""We're all hopefully used to writing functional Lisp.""" start="00:09:49.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I would recommend TypeScript or Rust, though,""" start="00:09:53.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""depending on your level of performance""" start="00:09:56.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that you really need or whatever language""" start="00:09:58.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you're trying to support ideally.""" start="00:10:00.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Most languages have""" start="00:10:02.255" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""some sort of language server protocol already.""" start="00:10:03.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""But if they don't, then it might be easier""" start="00:10:06.500" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""to do it in that language.""" start="00:10:09.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""TypeScript has a lot of support, a lot of documentation,""" start="00:10:10.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""a lot of examples out there""" start="00:10:12.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because it was what Microsoft originally intended""" start="00:10:14.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""the language server protocol to be for, for VS Code,""" start="00:10:17.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is written in TypeScript.""" start="00:10:20.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Rust is fast, it's going to take more effort,""" start="00:10:22.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but it's very fast, and Rust Analyzer has a great library""" start="00:10:24.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that they use and that they support.""" start="00:10:28.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So support there, examples there are great.""" start="00:10:30.280" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""The hard part is not really the language server protocol,""" start="00:10:32.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but the actual logic. So, like, if you're doing, like,""" start="00:10:35.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""language tooling, you're going to have to do""" start="00:10:39.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""analysis on the code, so you need to do parsing,""" start="00:10:40.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""possibly compiling, all these different advanced features,""" start="00:10:42.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""all these advanced different things.""" start="00:10:47.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""For example, Rust Analyzer will do incremental compilation,""" start="00:10:48.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is really, really cool,""" start="00:10:52.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but that's, like, a whole separate talk.""" start="00:10:54.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""If you're adapting an existing language tool,""" start="00:10:58.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""this stuff is really easy.""" start="00:11:00.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You're basically just wiring stuff up.""" start="00:11:01.680" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Supporting a LS through LSP mode in Emacs""" start="00:11:03.480" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""But, yeah. So, now we know all about""" start="00:11:03.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""LSP and language servers.""" start="00:11:08.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Say you want to actually""" start="00:11:10.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""add support for a language server in Emacs.""" start="00:11:11.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""How do you do that? Well, let's look at LSP mode,""" start="00:11:14.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because, like I said, this is what I'm most familiar with.""" start="00:11:19.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""I'm sure `eglot-mode` is pretty similar.""" start="00:11:21.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So, `lsp-mode`'s repository is on GitHub,""" start="00:11:24.260" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""like everything, and it has a ton of different clients""" start="00:11:27.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""for a ton of different languages and frameworks and tools,""" start="00:11:31.500" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""like Semgrep, and these are available""" start="00:11:34.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""to anyone who installs LSP mode.""" start="00:11:37.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Alternatively, you can make a separate package""" start="00:11:39.740" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and just use LSP mode as a library,""" start="00:11:42.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but I'm not going to focus on this,""" start="00:11:43.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because there's already a ton of resources out there""" start="00:11:45.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""on packaging and Emacs.""" start="00:11:47.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""So, our steps, very quickly, are going to look like""" start="00:11:50.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""adding an Emacs Lisp file that contains some logic,""" start="00:11:54.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""add an entry somewhere, so we added a new client""" start="00:11:58.300" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""to the list of clients, and then do some documentation,""" start="00:12:01.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because documentation's great.""" start="00:12:03.720" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Create a client""" start="00:12:06.000" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""First, creating a client.""" start="00:12:06.000" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""In the `clients/` folder in `lsp-mode/`,""" start="00:12:07.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""literally just add, like, `lsp-` whatever it is,""" start="00:12:09.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""`require` the library, and register a client.""" start="00:12:12.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Registering a client just means, like,""" start="00:12:15.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""saying what kind of connection it is.""" start="00:12:18.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's most likely going to be standard I/O,""" start="00:12:19.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because that's pretty easy to implement,""" start="00:12:21.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then you just pass it the executable""" start="00:12:24.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that you actually want to run.""" start="00:12:26.840" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Say what the activation function is,""" start="00:12:29.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so this is when the client should start,""" start="00:12:31.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so you can specify the language""" start="00:12:33.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""or the major mode or whatever,""" start="00:12:36.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and now your client will start whenever that's triggered,""" start="00:12:38.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then finally provide just a server ID,""" start="00:12:43.100" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so that way it's easy to keep track of,""" start="00:12:45.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then run this LSP consistency check function.""" start="00:12:48.580" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""This just makes sure everything up there is good.""" start="00:12:52.760" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You can do more advanced stuff with making an LSP client""" start="00:12:56.580" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that I'm not going to get into,""" start="00:12:59.520" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but just know that these aren't your only options,""" start="00:13:01.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then finally provide your client.""" start="00:13:03.800" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Add to list of client packages""" start="00:13:07.300" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""Next, you just have to add your client""" start="00:13:07.300" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""to the list of clients that `lsp-mode` supports,""" start="00:13:09.800" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and now you've added support for a whole new language,""" start="00:13:12.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""whole new framework, whole new tool to Emacs,""" start="00:13:15.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and it's taking you, what, like, what is that,""" start="00:13:17.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""20 lines of Lisp? No, not even, like, 15.""" start="00:13:20.220" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""15 lines of Lisp, whole new language for Emacs.""" start="00:13:23.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's really exciting. Now that you have your client,""" start="00:13:26.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""let's do some documentation. Go fill out this, like, name,""" start="00:13:31.600" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""where the repository, the source code is,""" start="00:13:35.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""because free software is great,""" start="00:13:37.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and you should open source your stuff.""" start="00:13:39.600" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Specify the installation command.""" start="00:13:42.180" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""What's cool about this is""" start="00:13:44.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""this can be run automatically from Emacs,""" start="00:13:45.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so if it's, like, `pip install pyright`, right,""" start="00:13:48.060" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""you can put that there, and Emacs will ask you,""" start="00:13:50.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""do you want to install the language server,""" start="00:13:53.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and you can hit yes""" start="00:13:55.280" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and users will just have it installed for them,""" start="00:13:56.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and then you can say whether or not it's a debugger.""" start="00:13:59.540" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""This is completely separate,""" start="00:14:01.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""so there's this thing called DAP,""" start="00:14:03.160" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is the debugger adapter protocol,""" start="00:14:05.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and it's similar to LSP but for debuggers,""" start="00:14:07.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""which is very cool,""" start="00:14:09.680" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Add documentation!""" start="00:14:11.680" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""and then finally link to your documentation.""" start="00:14:11.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Please, please document your stuff.""" start="00:14:14.600" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Adding commands and custom capabilities""" start="00:14:17.880" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""If you want to add, like, a custom Emacs function""" start="00:14:17.880" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""or custom capabilities, it's super easy.""" start="00:14:20.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's literally just, like, calling a normal Emacs function.""" start="00:14:22.680" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""For example, Semgrep normally only scans files""" start="00:14:27.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""when you open them, but we added a Emacs function""" start="00:14:30.560" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""that will scan your entire project, right,""" start="00:14:34.200" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and so that was just a client notification.""" start="00:14:36.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It was just `lsp-notify` and then a custom method,""" start="00:14:40.960" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and it's great because now you can just scan your project""" start="00:14:44.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""from a simple Emacs function.""" start="00:14:46.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Requests, very similar to notifications.""" start="00:14:48.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""You send it and then pass it a lambda""" start="00:14:52.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and do something with the result,""" start="00:14:56.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and so that's adding custom capabilities.""" start="00:14:58.460" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template new="1" text="""Thanks for listening""" start="00:15:01.360" video="mainVideo-lspocaml" id="subtitle"]]
+
+[[!template text="""That's pretty much it. Thank you for listening.""" start="00:15:01.360" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Some resources here.""" start="00:15:04.320" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""These links are clickable if you get the PDF,""" start="00:15:05.640" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""if you get the slides. Semgrep: we're hiring!""" start="00:15:08.240" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""If you want to work on, like,""" start="00:15:10.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""programming language theory stuff,""" start="00:15:12.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""compilers, parsers, editors,""" start="00:15:13.720" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""email me or go look at our jobs.""" start="00:15:18.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""The LSP specification, this is, like, the holy Bible.""" start="00:15:22.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It has all the specs, all the types, everything.""" start="00:15:25.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""`lsp-mode` and the docs.""" start="00:15:28.340" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""`lsp-mode`, right, that's where you want to add your client.""" start="00:15:30.420" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""The docs are great, super useful.""" start="00:15:33.280" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""Rust Analyzer is just a great reference""" start="00:15:36.100" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""for language servers in general""" start="00:15:38.080" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""if you want to write one or if you just want to, like,""" start="00:15:39.920" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""see how they work. It's all just really well done.""" start="00:15:42.120" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""It's great code, very readable.""" start="00:15:45.400" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""And then down here is just a long video tutorial,""" start="00:15:47.040" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""a longer video tutorial, not by me,""" start="00:15:50.480" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""by someone else, on how to add a language client to Emacs,""" start="00:15:54.700" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""but hopefully this is sufficient for y'all,""" start="00:15:58.440" video="mainVideo-lspocaml" id="subtitle"]]
+[[!template text="""and now it's time for some Q&A.""" start="00:16:01.480" video="mainVideo-lspocaml" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="lspocaml-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: I would invite all on the,""" start="00:00:03.540" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""who are currently watching,""" start="00:00:04.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""who have questions, put them into the pad""" start="00:00:06.819" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""that I can ask them. I'm kind of monitoring""" start="00:00:08.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""the IRC concurrently. So the first question""" start="00:00:16.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""that we have on the pad is concerning why you""" start="00:00:18.640" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""have switched from OCaml.""" start="00:00:19.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Maybe the person has missed it in the talk,""" start="00:00:22.420" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""if you've mentioned it.""" start="00:00:23.480" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Why have you switched from OCaml to,""" start="00:00:25.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""in this case, I guess,""" start="00:00:25.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Rust?""" start="00:00:26.180" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I mentioned like with writing a""" start="00:00:30.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""language server that I wrote mine for my""" start="00:00:34.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""company in OCaml But I wouldn't recommend it""" start="00:00:36.900" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""just in general unless like you're doing""" start="00:00:38.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""something specific with OCaml And the reason""" start="00:00:41.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""for that and I recommended Rust or like""" start="00:00:44.180" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""TypeScript is like OCaml is great.""" start="00:00:45.780" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's very performant but it's cross""" start="00:00:49.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""compilation story is not great.""" start="00:00:50.739" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's like really hard to cross compile like""" start="00:00:54.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""from 1 platform to another.""" start="00:00:55.840" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And then like the ecosystem and its standard""" start="00:00:58.120" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""library is also not great.""" start="00:01:00.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And like Rust, its cross compilation is""" start="00:01:03.460" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""great. Its ecosystem is great.""" start="00:01:05.820" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""OCaml is great if you need to use it,""" start="00:01:08.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but it's just it's not ideal.""" start="00:01:10.880" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And there's just also no good examples of a""" start="00:01:14.220" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""language server in OCaml.""" start="00:01:15.240" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""There's the official like OCaml language""" start="00:01:19.119" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""server, But they use a ton of super advanced""" start="00:01:22.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""language features, like module functors and a""" start="00:01:27.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""bunch of other random stuff.""" start="00:01:28.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So it's not really readable.""" start="00:01:29.479" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""But Rust, there's Rust analyzer,""" start="00:01:31.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""which is readable. In TypeScript,""" start="00:01:33.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""there's like a million different ones.""" start="00:01:34.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So it's less of a, not OCaml is like,""" start="00:01:39.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""it's not that OCaml isn't great.""" start="00:01:40.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's more of a, these other languages would""" start="00:01:43.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""probably just be easier.""" start="00:01:44.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So.""" start="00:01:45.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: I guess since the integration to,""" start="00:01:48.619" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""for example, like NeoVim or some other""" start="00:01:50.820" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""editors are just revenue fine because of the""" start="00:01:53.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sorry, can you say that again?""" start="00:01:56.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: LSP, I guess. The LSP,""" start="00:01:58.580" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""so it's a standard LSP specification that""" start="00:02:01.979" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""you're using. So you can also,""" start="00:02:03.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""for instance, use it and other editors,""" start="00:02:04.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like for instance, new them or so.""" start="00:02:06.660" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. Yeah. You can use it.""" start="00:02:08.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's most, most editors nowadays support it.""" start="00:02:11.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Like obviously Emacs, NeoVim,""" start="00:02:13.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Sublime, VS code, Intel,""" start="00:02:16.420" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""all the IntelliJ ones.""" start="00:02:17.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So yeah, that's, that's the fun part.""" start="00:02:21.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""You don't have to write 10 different""" start="00:02:23.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""languages to get a bunch of editor support.""" start="00:02:26.500" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Also experience writing it.""" start="00:02:30.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So I didn't have really time to hear into""" start="00:02:33.820" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""your talk. So I'm sorry if I ask you""" start="00:02:36.300" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""questions that you have already said.""" start="00:02:38.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""How was the experience of writing an LSP?""" start="00:02:41.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So have you any knowledge beforehand or do""" start="00:02:44.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""you just read it all on yourself?""" start="00:02:45.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, there's not a ton of documentation,""" start="00:02:49.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""which is what motivated me to do this talk.""" start="00:02:53.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Basically, I just looked at the""" start="00:02:56.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""specification, and I knew Rust Analyzer was""" start="00:02:58.820" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""cool. And so I looked at Rust Analyzer,""" start="00:03:00.240" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""and I looked at PyRite.""" start="00:03:01.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And I just went from there.""" start="00:03:04.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I found out about all this because I already""" start="00:03:07.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""using Emacs, I already knew about it.""" start="00:03:10.240" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I was like, this is going to be easier than""" start="00:03:12.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""something else. So yeah,""" start="00:03:15.020" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""there's the experience is fine.""" start="00:03:17.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's just a lot of wiring stuff up.""" start="00:03:21.060" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's not a lot of like hard thinking until""" start="00:03:24.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""you get to like performance heavy stuff.""" start="00:03:26.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Like, so for some graph,""" start="00:03:27.740" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like we're doing a ton of like code parsing""" start="00:03:30.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""and like analyzing. And so that's,""" start="00:03:32.980" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""it takes up like a ton of processing power.""" start="00:03:35.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So like for stuff like that,""" start="00:03:37.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like now you have to think about caching and""" start="00:03:39.620" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like ordering things. So that part's hard,""" start="00:03:43.980" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but that's more of a, like very much""" start="00:03:47.180" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""application specific thing.""" start="00:03:48.640" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. Anything in the IRC chat.""" start="00:03:58.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I think not. It's nothing I can see.""" start="00:04:01.840" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""No questions, that's kind of odd to be""" start="00:04:13.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""honest. I cannot really ask questions""" start="00:04:17.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""concerning LSP specific.""" start="00:04:18.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, no worries.""" start="00:04:22.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Good question, what could be asked?""" start="00:04:31.460" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Let's call, let's ask something very""" start="00:04:35.740" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""unspecific concerning the Emacs usage.""" start="00:04:38.260" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And when have you started?""" start="00:04:39.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""How did you came through it and stuff like""" start="00:04:41.580" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""this?""" start="00:04:41.780" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. I like and when I was in high school,""" start="00:04:46.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""me and my friends just were like,""" start="00:04:48.480" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""got obsessed with Linux for whatever reason.""" start="00:04:51.820" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And then like we traveled down like the,""" start="00:04:53.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like the free software,""" start="00:04:55.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like we just thought that was like very""" start="00:04:57.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""entertaining and like interesting to read""" start="00:05:00.040" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""about all the free software stuff.""" start="00:05:01.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""They were like, yeah, that's cool.""" start="00:05:03.120" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And so we all started using Linux.""" start="00:05:04.540" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And I'm like, well, if I'm using free""" start="00:05:06.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""software, I'm going to use Emacs.""" start="00:05:08.300" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And so I started using Emacs just to try it""" start="00:05:12.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""out. And then I kind of got,""" start="00:05:13.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I feel like, Stockholm syndrome into it.""" start="00:05:16.880" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And now I've realized like,""" start="00:05:18.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I don't know, now that I've done the like""" start="00:05:21.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""actual work to get into Emacs,""" start="00:05:23.880" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""it's just, there's so much more I can do with""" start="00:05:26.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""it. But yeah, it was somewhat unintentional.""" start="00:05:30.300" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: I probably have the same course I've started""" start="00:05:36.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like 2 years ago using Emacs.""" start="00:05:37.780" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And also just, oh, there's at first some cool""" start="00:05:42.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""people on YouTube, so systems crafters and""" start="00:05:45.020" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""people like this. And also,""" start="00:05:46.300" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""ah, VS Code, I used a lot of VS Code""" start="00:05:49.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""beforehand and then VS Codium because open""" start="00:05:53.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""source and then oh are there any other""" start="00:05:55.640" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""alternatives and I came to like Neovim and""" start="00:05:58.020" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Emacs and often switching around but I stick""" start="00:06:01.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""to Emacs at some point to be honest.""" start="00:06:03.220" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I think Emacs also just looks really""" start="00:06:07.180" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""cool. I will say that.""" start="00:06:08.500" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And also just like I like Vim.""" start="00:06:14.240" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Vim is cool but like being able to like write""" start="00:06:16.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""lists and like modify your editor on the fly""" start="00:06:19.240" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""is just like very appealing to me.""" start="00:06:20.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I don't know, Emacs was tough at first""" start="00:06:23.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""because like all the like default key""" start="00:06:25.520" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""bindings are just kind of like and then and""" start="00:06:28.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""then I read somewhere someone was like yeah""" start="00:06:29.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""well Richard Stallman uses evil mode so it's""" start="00:06:33.220" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""okay. I was like alright I can that's like""" start="00:06:36.220" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""blessing enough for me Like I'm just gonna""" start="00:06:38.000" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""switch to evil mode. And I was like,""" start="00:06:39.520" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""this is way, way better as far as key""" start="00:06:42.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""bindings go.""" start="00:06:42.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Kind of relates. So I switched for,""" start="00:06:46.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I think, half a year to the default key""" start="00:06:49.900" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""bindings from Vim beforehand.""" start="00:06:51.300" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I switched back to Evil and now I'm losing""" start="00:06:54.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""some kind of hybrid styles.""" start="00:06:56.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's kind of weird. But we have a question on""" start="00:07:01.000" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""the pad. So what are the corner cases,""" start="00:07:03.260" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""limitations, and other issues you encountered""" start="00:07:05.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""in implementing an LSP server with client in""" start="00:07:08.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Emacs that were surprising?""" start="00:07:09.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I would say the corner cases and""" start="00:07:13.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""limitations are definitely like,""" start="00:07:15.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""once again, they're going to be very""" start="00:07:16.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""application specific, but it's usually just""" start="00:07:18.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""the performance part. So like I was saying""" start="00:07:22.420" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""before, right, in general if you're doing""" start="00:07:24.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""language tooling, you're gonna be doing""" start="00:07:26.120" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""either parsing or interpreting or something""" start="00:07:29.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like that, which is very just like""" start="00:07:31.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""computationally heavy and so if you're trying""" start="00:07:34.740" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""to like do that stuff while someone is""" start="00:07:36.900" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""editing a file right like every keystrokes""" start="00:07:38.520" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""every like 1 to 2 seconds if they have a fast""" start="00:07:42.660" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""computer that's great but a lot of people""" start="00:07:44.240" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""don't have like that fast of a computer that""" start="00:07:46.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""they can go and like do compilation every""" start="00:07:49.480" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""single keystroke. So like,""" start="00:07:51.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I would say, I would say the like limitation""" start="00:07:54.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""is just how fast your computer is and how""" start="00:07:56.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""good you are at like implementing caching for""" start="00:07:59.140" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like whatever you're doing.""" start="00:08:01.020" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""That's also just the main issues I've run""" start="00:08:04.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""into is just it's a constant uphill battle.""" start="00:08:08.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""People will somehow find larger and larger""" start="00:08:12.120" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""files. You'll end up with files that are like""" start="00:08:14.580" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""thousands, like tens of thousands of lines""" start="00:08:17.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""long and you think yeah,""" start="00:08:18.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""surely no 1 would expect like instantaneous""" start="00:08:21.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""response for like like editing a file that""" start="00:08:25.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""has like tens of thousands of lines,""" start="00:08:26.820" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but then they do. As far as corner cases go,""" start="00:08:30.000" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I would say the corner case is like,""" start="00:08:31.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""just in general is actually distributing the""" start="00:08:37.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""language server. Cause like writing the""" start="00:08:41.039" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""language server is fine.""" start="00:08:42.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Like wiring everything up is fine.""" start="00:08:44.540" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""But then like, once you actually have to go""" start="00:08:47.180" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""and distribute it, well,""" start="00:08:47.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""now you're distributing in a binary.""" start="00:08:49.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Like I was saying before with OCaml,""" start="00:08:51.660" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""doesn't have great cross compilation.""" start="00:08:53.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So for some graph for our language server,""" start="00:08:58.840" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""we target Linux and Mac OS,""" start="00:09:01.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""and we have a ton of people who use Windows,""" start="00:09:03.840" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but compiling OCaml for Windows is basically""" start="00:09:06.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""impossible. So our corner case there,""" start="00:09:10.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""the way we solved it was now we're""" start="00:09:11.980" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""transpiling OCaml to JavaScript,""" start="00:09:14.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""which is a huge can of worms.""" start="00:09:17.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Like it's a lot of fun.""" start="00:09:18.840" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's very interesting,""" start="00:09:19.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but like it's not ideal.""" start="00:09:22.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And so that's what I was saying before.""" start="00:09:24.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I recommend like Rust or TypeScript because""" start="00:09:26.360" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""those are way more portable and a lot easier""" start="00:09:29.580" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""to install. And you don't have to worry about""" start="00:09:31.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""any of that weird packaging stuff.""" start="00:09:33.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So yeah, I would say that's like the main""" start="00:09:37.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""corner case and the main limitation is just""" start="00:09:40.260" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""speed and caching.""" start="00:09:41.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: You mentioned this obscure large file so""" start="00:09:47.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""someone doesn't want to refactor or""" start="00:09:49.000" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""something. How did you start?""" start="00:09:51.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So did you have any way to still be""" start="00:09:54.480" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""relatively performant when they have big""" start="00:09:56.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""files or is it just not supported?""" start="00:09:58.020" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I don't care.""" start="00:09:58.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, no, we, so we support larger files now""" start="00:10:03.140" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And the way we ended up doing that,""" start="00:10:05.460" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""so SemGrep is like you write this generic""" start="00:10:11.480" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""pattern. You kind of write the language,""" start="00:10:14.540" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but then there's these other symbols and""" start="00:10:17.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""stuff that are included in that,""" start="00:10:18.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""this like meta language.""" start="00:10:19.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And so what happens is,""" start="00:10:22.420" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""is most languages get,""" start="00:10:23.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""they get parsed and then into a syntax tree,""" start="00:10:27.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""right? Like whatever the language is syntax""" start="00:10:29.180" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""tree is, and then they get,""" start="00:10:30.620" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""the syntax tree gets converted into this,""" start="00:10:33.800" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like, we call it like an abstract syntax""" start="00:10:35.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""tree, which is like abstract from like any,""" start="00:10:38.080" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like languages specific syntax tree.""" start="00:10:39.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And so then we can cache that,""" start="00:10:41.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""which is really good because like if someone""" start="00:10:44.480" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""types something like we don't have to go""" start="00:10:47.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""through and do like the full parsing and like""" start="00:10:50.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""converting, we only have to do it""" start="00:10:51.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""incrementally. And so that's,""" start="00:10:54.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""that's how we dealt with that.""" start="00:10:56.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Or the other option is that we just,""" start="00:10:58.140" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""we just cache whatever the previous results""" start="00:11:00.720" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""are, and then run it asynchronously,""" start="00:11:03.460" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""and they might get it delayed.""" start="00:11:04.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""But we've ended up doing more AST caching,""" start="00:11:08.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""which is fun and cool.""" start="00:11:09.880" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sounds good. So we have here a question from""" start="00:11:15.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Blaine. If Eaglet is a subset of LSP mode,""" start="00:11:18.240" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""can EGLOT conflict with LSP mode if both are""" start="00:11:21.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""present in your initial .el""" start="00:11:23.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""file?""" start="00:11:24.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so I haven't played around with EGLOT""" start="00:11:27.740" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""mode a ton, so I'm not 100% sure.""" start="00:11:30.580" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I think all of the key bindings and commands,""" start="00:11:33.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""if you just install it out of the box,""" start="00:11:36.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I Think they're different.""" start="00:11:39.020" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So I don't think there's like any like""" start="00:11:41.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""overlap as far as that stuff goes but you""" start="00:11:44.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""will have the overlap of like you entered,""" start="00:11:47.520" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like you started a major mode for like some""" start="00:11:49.780" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""language, like they'll both probably start""" start="00:11:51.500" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""the language server and provide diagnostics""" start="00:11:53.040" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""and everything. And so then now you're""" start="00:11:55.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""getting like, you're just like doubling the""" start="00:11:58.180" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""work your computer is doing.""" start="00:11:59.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So there's that conflict.""" start="00:12:00.480" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""But if you prefer EGLOT mode or LSP mode for""" start="00:12:04.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like 1 language or framework,""" start="00:12:05.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like 1 major mode and LSP mode for the other,""" start="00:12:09.060" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I think you should be fine.""" start="00:12:10.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right. Just to let you know,""" start="00:12:14.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""we have like 1 minute on the stream and then""" start="00:12:20.460" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""we'll switch back and to the pre-recorded""" start="00:12:22.540" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""stuff I guess.""" start="00:12:24.000" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah yeah yeah let's hi sorry for the rude""" start="00:12:27.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""interruption but I'm just doing a little bit""" start="00:12:29.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""of time keeping so thank you so much Austin""" start="00:12:31.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""sadly I wasn't able to follow the Q&A because""" start="00:12:34.340" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I was in the other track answering questions.""" start="00:12:36.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""If, Austin, you want to stay and answer some""" start="00:12:39.960" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""more questions, feel free to do so.""" start="00:12:41.580" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""People tend to start talking as soon as we go""" start="00:12:45.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""off air, And I wouldn't be surprised with LSP""" start="00:12:48.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""that people would do the same.""" start="00:12:49.540" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""We're gonna move on for this track.""" start="00:12:52.800" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""We're gonna move on in 20 seconds to the next""" start="00:12:54.840" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""1. So Floey, thank you for hosting.""" start="00:12:56.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Austin, thank you for all your answers.""" start="00:12:58.680" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And We'll see you in a bit.""" start="00:13:01.460" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool. Thanks. See you.""" start="00:13:04.740" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thanks for the Q&A.""" start="00:13:06.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 2]: All right. All right. You are now off air.""" start="00:13:10.120" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Thank you so much, Austin.""" start="00:13:11.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""I'm going to go back running in the""" start="00:13:13.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""background. And thank you,""" start="00:13:13.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Flowey, for everything.""" start="00:13:14.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: And thanks. Yeah. Have a nice,""" start="00:13:20.900" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""probably a nice day at your work.""" start="00:13:23.160" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, no worries. Yeah.""" start="00:13:24.140" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Yeah, it's still it's like lunchtime for me.""" start="00:13:26.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: So okay, here, it's like,""" start="00:13:28.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""09:00. 9pm. Thanks for the talk.""" start="00:13:34.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Sorry for the inconvenience was not having""" start="00:13:36.300" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""any, any questions, really.""" start="00:13:37.540" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: So yeah. Oh yeah, no worries.""" start="00:13:39.000" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's like, there's like no documentation on""" start="00:13:41.100" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""any of this stuff. So I didn't really expect""" start="00:13:42.940" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""any.""" start="00:13:43.380" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I was kind of interested when I jumped""" start="00:13:47.220" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""into NeoVim. I write it 1 or 2 things on my""" start="00:13:51.000" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""own, but never really got really deep into""" start="00:13:53.140" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""it. And you're gonna see with like compiler""" start="00:13:54.520" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""design and stuff like this,""" start="00:13:55.920" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but not really specific.""" start="00:13:57.400" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""So I was""" start="00:13:58.320" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: kind of- Yeah, that's the hard part.""" start="00:14:00.860" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""It's like, it's, LSP is cool,""" start="00:14:02.440" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""but then you have to like deal with all the""" start="00:14:05.020" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""like compiler stuff and programming language""" start="00:14:06.760" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""theory.""" start="00:14:07.200" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: So yeah. So it's, it shouldn't be too""" start="00:14:10.600" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""complicated. I had not really a question,""" start="00:14:13.280" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""so, but it worked out fine.""" start="00:14:14.700" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Thanks for the Q and A.""" start="00:14:16.500" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""And if I have any questions to Oak Hamill,""" start="00:14:18.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""Elderspeak will get an email from you.""" start="00:14:20.640" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh yeah, definitely.""" start="00:14:21.560" video="qanda-lspocaml" id="subtitle"]]
+[[!template text="""[Speaker 0]: Dan?""" start="00:14:23.500" video="qanda-lspocaml" id="subtitle"]]
+
+Questions or comments? Please e-mail [austin@cutedogs.org](mailto:austin@cutedogs.org?subject=Comment%20for%20EmacsConf%202023%20lspocaml%3A%20Writing%20a%20language%20server%20in%20OCaml%20for%20Emacs%2C%20fun%2C%20and%20profit)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/lspocaml-before.md b/2023/info/lspocaml-before.md
new file mode 100644
index 00000000..d3f225c8
--- /dev/null
+++ b/2023/info/lspocaml-before.md
@@ -0,0 +1,38 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 17-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="lspocaml-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="lspocaml-mainVideo" data="""
+00:00.000 Introduction
+00:16.540 What is Semgrep?
+00:40.720 How do we show security bugs early?
+01:37.880 What is the Language Server Protocol?
+02:29.040 Case study: Rust Analyzer
+03:42.760 Rust Analyzer in action
+04:09.960 Why is this useful?
+05:36.220 So what about Emacs?
+06:40.700 Technical part - Brief communication overview
+07:58.760 Example request
+08:03.380 LSP capabilities
+09:23.380 Tips on writing a LS
+11:03.480 Supporting a LS through LSP mode in Emacs
+12:06.000 Create a client
+13:07.300 Add to list of client packages
+14:11.680 Add documentation!
+14:17.880 Adding commands and custom capabilities
+15:01.360 Thanks for listening
+
+"""]]<div></div>Duration: 16:04 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--main.opus">Download --main.opus (8.7MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--main.webm">Download --main.webm (29MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault.pdf">Download .pdf (87MB)</a></li><li><a href="https://toobnix.org/w/jgMzmGyx4H1YDwc5n1eRZu">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="lspocaml-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="lspocaml-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.opus"></audio></div><div></div>Duration: 14:24 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.opus">Download --answers.opus (8.2MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.webm">Download --answers.webm (23MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/lspocaml-nav.md b/2023/info/lspocaml-nav.md
new file mode 100644
index 00000000..a705e389
--- /dev/null
+++ b/2023/info/lspocaml-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/hyperdrive">hyperdrive.el: Peer-to-peer filesystem in Emacs</a>
+Next by track: <a href="/2023/talks/test">What I learned by writing test cases for GNU Hyperbole</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/matplotllm-after.md b/2023/info/matplotllm-after.md
new file mode 100644
index 00000000..2471df19
--- /dev/null
+++ b/2023/info/matplotllm-after.md
@@ -0,0 +1,227 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="matplotllm-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template text="""Hi, my name is Abhinav and I'm going to talk about""" start="00:00:00.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""this tool that I've been working on called MatplotLLM.""" start="00:00:03.040" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""MatplotLLM is a natural language interface""" start="00:00:06.200" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""over matplotlib, which is a library I use a lot""" start="00:00:09.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""for making visualizations.""" start="00:00:12.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""It's a pretty common Python library used a lot everywhere""" start="00:00:14.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""where there's need of plotting and graphing.""" start="00:00:18.680" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I usually use it in reports.""" start="00:00:22.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Whenever I'm writing a report in org mode,""" start="00:00:25.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I tend to write a code block which is in Python.""" start="00:00:27.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And then that code block has usage of matplotlib""" start="00:00:31.560" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""to produce some reports.""" start="00:00:34.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""That works really well.""" start="00:00:36.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""But at times what happens is""" start="00:00:38.320" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I have to make a very custom graph, let's say.""" start="00:00:40.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And then while I'm writing a report,""" start="00:00:43.960" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""it's kind of a huge leap of abstraction""" start="00:00:46.920" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""when I'm working on text""" start="00:00:50.680" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""versus going into actual low-level matplotlib code""" start="00:00:51.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""to do that graphing.""" start="00:00:54.880" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So that's something I don't want to do.""" start="00:00:56.240" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Here's an example.""" start="00:00:59.680" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""This is a graph which is... I think it was made""" start="00:01:00.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""like five or six years back.""" start="00:01:04.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And then there are some common things""" start="00:01:05.840" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""like scatter plot here,""" start="00:01:08.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""the dots that you can see here scattered.""" start="00:01:09.960" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Then... But there are a few things which, to do them,""" start="00:01:12.240" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""to make them, you will actually have to go--at least me,""" start="00:01:16.280" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I have to go to the documentation""" start="00:01:19.160" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and figure out how to do it. Which is fine,""" start="00:01:20.840" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""but I don't want to do this, you know,""" start="00:01:24.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""spend so much time here, when I'm working on""" start="00:01:26.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""a tight deadline for a report.""" start="00:01:29.200" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""That's the motivation for this tool.""" start="00:01:32.320" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""This tool basically allows me""" start="00:01:33.920" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""to get rid of the complexity of the library""" start="00:01:35.200" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""by working via an LLM.""" start="00:01:38.480" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template new="1" text="""What is an LLM?""" start="00:01:40.720" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template text="""So an LLM is a large language model.""" start="00:01:40.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""These are models which are""" start="00:01:43.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""trained to produce text, generate text.""" start="00:01:45.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And just by doing that,""" start="00:01:49.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""they actually end up learning a lot of common patterns.""" start="00:01:51.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""For example, if you ask a question,""" start="00:01:55.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""you can actually get a reasonable response.""" start="00:01:56.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""If you ask to write a code for something,""" start="00:01:58.920" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""you'll actually get code""" start="00:02:00.760" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""which can also be very reasonable.""" start="00:02:01.880" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So this tool is basically a wrapper""" start="00:02:04.760" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""that uses an LLM. For the current version,""" start="00:02:06.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""we use GPT-4, which is OpenAI's model.""" start="00:02:11.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""It's not open in the sense of open source.""" start="00:02:13.920" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So that's a problem that it has.""" start="00:02:17.920" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""But for this version, we are going to use that.""" start="00:02:21.120" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template new="1" text="""Using this library""" start="00:02:23.600" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template text="""Using this library is pretty simple.""" start="00:02:23.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""You basically require the library""" start="00:02:25.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and then you set up your OpenAI API key here.""" start="00:02:27.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Then you get a code block""" start="00:02:30.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""where you can specify the language as `matplotllm`.""" start="00:02:33.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And then what you can do is,""" start="00:02:35.760" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""you can basically describe what you want""" start="00:02:38.280" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""in natural language.""" start="00:02:40.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I'll take this example of this data set.""" start="00:02:41.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""It's called the Health and Wealth of Nations.""" start="00:02:45.280" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I think that was""" start="00:02:48.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""the name of a visualization where it was used.""" start="00:02:49.640" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""This is basically life expectancy,""" start="00:02:51.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""GDP of various countries starting from 1800.""" start="00:02:53.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I think it goes up to 2000 somewhere.""" start="00:02:59.280" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So earlier, I would try to write code which reads this CSV""" start="00:03:02.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and then does a lot of matplotlib stuff""" start="00:03:07.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and then finally produces a graph.""" start="00:03:09.840" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""But with this tool, what I'll do is""" start="00:03:11.680" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I'll just provide instructions in two forms.""" start="00:03:13.880" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So the first thing I'll do is""" start="00:03:17.680" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I'll just describe how the data looks like.""" start="00:03:18.880" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So I'll say data is in a file called `data.csv`,""" start="00:03:21.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""which is this file, by the way, on the right.""" start="00:03:29.040" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""It looks like the following.""" start="00:03:33.160" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I just pasted a few lines from the top, which is enough.""" start="00:03:39.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Since it's a CSV, there's already a structure to it.""" start="00:03:44.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""But let's say if you have a log file""" start="00:03:47.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""where there's more complexities to be parsed and all,""" start="00:03:50.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""that also works out really well.""" start="00:03:53.760" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""You just have to describe how the data looks like""" start="00:03:55.040" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and the system will figure out how to work with this.""" start="00:03:58.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Now, let's do the plotting. So what I can do is...""" start="00:04:01.160" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Let's start from a very basic plot""" start="00:04:06.405" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""between life expectancy and GDP per capita.""" start="00:04:09.560" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I'll just do this.""" start="00:04:11.621" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""&quot;Can you make a scatter plot""" start="00:04:13.801" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""for life expectancy and GDP per capita?&quot;""" start="00:04:17.281" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Now, you can see there are some typos,""" start="00:04:26.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and probably there will be some grammatical mistakes""" start="00:04:29.640" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""also coming through.""" start="00:04:31.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""But that's all OK, because the models are supposed to""" start="00:04:32.920" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""handle those kinds of situations really well.""" start="00:04:37.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So I send the request to the model.""" start="00:04:40.560" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Since it's a large model--GPT-4 is really large--""" start="00:04:43.240" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""it actually takes a lot of time to get the response back.""" start="00:04:47.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So this specific response took 17 seconds,""" start="00:04:50.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""which is huge.""" start="00:04:53.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""It's not something you would expect""" start="00:04:54.240" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""in a local file running on a computer.""" start="00:04:57.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""But I've got what I wanted. Right.""" start="00:04:59.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So there's a scatter plot here, as you can see below,""" start="00:05:01.880" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""which is plotting what I specified it to do,""" start="00:05:04.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""though it looks a little dense.""" start="00:05:08.880" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template new="1" text="""Further instructions""" start="00:05:11.701" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template text="""What I can do is""" start="00:05:11.701" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I can provide further instructions as feedback.""" start="00:05:12.641" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I try to feed back on this. So I can say,""" start="00:05:16.001" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""&quot;Can you only show points where year is the multiple of 50?&quot;""" start="00:05:18.401" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So since it's starting from 1800, the data points,""" start="00:05:30.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""there are too many years,""" start="00:05:33.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""so I'll just try to thin them down a little.""" start="00:05:34.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Now what's happening in the background""" start="00:05:37.240" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""is that everything below this last instruction""" start="00:05:40.200" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""is going out as the context to the model""" start="00:05:42.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""along with the code that it wrote till now.""" start="00:05:45.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And then this instruction is added on top of it""" start="00:05:47.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""so that it basically modifies the code to make it work""" start="00:05:50.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""according to this instruction.""" start="00:05:53.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""As you can see now, the data points are much fewer.""" start="00:05:55.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""This is what I wanted also.""" start="00:05:58.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Let's also do a few more things.""" start="00:06:01.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I want to see the progression through time.""" start="00:06:02.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So maybe I'll do something like, color more recent years""" start="00:06:05.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""with a darker shade of...""" start="00:06:13.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Let's change the color map also.""" start="00:06:15.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Now, this again goes back to the model.""" start="00:06:21.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Again, everything below before this line""" start="00:06:24.160" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""is the context along with the current code,""" start="00:06:26.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and then this instruction is going to the model""" start="00:06:29.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""to make the changes. So now this should happen, I guess.""" start="00:06:31.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Once this happens. Yeah. So. OK.""" start="00:06:37.040" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So we have this new color map,""" start="00:06:41.320" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and there's also this change of color.""" start="00:06:44.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And also there's this range of color from 1800 to 2000,""" start="00:06:46.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""which is a nice addition.""" start="00:06:51.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Kind of smart. I didn't expect...""" start="00:06:53.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I didn't exactly ask for it, but it's nice.""" start="00:06:55.840" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So there's a couple more things.""" start="00:06:58.960" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Let's make it more minimal. &quot;Let's make it more minimal.""" start="00:07:00.960" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Can you remove the bounding box?&quot;""" start="00:07:07.760" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Also, let's annotate a few points.""" start="00:07:17.320" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So I want to annotate the point""" start="00:07:21.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""which has the highest GDP per capita.""" start="00:07:23.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""&quot;Also annotate the point with highest GDP per capita""" start="00:07:25.840" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""with the country and year.&quot;""" start="00:07:33.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So again, forget about the grammar.""" start="00:07:37.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""The language model works out well.""" start="00:07:41.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Usually it takes care of""" start="00:07:43.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""all those complexities for you.""" start="00:07:46.160" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""This is what we have got after that.""" start="00:07:47.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""As you can see, there's the annotation, which is here.""" start="00:07:53.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I think it's still overlapping,""" start="00:07:55.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""so probably it could be done better,""" start="00:07:56.680" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""but the box is removed.""" start="00:07:58.560" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template new="1" text="""Room for improvement""" start="00:08:00.160" video="mainVideo-matplotllm" id="subtitle"]]
+
+[[!template text="""Now, as you can see, the system is...""" start="00:08:00.160" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""You will be able to see this""" start="00:08:03.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""that the system is not really robust.""" start="00:08:04.880" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So the GitHub repository has some examples""" start="00:08:07.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""where it fails miserably,""" start="00:08:10.080" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and you'll actually have to go into the code""" start="00:08:12.120" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""to figure out what's happening.""" start="00:08:13.680" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""But we do expect that to improve slowly,""" start="00:08:15.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""because the models are improving greatly in performance.""" start="00:08:17.880" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""This is a very general model.""" start="00:08:21.040" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""This is not even tuned for this use case.""" start="00:08:22.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""The other thing is that""" start="00:08:24.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""while I was trying to provide feedback,""" start="00:08:26.640" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I was still using text here all the time,""" start="00:08:29.640" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""but it can be made more natural.""" start="00:08:32.200" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So, for example, if I have to annotate""" start="00:08:34.560" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""this particular point,""" start="00:08:36.160" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""I actually can just point my cursor to it.""" start="00:08:37.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Emacs has a way to figure out""" start="00:08:42.240" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""where your mouse pointer is.""" start="00:08:44.520" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And with that, you can actually go back into the code""" start="00:08:45.800" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""and then see which primitive""" start="00:08:49.621" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""is being drawn here in Matplotlib.""" start="00:08:51.961" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So that there is a way to do that.""" start="00:08:54.481" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And then, if you do that, then it's really nice to""" start="00:08:55.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""just be able to say""" start="00:08:58.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""put your cursor here and then say something like,""" start="00:09:01.320" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""&quot;Can you make this?""" start="00:09:04.280" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Can you annotate this point?&quot;""" start="00:09:05.000" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Because text is, you know... There are limitations to text.""" start="00:09:06.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""And if you're producing an image,""" start="00:09:10.720" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""you should be able to do that, too.""" start="00:09:12.480" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So I do expect that to happen soonish.""" start="00:09:13.960" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""If not, from the model side, the hack that I mentioned""" start="00:09:16.400" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""could be made to work.""" start="00:09:19.840" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""So that will come in in a later version, probably.""" start="00:09:21.360" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Anyway, so that's the end of my talk.""" start="00:09:24.440" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""You can find more details in the repository link.""" start="00:09:27.600" video="mainVideo-matplotllm" id="subtitle"]]
+[[!template text="""Thank you for listening. Goodbye.""" start="00:09:29.760" video="mainVideo-matplotllm" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+Questions or comments? Please e-mail [abhinav@lepisma.xyz](mailto:abhinav@lepisma.xyz?subject=Comment%20for%20EmacsConf%202023%20matplotllm%3A%20MatplotLLM%2C%20iterative%20natural%20language%20data%20visualization%20in%20org-babel)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/matplotllm-before.md b/2023/info/matplotllm-before.md
new file mode 100644
index 00000000..8286a486
--- /dev/null
+++ b/2023/info/matplotllm-before.md
@@ -0,0 +1,19 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 10-min talk; Q&A: Etherpad
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="matplotllm-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="matplotllm-mainVideo" data="""
+00:00.000 Introduction
+01:40.720 What is an LLM?
+02:23.600 Using this library
+05:11.701 Further instructions
+08:00.160 Room for improvement
+
+"""]]<div></div>Duration: 09:34 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--main.opus">Download --main.opus (5MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--main.webm">Download --main.webm (49MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-matplotllm--matplotllm-iterative-natural-language-data-visualization-in-orgbabel--abhinav-tushar--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/7bwq1vAqYzY24iEMYAdcB1">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/matplotllm-nav.md b/2023/info/matplotllm-nav.md
new file mode 100644
index 00000000..340c24f0
--- /dev/null
+++ b/2023/info/matplotllm-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/sharing">Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</a>
+Next by track: <a href="/2023/talks/voice">Enhancing productivity with voice computing</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/mentor-after.md b/2023/info/mentor-after.md
new file mode 100644
index 00000000..f51dfa88
--- /dev/null
+++ b/2023/info/mentor-after.md
@@ -0,0 +1,1792 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="mentor-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:01.380" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Hi everyone, my name is Jeremy Friesen, pronouns are he/him,""" start="00:00:01.380" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and today I'll be talking about""" start="00:00:06.320" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""mentoring VS Coders as an Emacs-ian.""" start="00:00:07.880" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""A little bit of background, since 2015, I've mentored""" start="00:00:11.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""about 40 software developers,""" start="00:00:15.000" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""many of them in career-transitioning roles,""" start="00:00:16.560" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""oftentimes from boot camps.""" start="00:00:19.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I've also managed a couple of small software development teams.""" start="00:00:21.740" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Framing approaches""" start="00:00:26.740" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""So I want to think about mentoring and the framing approaches.""" start="00:00:26.740" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""We all don't know what we don't know.""" start="00:00:30.600" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""So while mentoring, I like to be curious---asking questions,""" start="00:00:32.940" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I like to be visible,""" start="00:00:36.420" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and I also like to pair so that we can share.""" start="00:00:37.660" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""What are you looking to learn?""" start="00:00:41.940" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""When I start, I like to ask the following type of question:""" start="00:00:41.940" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""&quot;What have you been wanting to learn more of,""" start="00:00:45.300" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""get better at, and improve on?&quot;""" start="00:00:47.120" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Then I like to ask further questions to get an understanding""" start="00:00:49.360" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""of where they've been, where they're going,""" start="00:00:52.940" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and what they'd like to achieve.""" start="00:00:55.160" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Later I'll ask coaching questions, &quot;what's going well,&quot;""" start="00:00:57.280" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""&quot;where are you getting stuck,&quot;""" start="00:01:00.140" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and &quot;if you change one thing, what would it be?&quot;""" start="00:01:01.420" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Make the work visible""" start="00:01:06.000" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""So like many people, I shifted to remote work in 2020,""" start="00:01:06.000" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and I've noticed a higher collaboration in remote work,""" start="00:01:09.840" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""when folks make their work visible.""" start="00:01:13.160" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""So to do that I host office hours,""" start="00:01:15.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I try to attend other people's office hours,""" start="00:01:18.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and I'll open up a Slack huddle and just code by myself,""" start="00:01:20.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but let folks know, please hop in.""" start="00:01:23.440" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Hop in and be curious""" start="00:01:29.320" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""I like to pay attention to other huddles that start.""" start="00:01:29.320" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""If they're going still for, like, 45 minutes or so,""" start="00:01:32.040" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I'll hop in and say hello.""" start="00:01:35.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""It's even odds that they're moving along just fine""" start="00:01:36.800" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""or that they're stuck.""" start="00:01:39.400" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""So by hopping into the Slack huddle,""" start="00:01:40.800" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I'm helping with a common problem.""" start="00:01:43.280" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""How do you know when you're stuck?""" start="00:01:45.480" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""This is something that---as a manager---folks want to know,""" start="00:01:47.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""how can I get unstuck faster?""" start="00:01:50.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""As a human, it can be frustrating to be stuck for a long time,""" start="00:01:53.440" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but you also learn stuff""" start="00:01:57.120" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""when you're dealing with the hard things.""" start="00:01:58.600" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""So you really need to balance that time,""" start="00:02:00.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and I find hopping in, just being a gentle presence,""" start="00:02:03.220" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""with yes... an agenda, but just to say hi,""" start="00:02:07.160" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""is crucial to help the team members move along.""" start="00:02:10.360" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Pairing is for sharing""" start="00:02:15.880" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Pairing is for sharing.""" start="00:02:15.880" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""When I pair, I like to let others drive.""" start="00:02:17.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""They're typing and working to resolve the problem.""" start="00:02:19.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I'm giving guidance, asking questions,""" start="00:02:22.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""maybe thinking through a refactor.""" start="00:02:24.600" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I'm also spending time observing how they interact with their editor.""" start="00:02:27.120" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""In the moment, I try to limit advice to, like, one concept.""" start="00:02:31.160" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""A lot of folks don't know that `Control-a`""" start="00:02:35.840" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""will take you to the beginning of line.""" start="00:02:37.800" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Just sharing that is huge sometimes.""" start="00:02:39.720" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Just gently do it and let it float there.""" start="00:02:42.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""And assuming we have a regular mentoring session,""" start="00:02:46.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I'll make sure to ask how they're feeling""" start="00:02:48.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""about using their tools afterwards.""" start="00:02:50.400" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I would love to get to the point where they ask,""" start="00:02:52.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""&quot;You saw me using my editor, what is something""" start="00:02:55.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I could learn?&quot;""" start="00:02:58.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I'm working on getting to that point.""" start="00:03:00.960" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Editor functions""" start="00:03:03.860" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""While pairing, I like to pay attention""" start="00:03:03.860" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""to how folks handle the following.""" start="00:03:05.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Where do they want to go?""" start="00:03:07.440" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""How do they get there?""" start="00:03:08.560" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Here they are, now what?""" start="00:03:10.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""How do they summarize?""" start="00:03:12.080" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I know what I can do in Emacs,""" start="00:03:13.600" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and I assume that VS Code can do something similar.""" start="00:03:15.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""It's a matter of helping the mentees find those packages and plugins.""" start="00:03:17.400" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Where do they want to go?""" start="00:03:23.240" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Where to go?""" start="00:03:23.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Search within a project.""" start="00:03:24.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Everybody knows about this, but one thing""" start="00:03:25.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""that has been really critical for me""" start="00:03:28.000" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""has been the arrival of `Orderless`.""" start="00:03:29.800" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""A little quick demonstration.""" start="00:03:31.960" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""If I look, and I have this &quot;chicken&quot; and I do &quot;spell&quot;,""" start="00:03:34.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I have found one, and they don't have""" start="00:03:40.720" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""to be in the right order.""" start="00:03:42.201" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""In fact, I can go back, and &quot;spell&quot; is there.""" start="00:03:43.381" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Super easy, helpful, so I don't have to think about it, the order.""" start="00:03:48.040" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Search across projects.""" start="00:03:52.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Cross-repository searching is super-simple in Emacs,""" start="00:03:54.720" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and I've never seen anyone do it in VS Code.""" start="00:03:59.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I'm also trying to introduce folks to command-line tools""" start="00:04:02.740" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""such as RipGrep and SilverSearcher,""" start="00:04:05.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""not just to look in the project, but to go one directory up""" start="00:04:07.960" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and look across projects""" start="00:04:10.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""because sometimes when you're working on lots of different projects,""" start="00:04:12.000" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""there might be solutions or ideas that come from there.""" start="00:04:15.060" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Also notice that a lot of people use directory trees to navigate,""" start="00:04:19.960" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but I favor the fuzzy text.""" start="00:04:23.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""So I can do something like `Command-t`""" start="00:04:25.600" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and start looking for things in there.""" start="00:04:27.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I just type the name of the file.""" start="00:04:31.280" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I use `consult-projectile`,""" start="00:04:33.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""which has a lot of really cool functionality.""" start="00:04:35.320" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""The big one being I can type `r`, recent file.""" start="00:04:39.540" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I can type `p` and jump to a different project,""" start="00:04:43.080" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""so it's a quick navigation tool that I've not seen in VS Code.""" start="00:04:47.720" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""How do they get there?""" start="00:04:53.440" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Next up is how do they get there?""" start="00:04:53.440" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I like to use LSP for the languages,""" start="00:04:56.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and I bound `M-.` to this""" start="00:04:58.960" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and jump back and forth to definitions.""" start="00:05:02.880" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I just showed `projectile` or `consult-projectile`""" start="00:05:05.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and its super-amazing multifunction finder.""" start="00:05:09.440" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Also another one that I am very avid about""" start="00:05:12.860" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""is the jump between definition and test.""" start="00:05:15.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I bind that to `Super-.`""" start="00:05:19.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and it helps me jump back and forth""" start="00:05:22.840" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""between my production code and my test code---""" start="00:05:25.840" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""especially in Ruby, there's an idiom for that.""" start="00:05:28.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""There is plugins in VS Code that does this correctly.""" start="00:05:32.120" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Here they are, now what?""" start="00:05:36.640" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Next up, now I'm here, what do I do?""" start="00:05:36.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Word completion, Emacs just knocks everything out of the park:""" start="00:05:39.400" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""`dabbrev`, `templates`, `hippie-expand`, `completion-at-point`.""" start="00:05:44.600" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Sometimes it just hurts to watch people type stuff""" start="00:05:48.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""that they could quickly expand""" start="00:05:52.080" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""because there are words within the code.""" start="00:05:54.320" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Another one is auto-formatting.""" start="00:05:56.300" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Tree sitter...its arrival is great.""" start="00:05:57.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I assume this is going to get better.""" start="00:06:00.040" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I love highlighting a region, hitting `TAB`, and it's just formatted.""" start="00:06:01.480" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I've seen a lot of VS Coders... that doesn't work for them.""" start="00:06:04.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Don't know why, trying to get them to see it.""" start="00:06:08.761" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Multi-cursor [`multiple-cursors`] and `iedit`...""" start="00:06:11.080" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""took me a long time to explore `iedit`,""" start="00:06:12.901" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but the practice... but practicing was huge,""" start="00:06:14.800" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and it has transformed my approach to coding and typing.""" start="00:06:17.840" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Folks know about multi-cursor editing and editing-in-region""" start="00:06:21.480" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but make sure that they are aware of it.""" start="00:06:24.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""It's important.""" start="00:06:27.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Next up is inline searching.""" start="00:06:29.720" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""My beloved Textmate... it was the first thing.""" start="00:06:32.620" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""In fact, it was why I chose not to use Emacs in 2005""" start="00:06:35.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and went with Textmate.""" start="00:06:38.440" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""This is something quite simple.""" start="00:06:41.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I can do `search` within here, and I can see &quot;introduced&quot;,""" start="00:06:43.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and it will show me the line.""" start="00:06:50.000" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""What I like about that is when I'm in code,""" start="00:06:52.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I can see the neighborhood of other things""" start="00:06:54.120" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and get a good idea of what's around.""" start="00:06:56.320" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Yes, there is `occur-mode` that can be super useful,""" start="00:06:58.360" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but I'm used to the Textmate in it.""" start="00:07:01.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I just love it.""" start="00:07:03.840" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""How do they summarize?""" start="00:07:06.640" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Next up is how they summarize.""" start="00:07:06.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I've seen a lot of bootcamp graduates write commit messages""" start="00:07:08.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""by going to the command line.""" start="00:07:11.720" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""In my experience, commit messages written in the command line""" start="00:07:14.380" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""tend to be terse.""" start="00:07:17.040" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""They miss something.""" start="00:07:18.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""So I try to really quickly shift folks to use their text editor,""" start="00:07:19.160" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""encourage them and""" start="00:07:23.480" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""teach them about `$GIT_EDITOR` and `$EDITOR` for the environment variables""" start="00:07:24.400" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""so they can make their commits from the command line.""" start="00:07:28.040" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""And if not there, help them improve how they do VS Code.""" start="00:07:31.000" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""My little screed at the top:""" start="00:07:34.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""the interface for VS Code's commit is trash.""" start="00:07:35.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""It is why I stepped away from VS Code when I was exploring editors.""" start="00:07:38.960" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""General strategies""" start="00:07:44.440" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Next up, my goal is to encourage folks to use editors for writing,""" start="00:07:44.440" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""to think about owning that tool.""" start="00:07:48.440" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Commit to one item of learning each week""" start="00:07:52.060" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""I have them try to learn one thing a week.""" start="00:07:52.060" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Maybe they aren't going to learn it,""" start="00:07:54.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but just not to overwhelm them""" start="00:07:55.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and find those high-value things.""" start="00:07:57.800" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Jump to spec, jump to code... super-valuable""" start="00:07:59.880" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""because I see folks doing it a lot during the day,""" start="00:08:03.720" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and it can really speed up the transition time""" start="00:08:06.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and keep the focus between the test...""" start="00:08:10.080" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""what you're trying to test and what you're trying to define,""" start="00:08:12.760" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""which can get lost if you do the tree navigation.""" start="00:08:15.480" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Practice within your knowledge domain""" start="00:08:18.960" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Also I encourage people to practice their domain knowledge.""" start="00:08:18.960" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I learned a lot about programming by doing a bunch of things""" start="00:08:22.880" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""related to RPGs---role-playing games.""" start="00:08:27.160" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I did this previously in Ruby---dice rollers, note takers,""" start="00:08:30.020" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""random table lookups---and now I'm doing it in Emacs.""" start="00:08:33.120" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Knowing the domain helps me set aside the problem space""" start="00:08:35.880" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and then explore how I code""" start="00:08:40.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and how I can implement things differently.""" start="00:08:42.000" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Note-taking""" start="00:08:47.120" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Note-taking: pay attention to how folks create a fleeting note.""" start="00:08:47.120" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""It can be excruciating as they try to figure out""" start="00:08:51.240" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""&quot;where am I going to put this?&quot;""" start="00:08:54.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""&quot;What file?&quot;""" start="00:08:55.600" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""&quot;Where does it go?&quot;""" start="00:08:56.160" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Emacs, we have the *scratch* buffer or anything else,""" start="00:08:57.660" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but ask them about their note-taking habits""" start="00:09:01.760" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Help them navigate the proprietary software tar pits""" start="00:09:07.120" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""and help them navigate the proprietary software tar pits.""" start="00:09:07.120" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""We know that anything that is venture-capital funded""" start="00:09:11.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""will eventually collapse.""" start="00:09:14.360" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""We know that things that don't have a sustainable business model""" start="00:09:16.040" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""without surveillance capitalism""" start="00:09:20.920" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""is going to also have problems.""" start="00:09:22.400" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Encourage folks to think about how they're owning their notes.""" start="00:09:25.300" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Do they place true value on those,""" start="00:09:28.560" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""or are they things that are kind of ephemeral?""" start="00:09:30.640" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""And then help them find the thing that makes sense for them.""" start="00:09:33.120" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Help show the joy of holisting computering""" start="00:09:38.520" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""Put another way, I want people to think holistically""" start="00:09:38.520" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""about their generalized &quot;computering&quot; environment.""" start="00:09:43.240" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Playing is for staying""" start="00:09:47.740" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""And I also think about the reason why""" start="00:09:47.740" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I've stayed a software developer for 25-years plus""" start="00:09:50.080" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""is because I approach all of this as play and storytelling.""" start="00:09:53.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Sometimes happy byproduct is that I ship features and documentation""" start="00:09:58.000" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""and help people get stuff done.""" start="00:10:02.440" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Yet I don't tell folks to use Emacs.""" start="00:10:05.200" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Instead, I'm doing my best to show a myriad of reasons""" start="00:10:07.960" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""for why folks should consider Emacs.""" start="00:10:10.720" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:10:14.900" video="mainVideo-mentor" id="subtitle"]]
+
+[[!template text="""In conclusion, ask questions.""" start="00:10:14.900" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Find a person who is a VS Coder and just say,""" start="00:10:18.740" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""&quot;hey, I learned something new.&quot;""" start="00:10:22.400" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""We play this game all the time, me and my coworker Kirk.""" start="00:10:23.880" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""I love it.""" start="00:10:26.720" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Another goal is showing the malleability of Emacs,""" start="00:10:27.700" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""how easy it is to extend.""" start="00:10:31.480" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""And obviously there's so much more than what I've highlighted,""" start="00:10:34.400" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""but then again, that's Emacs.""" start="00:10:36.680" video="mainVideo-mentor" id="subtitle"]]
+[[!template text="""Thank you, and I look forward to your questions.""" start="00:10:38.720" video="mainVideo-mentor" id="subtitle"]]
+
+
+
+Captioner: hannah
+
+<a name="mentor-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: 2 seconds. And I think we are live.""" start="00:00:09.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Hi, Jeremy, how are you doing?""" start="00:00:10.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right. I'm doing all right.""" start="00:00:11.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""How about you?""" start="00:00:12.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'm doing great as well.""" start="00:00:14.759" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm really happy to see all the talk that""" start="00:00:16.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we're having. And I was particularly excited""" start="00:00:18.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""when I got your proposal for this talk""" start="00:00:21.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because mentoring, as I was telling you""" start="00:00:24.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""during the check-in process,""" start="00:00:25.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""is a subject dear to my heart.""" start="00:00:27.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I'm really excited,""" start="00:00:28.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""not only for the talk that you've just done,""" start="00:00:30.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but also for the question that people are""" start="00:00:32.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""going to ask you.""" start="00:00:32.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I'm looking forward to answering some""" start="00:00:35.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""questions. Mentoring is also something near""" start="00:00:39.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and dear. Something I did not mention is when""" start="00:00:43.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""folks would ask me, like,""" start="00:00:45.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""what was your most important class?""" start="00:00:47.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Or I said, oh, easy, easy,""" start="00:00:48.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""easy, high school English.""" start="00:00:50.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like, it's my whatever your primary written""" start="00:00:54.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and spoken languages I think is the most""" start="00:00:56.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""useful skill as a programmer""" start="00:00:58.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: right so as usual people if you want to ask""" start="00:01:05.379" video="qanda-mentor" id="subtitle"]]
+[[!template text="""questions to Jeremy, feel free to find the""" start="00:01:09.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""link to the other pad either on the talk page""" start="00:01:11.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""or on IRC. We're also going to open the chat""" start="00:01:15.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so that people can join us and ask questions.""" start="00:01:17.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Let me just make sure that I tell Sasha can""" start="00:01:20.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you open ID Mentor. All right so in the""" start="00:01:25.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""meantime what we'll do is that I'll be""" start="00:01:27.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""reading questions of the pad and Jeremy will""" start="00:01:29.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""be answering them whilst we wait for you to""" start="00:01:31.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""join. Now just to be clear with the time,""" start="00:01:32.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we have a little bit of time now,""" start="00:01:34.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a little more time than before.""" start="00:01:36.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""We have 22 minutes, so until 10 of the next""" start="00:01:39.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""hours to answer as many questions as""" start="00:01:41.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""possible. And believe me,""" start="00:01:42.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""if you people watching right now are not""" start="00:01:45.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""asking questions, I will be asking plenty of""" start="00:01:47.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""them. So please, save Jeremy from my""" start="00:01:49.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: I look forward to it.""" start="00:01:53.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: inquisitive mind. All right.""" start="00:01:55.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Starting with the first question,""" start="00:01:56.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a very trivial 1, perhaps,""" start="00:01:59.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but always 1 that I ask myself when I look at""" start="00:02:01.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a keyboard. Regarding super key,""" start="00:02:03.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""which key do you bind to super?""" start="00:02:05.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so my left command,""" start="00:02:09.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""which is on a Mac keyboard,""" start="00:02:12.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so the key right to the left of the space bar""" start="00:02:16.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""is super. And the key immediately to the""" start="00:02:20.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""right of spacebar, which is the right command""" start="00:02:23.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""key, is bound to hyper,""" start="00:02:24.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""which opens up a whole new suite of keys.""" start="00:02:28.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I thought it would take a little bit to""" start="00:02:31.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""get used to, but it's been amazing.""" start="00:02:33.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I definitely recommend having a hyper""" start="00:02:37.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""binding.""" start="00:02:38.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: I will, yes. I was also going to say super""" start="00:02:42.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""binding. No, it's a hyper binding.""" start="00:02:43.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""We already have super.""" start="00:02:44.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's your Windows key or your Linux key or""" start="00:02:47.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""whatever you want to call it.""" start="00:02:48.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But I will warn people though,""" start="00:02:51.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's the gateway into fancy keyboard setups""" start="00:02:57.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because it starts, it's the Trojan horse of""" start="00:03:00.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""fancy keyboard setup. Just,""" start="00:03:02.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""oh I wish I could have another modifier.""" start="00:03:04.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then many years later,""" start="00:03:06.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you find yourself with this little thing that""" start="00:03:09.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm showing, which is a fully customized QMK""" start="00:03:11.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""keyboard.""" start="00:03:12.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: All right.""" start="00:03:13.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Following on that, then meta is to the left""" start="00:03:18.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""of super, and then control is to the left of""" start="00:03:21.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""meta. And also, caps lock maps to control as""" start="00:03:26.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""well. Definitely tried a bunch of tap for""" start="00:03:31.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""this and that on a programmable keyboard,""" start="00:03:35.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I have settled on keep it simple and use""" start="00:03:39.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""something like carabiner elements to do most""" start="00:03:41.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. It's good that you were able to stop""" start="00:03:46.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""there. I wish I'd stopped there at some point""" start="00:03:48.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: of the mapping. It was a terrible moment""" start="00:03:50.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""where I'm like, oh, what have I done when I""" start="00:03:52.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""was trying to type once?""" start="00:03:53.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: in my life. All right,""" start="00:03:57.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""moving on to the next question.""" start="00:03:58.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Great talk. What's the package you used to""" start="00:04:01.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""make the org slide?""" start="00:04:02.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: So yeah, it's great. Yeah,""" start="00:04:03.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so I am using Protz Logos and have,""" start="00:04:13.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I think, like, Olivet mode.""" start="00:04:15.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'll post a link to the configuration for""" start="00:04:19.959" video="qanda-mentor" id="subtitle"]]
+[[!template text="""turning it on and off.""" start="00:04:21.019" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But it's basically narrow region to an org""" start="00:04:24.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""heading, which is, I find that to be super""" start="00:04:27.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""helpful. Don't have to fiddle with it.""" start="00:04:30.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, just to be clear,""" start="00:04:32.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's Olivetti, right? I think that's the...""" start="00:04:34.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh yeah, Olivetti, yeah.""" start="00:04:36.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: A typical Italian word that is really tough""" start="00:04:39.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to pronounce between Europeans and people in""" start="00:04:42.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I had a... For some reason I dropped""" start="00:04:46.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the I at the end. So in my head""" start="00:04:48.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: the US. Yeah, moving to the next question if""" start="00:04:52.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""people do get interested in picking up emacs""" start="00:04:54.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because of what they see you do How do you""" start="00:04:56.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""recommend they say they get into it?""" start="00:04:58.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Oh""" start="00:04:58.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so I've been I think a lot of it comes""" start="00:05:05.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""down to what are the problems that they're""" start="00:05:09.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""trying to solve. And so I walked them through""" start="00:05:11.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""my journey. I worked in TextMate for a long""" start="00:05:15.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""time, then Sublime, then Atom.""" start="00:05:16.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then in 2020, I hopped over to Emacs,""" start="00:05:20.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""started writing in it and I chose Space Max""" start="00:05:25.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and then I chose Doom.""" start="00:05:26.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then I was like, wait,""" start="00:05:28.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""start over, erase everything and just do the""" start="00:05:33.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""tutorial. So I did the tutorial and then I""" start="00:05:36.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""started writing and I was like,""" start="00:05:37.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""oh, I really want this functionality.""" start="00:05:39.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so I went and I looked for it and I""" start="00:05:43.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""installed the package.""" start="00:05:44.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then I got the functionality,""" start="00:05:46.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""went back to writing, and I'm like,""" start="00:05:47.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""oh, my editor should really be able to do""" start="00:05:49.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""this. And I thought about it.""" start="00:05:52.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So a lot of it came down to the experience of""" start="00:05:55.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""what they're trying to accomplish.""" start="00:05:56.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And really helping ask them that.""" start="00:06:00.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I had 1 mentee had used Vim for a long time""" start="00:06:04.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and then was exploring using Evil Mode and""" start="00:06:07.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs and we had conversations and it was""" start="00:06:13.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like go back to Vim like you were using VS""" start="00:06:16.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Code just go back to Vim and they went back""" start="00:06:19.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to Vim and then they started writing,""" start="00:06:20.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""well, they went to NeoVim and they started""" start="00:06:22.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""writing Lua plugins for stuff and it just""" start="00:06:27.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""helped free them and they gained that""" start="00:06:29.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""ownership in their text editor.""" start="00:06:31.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I try to have them think through what are""" start="00:06:37.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the common tasks that they're trying to""" start="00:06:40.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""accomplish and then thinking in terms of""" start="00:06:44.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that. So instead of going and finding a""" start="00:06:46.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""solution, understand the problems they're""" start="00:06:48.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""experiencing, which tends to be what we""" start="00:06:52.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""should do in software development.""" start="00:06:53.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Instead of implementing the solve a problem.""" start="00:06:57.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Sometimes It's fun to implement an idea.""" start="00:07:02.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I think it's really the crux,""" start="00:07:04.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""really, when it comes to software""" start="00:07:06.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""development, because what is at the crux of""" start="00:07:08.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""any kind of engineering?""" start="00:07:09.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Well, it's the problem you're trying to""" start="00:07:11.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""solve. If you've got 2 islands and you need""" start="00:07:13.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to join them up together,""" start="00:07:14.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""well, I need to build a bridge.""" start="00:07:15.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Now, obviously with software,""" start="00:07:17.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we have problems that defy the law of""" start="00:07:19.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""physics, which is great because we get very""" start="00:07:21.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""complex problems that are very exciting to""" start="00:07:23.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""solve. But when it comes to onboarding people""" start="00:07:26.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""into those ways of solving problems,""" start="00:07:28.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""well, I think mentoring,""" start="00:07:29.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""The key behind mentoring is that together,""" start="00:07:32.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we're going to look at a problem and we're""" start="00:07:35.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""going to try to see how high would fix it.""" start="00:07:37.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And you're going to try to appreciate whether""" start="00:07:40.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""this is something you would do as well or""" start="00:07:42.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""would like to do.""" start="00:07:43.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yep, Absolutely. Yeah,""" start="00:07:50.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's really taking time to walk with them on""" start="00:07:54.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the journey to understand what's frustrating""" start="00:07:56.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""them. I have a coworker we've been working""" start="00:07:59.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""together for a very long time.""" start="00:08:01.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""She is not a fast navigator of her editor,""" start="00:08:05.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but as we've talked, that's not where she's""" start="00:08:08.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""looking to get better.""" start="00:08:09.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""She's looking to get better at asking the""" start="00:08:17.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""questions of the clients early so that we""" start="00:08:20.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""don't go down long paths of implementation.""" start="00:08:23.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So it's been great because she's not looking""" start="00:08:27.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to get better at her text editor.""" start="00:08:29.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""She's adequate for how she navigates.""" start="00:08:32.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Other people look and they're like,""" start="00:08:34.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""man, I want to do it faster.""" start="00:08:35.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want to do it different.""" start="00:08:36.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want to do it better.""" start="00:08:37.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then we have a different conversation.""" start="00:08:39.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. All right. Moving on to the next""" start="00:08:44.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""question. I've been using Emacs for about 30""" start="00:08:46.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""years and I find it really difficult to""" start="00:08:49.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""figure out how to help people get started""" start="00:08:50.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""with it So I guess my question is the same as""" start="00:08:54.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the green question right about it.""" start="00:08:55.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I think it's slightly different though You""" start="00:08:57.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""could it is more about well go on please.""" start="00:09:00.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Yeah""" start="00:09:01.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: so My wife a while ago,""" start="00:09:06.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""talked about the idea of,""" start="00:09:10.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""relative to anybody, I am an expert or""" start="00:09:15.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""slightly more informed on a topic than the""" start="00:09:19.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""person quote behind me.""" start="00:09:20.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And there's a person ahead of me who's""" start="00:09:22.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""slightly more informed than I am.""" start="00:09:24.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so what we're looking at is perhaps with""" start="00:09:27.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""30 years of experience,""" start="00:09:28.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""introducing someone to Emacs might be""" start="00:09:32.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""difficult because you've you're too much of""" start="00:09:35.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""an expert. So maybe the there's a an idea of""" start="00:09:41.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like what are the principles of pedagogy.""" start="00:09:42.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I know we that was talked about yesterday in""" start="00:09:45.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a presentation about like here's a""" start="00:09:47.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""constraint, you're using Emacs for the""" start="00:09:49.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""course. But so it's that idea of sharing what""" start="00:09:54.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you have, where you're at,""" start="00:09:56.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""will, I think by nature,""" start="00:10:00.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""move the entire queue of people,""" start="00:10:03.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like they don't really exist.""" start="00:10:04.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I mean, they do, but they don't.""" start="00:10:06.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Behind you, it'll help move them together""" start="00:10:08.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""forward just a little bit.""" start="00:10:10.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And maybe we all move the condition together.""" start="00:10:13.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So It's not a only 1 person kind of thing.""" start="00:10:17.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's a mindset of improving shared""" start="00:10:22.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""understanding.""" start="00:10:22.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Exactly, and I'd like to come back on""" start="00:10:26.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""something that you mentioned in your answer,""" start="00:10:28.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because it's, you know,""" start="00:10:30.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""what the person asking the question""" start="00:10:33.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""mentioned, 30 years of advance,""" start="00:10:35.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""basically, on starting Emacs.""" start="00:10:36.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""You know, that's a lot of time,""" start="00:10:37.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And you tend to equate this to a massive gap""" start="00:10:40.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""in terms of skills between the 2 people.""" start="00:10:42.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And whilst it's obvious that would be a gap""" start="00:10:47.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""of skills. You know, I find that learning in""" start="00:10:50.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""terms of pedagogy works best when the person""" start="00:10:54.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""doing the teaching is very close in terms of""" start="00:10:58.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""skill levels to the person being taught.""" start="00:11:00.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Why is it the case? It's because it's much""" start="00:11:02.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""fresher in their memory what are the""" start="00:11:05.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""different elements that they have to go""" start="00:11:08.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""through to acquire a particular skill.""" start="00:11:09.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""To go a little bit into the theory,""" start="00:11:12.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm not sure if you're familiar with Vygotsky""" start="00:11:14.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""or at least the I plus 1.""" start="00:11:16.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Are you familiar with this,""" start="00:11:17.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: I am not, go on.""" start="00:11:20.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Jeremy? So I used to be a teacher before,""" start="00:11:22.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and it's 1 of the things they taught us.""" start="00:11:24.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's about the fact that when you are trying""" start="00:11:26.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to make someone acquire a skill,""" start="00:11:28.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I represents the current knowledge,""" start="00:11:31.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and plus 1 is the thing that you should be""" start="00:11:34.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""teaching them and the theory behind it is""" start="00:11:38.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that it's much easier to teach someone to""" start="00:11:41.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""teach something to someone when they only""" start="00:11:44.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""have to focus on plus 1 i.e.""" start="00:11:46.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Something that is very close nearby to them""" start="00:11:48.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""If you go with something that is I plus 2,""" start="00:11:50.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I plus 3, or god forbid I plus 10,""" start="00:11:53.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's going to be much harder for them to get""" start="00:11:55.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to the understanding because the distance is""" start="00:11:58.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""much greater. And that's why I think""" start="00:12:01.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""mentoring can be taken in 2 ways.""" start="00:12:05.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It could be a mentor who's merely ahead of""" start="00:12:07.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you by plus 1, or it could be a mentor that""" start="00:12:10.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""is ahead of you by plus 10,""" start="00:12:12.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but who has the understanding of what plus 1,""" start="00:12:14.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""plus 2, and plus 3 is.""" start="00:12:15.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, and it can be very challenging to""" start="00:12:22.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""unwind that. I know if we think about all of""" start="00:12:27.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""our hands or input methods have a memory of""" start="00:12:33.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""something that I honestly couldn't tell you""" start="00:12:35.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""what it is. Right? Like,""" start="00:12:38.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I know how to do it on a keyboard,""" start="00:12:40.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""right? We've internalized so much.""" start="00:12:43.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so, yeah, how to walk backward is a""" start="00:12:47.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""distinct challenge and being curious with""" start="00:12:51.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""them and close to them and not asking,""" start="00:12:55.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""trying to diffuse questions and not ask like""" start="00:13:00.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""leading, not overly leading.""" start="00:13:03.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""An example, early on in my mentoring career,""" start="00:13:09.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I was working in a community project,""" start="00:13:11.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and I really wanted to go in and say to""" start="00:13:14.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""everybody, why do we suck at sharing code?""" start="00:13:18.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But instead I said, wait a minute,""" start="00:13:21.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""what would be the question I could ask the""" start="00:13:24.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""group in which I could then ask my question?""" start="00:13:27.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So instead I went into the group and I said,""" start="00:13:30.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how are we doing about sharing code?""" start="00:13:32.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And collectively, we were able to establish""" start="00:13:37.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we didn't feel very good about it.""" start="00:13:39.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And that conversation now 9 years ago,""" start="00:13:42.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""helped move a process along for the last,""" start="00:13:47.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like it gave it energy for 9 years of how""" start="00:13:50.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we're sharing and how we're approaching""" start="00:13:51.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""stuff. So yeah, the curious questions are""" start="00:13:58.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""super helpful.""" start="00:14:00.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right, lovely way to finish this point.""" start="00:14:04.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""We have about 10 more minutes so I'm glad""" start="00:14:06.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that we have a little bit of extra time to""" start="00:14:08.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""answer the questions because we have a little""" start="00:14:10.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more. All right, I'm gonna switch to the next""" start="00:14:13.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""question we can come back to people reacting""" start="00:14:15.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to what you just said a little bit later.""" start="00:14:16.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Sure.""" start="00:14:17.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right, have you encountered anyone that""" start="00:14:20.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""are being negative about the fact that you're""" start="00:14:23.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""using Emacs, assuming that they just don't""" start="00:14:26.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""know or have misconceptions about Emacs and""" start="00:14:28.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""nothing malicious? If so,""" start="00:14:30.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how do you handle these kinds of people?""" start="00:14:32.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure, So at work, I get a gentle elbowing of""" start="00:14:40.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like, oh, Jeremy's going to talk about Emacs""" start="00:14:42.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""again. So it's not entirely...""" start="00:14:45.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Maybe it's a little dismissive,""" start="00:14:50.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I don't actually care because like it's""" start="00:14:56.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like being, I don't know,""" start="00:15:00.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's like being made fun of for using a""" start="00:15:02.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""particular type of pen.""" start="00:15:03.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like goal is to write something,""" start="00:15:05.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""right? And I'm using a pen that gives me joy.""" start="00:15:09.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""When I talk with my mentees,""" start="00:15:11.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like I want to meet them exactly where""" start="00:15:14.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they're at with their code and like what""" start="00:15:16.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they're comfortable with and help them remove""" start="00:15:20.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""any of that potential like inadequacy,""" start="00:15:23.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""sense of inadequacy or imposter syndrome or""" start="00:15:27.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""any of those things because The goal is to,""" start="00:15:32.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""for me, to be better at computering.""" start="00:15:36.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like hop on my computer.""" start="00:15:39.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want to be able to use it at a speed of""" start="00:15:45.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thought that doesn't introduce a lot of""" start="00:15:47.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""friction. Another speaker talked about that""" start="00:15:50.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""using HyperBowl and a couple of plugins to""" start="00:15:54.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""write stream of consciousness.""" start="00:15:55.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And that was an important consideration.""" start="00:15:57.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want my text editor to flow with me.""" start="00:16:01.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so I'm like, well,""" start="00:16:02.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs flows with me smooth.""" start="00:16:03.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like you can deride it all you want.""" start="00:16:08.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It doesn't thread very well,""" start="00:16:09.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but it's just me on this machine.""" start="00:16:12.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I don't need it to overly thread,""" start="00:16:14.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""at least for my use cases.""" start="00:16:15.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I can only agree 100% with what you've""" start="00:16:22.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""just said. And it's very easy to dismiss""" start="00:16:25.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""stuff like Vim or Emacs based on the very""" start="00:16:28.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""trite sentences that everyone use.""" start="00:16:31.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But at the end of the day,""" start="00:16:32.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I really like what you said.""" start="00:16:33.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Those are just pencil that we're using to""" start="00:16:36.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""express ourselves. And we're doing something""" start="00:16:39.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a little more fancy than just writing words""" start="00:16:41.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""on a page. But ultimately,""" start="00:16:43.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's just text at the very bottom.""" start="00:16:46.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So whatever helps us write this test,""" start="00:16:48.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""this text more easily,""" start="00:16:50.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, it's always good.""" start="00:16:52.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Yeah. All right. Moving on to the next""" start="00:16:56.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""question. I love the attitudes and worldview""" start="00:16:59.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that infuse your blog post and your talk this""" start="00:17:02.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""weekend. Learn something every week.""" start="00:17:05.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's cumulative. English class was the most""" start="00:17:08.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""important. What other advice do you have and""" start="00:17:11.319" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how is it generalizable to those of us who""" start="00:17:13.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""are not devs?""" start="00:17:14.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure. So I think 1 of the really big changes""" start="00:17:26.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""for me, and I talked about this in the""" start="00:17:29.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""writing Q&A, is switching my blog from a""" start="00:17:34.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""topical 1 about role-playing games and board""" start="00:17:38.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""games into anything that I think I want to""" start="00:17:43.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""write. And that shift happened about the time""" start="00:17:47.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that I was really exploring using Emacs for""" start="00:17:50.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""writing. And so previously I had,""" start="00:17:54.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I would write blog posts in Markdown using,""" start="00:17:57.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""or I would write it in the web interface.""" start="00:18:00.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And getting to the point where my writing was""" start="00:18:06.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the same as my coding,""" start="00:18:08.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""was the same as my RSS consumption,""" start="00:18:12.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""was the same of a lot of these things,""" start="00:18:15.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""freed up my general interests so that they""" start="00:18:21.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""all can kind of play in that space.""" start="00:18:23.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So and that's the, I think,""" start="00:18:27.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Feynman said, like, his notes are his""" start="00:18:33.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thoughts. It's not him thinking,""" start="00:18:35.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I mean, they are him thinking as well.""" start="00:18:38.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So it's really framing it that way.""" start="00:18:40.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then for not devs,""" start="00:18:44.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""My daughter has been doing screenwriting and""" start="00:18:49.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""she just had her school license for the tool""" start="00:18:53.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that they use for writing screenplays.""" start="00:18:54.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""She had to pay for it on her own.""" start="00:18:57.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I was like, hey, let's take a look at""" start="00:18:59.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs. There's a package for this.""" start="00:19:01.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Maybe it makes sense to you.""" start="00:19:03.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I think the, really to summarize it is""" start="00:19:09.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like the broad curiosity in like,""" start="00:19:12.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I have a liberal arts degree,""" start="00:19:14.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I have barely any computer science classwork""" start="00:19:20.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""practice. I have a lot of practical""" start="00:19:23.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""experience doing software development,""" start="00:19:26.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but theory is minimal.""" start="00:19:28.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Instead, I look to things like Lord of the""" start="00:19:32.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Rings or role-playing games or poetry or""" start="00:19:35.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""history or whatever and be curious and Then""" start="00:19:40.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""be playful The introduction of git locally""" start="00:19:47.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""where I can just have a Git repo means my""" start="00:19:51.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""text is recoverable. I don't,""" start="00:19:56.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I can play. I'll just break it,""" start="00:19:59.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'll change it. It's software,""" start="00:20:00.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""let it be soft. It's not hard.""" start="00:20:02.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It can be hard to work with it,""" start="00:20:05.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but let it be soft. Let it be pruned,""" start="00:20:08.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""let it go away, let it die,""" start="00:20:09.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""let it come back.""" start="00:20:11.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, That's a lovely attitude to have.""" start="00:20:16.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I mean, I've already talked about my past as""" start="00:20:20.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""an English major in 1 of the EmacsConf talks,""" start="00:20:23.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but just like you, I don't have a comp sci""" start="00:20:26.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""education. I just started with needing a""" start="00:20:30.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""better pen, and that was about 10 years ago.""" start="00:20:32.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And now I find myself hosting Emacs Cons,""" start="00:20:36.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but it was a very incremental process,""" start="00:20:38.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a very cumulative process,""" start="00:20:40.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to reuse the word that we used before.""" start="00:20:42.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And What I also like about people outside of""" start="00:20:48.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""CompSight using Emacs,""" start="00:20:49.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and we've got plenty of such examples in the""" start="00:20:53.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""presentations we've had this year,""" start="00:20:54.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but also last year, is that you get so many""" start="00:20:57.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""different windows into how people are using""" start="00:21:00.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs, and it kind of harks back to what I""" start="00:21:03.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""was saying before about Emacs being a""" start="00:21:06.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""platform with many horizontal packages""" start="00:21:08.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""permitting any kind of workflow imaginable""" start="00:21:10.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and some people are going to gravitate""" start="00:21:13.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""towards old mode. I think it was your sister""" start="00:21:16.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that you mentioned that was looking into""" start="00:21:18.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""packages for writing screenplays.""" start="00:21:20.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Well, we've got such a thing in Emacs.""" start="00:21:23.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I mean, a screenplay is just a monospace font""" start="00:21:26.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""with some fancy formatting.""" start="00:21:27.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's not very complicated.""" start="00:21:29.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And if you can get behind,""" start="00:21:32.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, someone using such a stable format""" start="00:21:36.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""for writing screenplay with many rules,""" start="00:21:38.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but ultimately all the screenplay look the""" start="00:21:40.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""same, well, Emacs is kind of just the same.""" start="00:21:42.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's about standardizing the way you edit""" start="00:21:45.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""text. So I think your sister was already half""" start="00:21:47.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, it was my it was my my daughter.""" start="00:21:51.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm trying to sell her on.""" start="00:21:52.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: on the idea. Oh, no, sorry.""" start="00:21:53.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, she also picked up programming just 1""" start="00:21:56.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""day and was like, I forget that.""" start="00:21:58.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like she was playing with a stage manager""" start="00:22:01.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""programming thing or like have a little""" start="00:22:03.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""avatars moving around.""" start="00:22:04.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so she's got a predisposition to like the""" start="00:22:11.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""craft of things. And I think that's another""" start="00:22:15.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""aspect is like, I'm not,""" start="00:22:18.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I mean, I appreciate science.""" start="00:22:21.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm here for a scientific approach,""" start="00:22:23.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I also Really enjoy the craft of things""" start="00:22:27.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Playing with it Like this is my playground.""" start="00:22:32.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I love kind of hacking on it and looking at""" start="00:22:36.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""packages and Seeing how I might use it pick""" start="00:22:39.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it up for a little bit and then maybe I""" start="00:22:42.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""forget about it""" start="00:22:42.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, well Jeremy I think that was Lovely""" start="00:22:47.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""finish. Oh, sorry plasma.""" start="00:22:49.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Oh, sorry. I thought he was someone on Mumble""" start="00:22:51.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""talking to me. I'm actually going to have to""" start="00:22:54.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""be sorry because we only have about 50""" start="00:22:56.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""seconds until we move on to the next talk.""" start="00:22:58.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But please, Plasma Strike,""" start="00:22:59.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""If you want to ask your question to Jeremy,""" start="00:23:01.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""by all means, stay in the room.""" start="00:23:02.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yep, I'll be here.""" start="00:23:04.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: And we'll be recording all of this and we'll""" start="00:23:07.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""put this later on the talk page.""" start="00:23:09.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So Jeremy, I'll have to say bye now because I""" start="00:23:12.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""need to prepare the next room.""" start="00:23:13.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But It was lovely talking with you and thank""" start="00:23:16.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you for all your answers.""" start="00:23:17.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Absolutely. Thank you.""" start="00:23:19.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 0]: Bye-bye. Bye.""" start="00:23:21.220" video="qanda-mentor" id="subtitle"]]
+
+[[!template new="1" text="""Start of section to review""" start="00:23:26.400" video="qanda-mentor" id="subtitle"]]
+
+[[!template text="""[Speaker 2]: See you. Hello. One of the things with Emacs is""" start="00:23:26.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's not... It's like when you change the""" start="00:23:28.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""file management, you just change very,""" start="00:23:30.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""very small amounts of what exactly you need,""" start="00:23:33.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you want to change. Like you go from text""" start="00:23:38.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""editing to your file manager,""" start="00:23:43.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you're not changing your theme,""" start="00:23:44.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you're not changing your font.""" start="00:23:46.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: And you""" start="00:23:49.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: use your bookmarks, you use your bookmarks in""" start="00:23:52.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""your emails, you use your bookmarks in your""" start="00:23:54.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""org-mod documents, you use it in E-dub,""" start="00:23:59.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""W-W buffers if you use that,""" start="00:24:02.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but it's just the, Yeah,""" start="00:24:06.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's just the least amount of Incremental""" start="00:24:10.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""changes""" start="00:24:10.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: yeah, you're when you were talking about like""" start="00:24:14.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the Reducing friction like turn off editing""" start="00:24:18.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""or not editing, but auto correct while you're""" start="00:24:22.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""typing, it's absolutely spot on.""" start="00:24:25.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""You're wanting to get whatever is flowing""" start="00:24:29.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""needs to keep flowing,""" start="00:24:31.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like as a programmer or as a creative,""" start="00:24:33.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""anytime I can hit flow is my goal.""" start="00:24:38.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so paying attention to what removes flow""" start="00:24:42.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""or hinders it or saps energy and that unified""" start="00:24:48.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""environment of Emacs is really helpful to""" start="00:24:52.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""maintain that. So yeah.""" start="00:24:57.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: I think it's about speed and then once after""" start="00:25:02.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you get some of that, then you're like,""" start="00:25:04.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""well, yeah, it's important,""" start="00:25:06.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but this is like the last thing I care about.""" start="00:25:09.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. Speed is all like,""" start="00:25:14.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Yeah, there's a quote that I love called,""" start="00:25:19.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I forget the author. It's,""" start="00:25:22.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""there is a connection between slowness and""" start="00:25:30.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""remembering and fastness and forgetting.""" start="00:25:33.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And the slowness is an interesting,""" start="00:25:39.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like it's, I am moving fast in Emacs because""" start="00:25:43.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I've forgotten how I'm doing it.""" start="00:25:46.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I just do it now, right?""" start="00:25:47.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then the slowness of like being in my""" start="00:25:52.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thought and staying on that stream is where I""" start="00:25:57.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""want to be and ride whatever that pathway is.""" start="00:26:01.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And a text editor is still hard to do that""" start="00:26:07.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because if I were using a pen and paper it's""" start="00:26:10.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more cumbersome to auto-edit.""" start="00:26:11.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But I can't get it out without losing my""" start="00:26:18.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thinking. And so I ended up having to type""" start="00:26:21.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it.""" start="00:26:21.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Something I've been experimenting with is""" start="00:26:25.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""using, well, recording.""" start="00:26:26.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Some other people are using dictation for""" start="00:26:29.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""this to just get the blur out of the ideas""" start="00:26:31.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and you can go back and glean some of that""" start="00:26:35.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""stuff out of it.""" start="00:26:36.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, what I will do when I'm capturing like""" start="00:26:41.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""quotes or epigraphs is I will almost always""" start="00:26:44.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""turn on dictation because I got a book in 1""" start="00:26:47.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""hand. So I'm like, on goes the typing.""" start="00:26:52.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And yeah, that is, there's a,""" start="00:26:56.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm really thankful that that exists as well.""" start="00:26:59.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like my mother is blind.""" start="00:27:01.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so having that helps her and me""" start="00:27:05.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""communicate Through text because we're both""" start="00:27:08.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""able to appreciate it And use it in a way""" start="00:27:12.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that is accessible for both of us""" start="00:27:15.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Go ahead""" start="00:27:19.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: There's the L feet to package which will""" start="00:27:23.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""which will allow you to both of us.""" start="00:27:25.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""There's the ElfieTube package which will""" start="00:27:25.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""allow you to subscribe to a YouTube channel""" start="00:27:28.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and then download the subtitles and give you""" start="00:27:32.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""remote control access to the MPV player to""" start="00:27:36.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""watch the YouTube thing.""" start="00:27:37.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And considering you have a really big""" start="00:27:41.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""subtitle thing that you can click at the""" start="00:27:44.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""various different places,""" start="00:27:45.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's really surprising about how different""" start="00:27:47.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that makes YouTube feel.""" start="00:27:49.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah I've...""" start="00:27:50.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: And then on top of that about how much like""" start="00:27:54.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""if you've used it why would you never have""" start="00:27:57.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thought about that before because it's...""" start="00:27:59.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Right. It's even better.""" start="00:28:00.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right absolutely. Sasha?""" start="00:28:04.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Oh I would say I do use the caption slot also""" start="00:28:10.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""when I'm skimming through stuff for Emacs""" start="00:28:11.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""News. But for books specifically,""" start="00:28:13.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I often use Google Lens to just capture the""" start="00:28:18.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""text and copy it so that I don't have to deal""" start="00:28:21.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""with recognition errors or whatever.""" start="00:28:24.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""really useful.""" start="00:28:25.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's just So 1 of my hobbies is role-playing""" start="00:28:31.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""games and the tabular data that is in the""" start="00:28:35.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""role-playing books is never in correct,""" start="00:28:38.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like copy it out. And so I was like this is""" start="00:28:43.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""really annoying And I ended up taking""" start="00:28:46.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""screenshots on my machine,""" start="00:28:47.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""running Tesseract to pipe it in,""" start="00:28:50.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and then using Emacs to like edit it because""" start="00:28:53.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Tesseract adheres to the column format that""" start="00:28:57.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm looking for. And I'm really thankful that""" start="00:29:00.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we're at a place where the OCR is in good""" start="00:29:05.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""shape. That's part of my day job is working""" start="00:29:09.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""on some old documents that OCR is good,""" start="00:29:14.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but not great because of like their 19th""" start="00:29:18.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""century documents, but having that ability to""" start="00:29:23.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""me is really powerful because we're gonna be""" start="00:29:28.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""able to share that text And also then once""" start="00:29:32.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's understood in what it's ASCII or UTF-8""" start="00:29:35.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""encoding is, it can be translated as well.""" start="00:29:39.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So we can make it even more generally""" start="00:29:41.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""available, which I think is a nice thing to""" start="00:29:46.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""have.""" start="00:29:46.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: I wanted to go back to the topic of mentoring""" start="00:29:51.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""since that's something that I'm very much""" start="00:29:54.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""interested in figuring out how to facilitate""" start="00:29:55.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""in the Emacs community.""" start="00:29:56.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Other people have been working on kind of""" start="00:30:00.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""remote mentoring initiatives with Emacs""" start="00:30:03.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Buddy. And there are meetups as well that""" start="00:30:07.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""kind of get that sense of like,""" start="00:30:09.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, what people are doing things and""" start="00:30:10.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""then somebody can look over their shoulder""" start="00:30:12.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and say, hey, have you ever thought about""" start="00:30:14.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right.""" start="00:30:15.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: this? Is there any things that you can can""" start="00:30:17.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""suggest specifically in the context of this""" start="00:30:20.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""kind of mentoring over a distance?""" start="00:30:23.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Any chance you've thought about it?""" start="00:30:25.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm on the Emacs buddy repo and I've had a""" start="00:30:30.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""handful of people reach out to me.""" start="00:30:32.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Most often we start with email and every so""" start="00:30:37.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""often it'll be like, hey,""" start="00:30:38.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""let's hop on some kind of video or audio,""" start="00:30:44.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""even just done phone calls.""" start="00:30:47.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Yeah, I haven't done any of the like shared""" start="00:30:53.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""buffer stuff. I know like at work we have""" start="00:30:57.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""replit where we can use that.""" start="00:30:59.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Seeing the presentation on CDRT,""" start="00:31:02.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I was like, oh, that's really great.""" start="00:31:04.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But what I found is being able to see""" start="00:31:10.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""someone, I don't get to see them typing,""" start="00:31:15.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I get to see the results of what they're""" start="00:31:17.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""doing on the computer.""" start="00:31:18.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""You know paying attention to that is the big""" start="00:31:22.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""1 to help them think of a different way.""" start="00:31:26.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Depending on where they're at when they're""" start="00:31:28.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""writing if they are like at a pause point,""" start="00:31:32.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""if I'm at my best, I'll be like,""" start="00:31:35.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so what are you thinking?""" start="00:31:37.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Where are you stuck? Cause maybe they're""" start="00:31:40.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""trying to navigate somewhere and that starts""" start="00:31:43.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to create a point for a conversation of like,""" start="00:31:46.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how do I go from here to there?""" start="00:31:48.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so it's looking for those moments is""" start="00:31:57.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""where I try to operate.""" start="00:31:58.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: And sometimes, you know,""" start="00:32:03.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so there's kind of like,""" start="00:32:05.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how do you go from here to there?""" start="00:32:06.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And sometimes even the,""" start="00:32:08.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""what there should I be going for is a""" start="00:32:12.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""challenge, right? Because especially with""" start="00:32:15.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs newbies, they might not necessarily""" start="00:32:16.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""know what's possible or what's nearby in""" start="00:32:19.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""terms of what their current knowledge is.""" start="00:32:21.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And that's an interesting thing to map out.""" start="00:32:23.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Is that something that you've thought about""" start="00:32:25.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and as you're conversing with all these""" start="00:32:29.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""people?""" start="00:32:29.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: The main thing, the main function that I do""" start="00:32:37.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""talk, I talked about this,""" start="00:32:38.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I think in the, I did in the talk where it's,""" start="00:32:41.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I need to jump between the test and the""" start="00:32:46.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""implementation. And since 2005,""" start="00:32:50.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I've had that. And I watch folks not have""" start="00:32:56.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that. I'm just like, Oh,""" start="00:32:57.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""my goodness, like there's a convention in the""" start="00:33:00.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""language we work in. Let's get that""" start="00:33:02.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""installed. Let's get it going.""" start="00:33:04.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like that's 1 thing, that's 1 access I know""" start="00:33:07.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they're gonna go to. Another 1 is the jump to""" start="00:33:11.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""definition. And I've never gotten like C""" start="00:33:14.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""tags. I haven't really spent time on that,""" start="00:33:16.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but with the advent of LSP,""" start="00:33:18.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it works a lot better.""" start="00:33:21.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so I try to get people to use that.""" start="00:33:24.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And what I've noticed weirdly is like VS""" start="00:33:30.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""code, it doesn't work as well as I would have""" start="00:33:34.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thought. And there's lots of like errors and""" start="00:33:36.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""warnings popping up in the bottom corner.""" start="00:33:38.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I'm like, well, you gotta pay attention to""" start="00:33:41.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that. But I try not to get into anybody's""" start="00:33:45.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""business about like, I'm like,""" start="00:33:47.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""maybe we could fix that.""" start="00:33:48.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Maybe we can clean it up,""" start="00:33:50.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but it's your, you know,""" start="00:33:51.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's your car you're driving.""" start="00:33:54.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm just long for a ride.""" start="00:33:56.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's safe, we're fine.""" start="00:33:57.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So yeah, that jumped to definition.""" start="00:34:01.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then the, I mean, search in project,""" start="00:34:07.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like everybody understanding that.""" start="00:34:10.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But I feel that the, like I mentioned in the""" start="00:34:15.219" video="qanda-mentor" id="subtitle"]]
+[[!template text="""talk, the advent of orderless is just huge.""" start="00:34:17.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I did not realize how much I loved it because""" start="00:34:21.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I don't have to think about things and can""" start="00:34:24.159" video="qanda-mentor" id="subtitle"]]
+[[!template text="""have slightly more forgiving default""" start="00:34:28.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""searches. Yeah, it's hard.""" start="00:34:34.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""The principles of organizing 10 things versus""" start="00:34:39.159" video="qanda-mentor" id="subtitle"]]
+[[!template text="""100 versus 1,000 versus 10,000""" start="00:34:41.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""are just, they're not the same.""" start="00:34:44.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: A common hang up for, that would easily make""" start="00:34:52.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you skip off of Emacs,""" start="00:34:54.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Org Mode, Hyperbole is if you go into any of""" start="00:35:00.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""those with the mindset of I'm going to master""" start="00:35:03.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it all before I use it.""" start="00:35:05.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""That's not going to work.""" start="00:35:06.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Absolutely. I was terrified of org mode when""" start="00:35:13.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I started because I'm like,""" start="00:35:14.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I don't need to organize my life.""" start="00:35:16.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I need to like type. And then that,""" start="00:35:20.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""yes, incremental. What did I find helpful?""" start="00:35:24.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: It's for the, for the Linux CLI toolbox,""" start="00:35:28.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but you have to look at them as more of just,""" start="00:35:30.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I have a whole bunch of tools available to me""" start="00:35:34.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and I'll just pick them up as I have a""" start="00:35:39.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""problem and as I, and as the tool can be""" start="00:35:42.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""useful for this problem and incrementally.""" start="00:35:44.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. It's""" start="00:35:47.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: actually, so, in fact,""" start="00:35:54.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""when when I'm mentoring people,""" start="00:35:56.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I have to take a step back and say,""" start="00:35:58.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""OK, what are we with the note taking thing""" start="00:36:00.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that you mentioned in your talk.""" start="00:36:01.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""How do you like to take notes?""" start="00:36:03.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""How do you like to keep track of the things""" start="00:36:04.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that you want to work on when you have an""" start="00:36:06.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""idea? Where does it go?""" start="00:36:07.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Because if you improve that practice,""" start="00:36:10.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and especially if you can sneak some literate""" start="00:36:12.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""programming in without them really noticing,""" start="00:36:14.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""then it becomes the thing that they can use""" start="00:36:17.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to learn more efficiently.""" start="00:36:18.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. I was presenting at,""" start="00:36:23.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I wasn't presenting at this seminar,""" start="00:36:26.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I attended it and it was a crash course""" start="00:36:30.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""in command line tools.""" start="00:36:31.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I didn't, I mean, I went there to listen""" start="00:36:35.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and there was a point where the people were""" start="00:36:38.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like, I use this command line tool.""" start="00:36:40.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm not a programmer, I'm a librarian,""" start="00:36:42.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm an archivist. I use it,""" start="00:36:45.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm like, great, I'm gonna remember this.""" start="00:36:47.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then I forget about it and I might use it""" start="00:36:49.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""6 months from now. And so I tried to""" start="00:36:54.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""encourage everybody, like come up with,""" start="00:36:56.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like you have a degree in knowledge and""" start="00:37:00.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""information, management and organization,""" start="00:37:02.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""introspect, right? Spend some time on it.""" start="00:37:06.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Think about what is a way that I can do this""" start="00:37:09.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and ask questions to get to the point where""" start="00:37:13.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you can create a discoverable inventory of""" start="00:37:18.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the tools you've used and what that means.""" start="00:37:22.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And my answer was, I use literate programming""" start="00:37:26.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""or I shove it in my bin directory in GitHub""" start="00:37:30.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and like, I don't know if I'll remember it,""" start="00:37:34.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I can go there every now and then and be""" start="00:37:35.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like, oh yeah, that command.""" start="00:37:37.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So note taking is the most critical component""" start="00:37:44.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""of any number of work.""" start="00:37:46.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Sometimes I wonder if we can maybe""" start="00:37:51.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""externalize some of all this mentoring""" start="00:37:54.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""insight and kind of like this choose your own""" start="00:37:57.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""adventure thing, where the person says,""" start="00:37:59.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""OK, this is what I got at the moment.""" start="00:38:01.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then through a series of diagnostic""" start="00:38:03.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""questions, we can figure out what hurts,""" start="00:38:05.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""right? Where is the thing that they would""" start="00:38:08.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like to learn more about?""" start="00:38:08.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then, okay, if that hurts,""" start="00:38:09.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""try this and keep that manageable.""" start="00:38:12.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And if there's only a way to also be able to""" start="00:38:15.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""capture each person's state,""" start="00:38:17.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the things that they know about and have""" start="00:38:19.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""absorbed into their habits.""" start="00:38:20.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So you can say, right,""" start="00:38:22.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, my recommendation for someone who's""" start="00:38:25.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""brand new to org is not the same as somebody""" start="00:38:28.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""who's like, okay, they've got their agendas""" start="00:38:30.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and everything set up already.""" start="00:38:31.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Just how do we represent that as like WISPs?""" start="00:38:33.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: I've given up on trying to map that.""" start="00:38:39.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I like the one-on-one conversations and""" start="00:38:43.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""discovery. And I think that's the part where""" start="00:38:47.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you're looking at, you're asking about how do""" start="00:38:51.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we make the process and like I heard,""" start="00:38:55.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like how do we help equip those who want to""" start="00:38:58.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""mentor as well, right?""" start="00:39:01.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Making that, reducing the barrier in a way.""" start="00:39:05.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: I don't""" start="00:39:06.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: know, I think what you said about enjoying""" start="00:39:08.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the conversation and the fact that it is""" start="00:39:10.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""really unique for each person,""" start="00:39:12.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""each situation that comes up.""" start="00:39:14.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I suspect what it just comes down to is more""" start="00:39:18.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like capturing the good stuff of each""" start="00:39:21.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""mentoring session or whatever.""" start="00:39:23.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Maybe it's getting the mentees to write very""" start="00:39:25.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""short blog posts about what they learned this""" start="00:39:27.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""week or whatever else.""" start="00:39:28.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then, oh, yeah, you know,""" start="00:39:30.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we ran into the same problem 3 months ago.""" start="00:39:33.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Let me go look it up. And then that becomes a""" start="00:39:36.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""reusable segment.""" start="00:39:37.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, when I worked at a coding bootcamp,""" start="00:39:41.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they tried to encourage the mentors to say,""" start="00:39:46.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like write a blog posts for the mentees.""" start="00:39:49.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And that was, some of them did,""" start="00:39:57.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but it was intimidating because like they""" start="00:40:01.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""didn't wanna, I don't know.""" start="00:40:03.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Are we enculturated in an education system""" start="00:40:06.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""where we can't get it wrong or we need to""" start="00:40:09.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""look like we're more of an expert than we""" start="00:40:11.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""are? I don't know. I have a lot of like,""" start="00:40:15.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm a middle aged white guy,""" start="00:40:17.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I've got a lot of background and privilege in""" start="00:40:20.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""my career. So like, it's not as scary to put""" start="00:40:25.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""something forward for myself as it might be""" start="00:40:28.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""as like a woman in tech or a minority in""" start="00:40:31.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""tech, because that's a different place.""" start="00:40:35.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I want to really get done with that.""" start="00:40:38.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I don't like that at all.""" start="00:40:40.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I would love our, like,""" start="00:40:43.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""just write. And it doesn't have to be public,""" start="00:40:46.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""right? You don't have to make it public,""" start="00:40:48.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but if you make it discoverable to yourself,""" start="00:40:51.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that's the big thing. And 1 of my coworkers,""" start="00:40:58.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""She doesn't blog, but she definitely has a""" start="00:41:04.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""large knowledge base of stuff that she""" start="00:41:07.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""references because she's pulling out all""" start="00:41:08.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""kinds of stuff and I'm like whatever you're""" start="00:41:10.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""doing is working.""" start="00:41:11.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: I'm trying to have something.""" start="00:41:17.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""There's a good opportunity with the Emacs""" start="00:41:23.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""conference to accomplish this.""" start="00:41:25.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So like if you make like a,""" start="00:41:28.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because 1 of the things with it is,""" start="00:41:31.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Sasha, you do a really good job of using all.""" start="00:41:36.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""You're the 1 who has the Emacs buffer with""" start="00:41:38.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the time on it, right?""" start="00:41:39.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Is that your screen that's being recorded for""" start="00:41:41.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that? Because you have a really good example""" start="00:41:45.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""of a really consolidated emacs workflow that""" start="00:41:50.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""works really good with the Emacs conference""" start="00:41:53.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so if you had like a page that described how""" start="00:41:56.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you did all that stuff in the emacs""" start="00:42:00.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""conference like on that and then we then you""" start="00:42:04.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""did even more stuff with that.""" start="00:42:06.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like you do the org mode file that you can""" start="00:42:09.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""just put straight into your agenda for your""" start="00:42:12.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""time zone. I used that.""" start="00:42:14.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""That was really nice, just because it allowed""" start="00:42:17.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""me to reorganize and see how all the talks""" start="00:42:19.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""would work together, and which ones I wanted""" start="00:42:21.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to do. You could add Org Mode to do tags with""" start="00:42:25.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that, to say, plan to watch,""" start="00:42:31.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want to re-watch but I have to skip it""" start="00:42:36.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because there's another talk I'm watching,""" start="00:42:37.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, like a couple tags don't care about""" start="00:42:40.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so that people can easily tag all the talks""" start="00:42:43.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that they care about on top of that.""" start="00:42:47.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then with, I'm going to try to email""" start="00:42:52.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""these ideas on it too,""" start="00:42:54.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but then you can also,""" start="00:42:57.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you have the either pad questions,""" start="00:43:00.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you could put all those in org-mode documents""" start="00:43:03.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""with crdt.el, post all those in the Emacs""" start="00:43:08.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""conference and then people could use that to""" start="00:43:11.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""edit all the documents at the same time so""" start="00:43:13.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""then everybody's actually collaboratively""" start="00:43:15.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""editing. And then people have all the""" start="00:43:20.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""scaffolding for if you do the Emacs meetings,""" start="00:43:24.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""buddy meetings, because they know exactly how""" start="00:43:27.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to set it all up with that.""" start="00:43:29.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then you combine it with any number of""" start="00:43:34.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""whatever chat video program so that people""" start="00:43:38.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""can talk and watch each other.""" start="00:43:39.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: I have a presentation later on EmacsConf""" start="00:43:45.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""infrastructure and I will capture the note""" start="00:43:48.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And maybe I can include a mini tutorial in""" start="00:43:51.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the schedule org so that people can be like,""" start="00:43:53.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""hey, by the way, you could refile these""" start="00:43:55.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""things into your own org files or tag them""" start="00:43:58.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and here's a list thingy that filters your""" start="00:44:01.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""agenda by your tag or whatever,""" start="00:44:03.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it'll be fine. But it's,""" start="00:44:04.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, it's, it's kind of like,""" start="00:44:06.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it is, you're right. It is an opportunity to""" start="00:44:09.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""expose people to more things that they could""" start="00:44:12.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""do in kind of a scaffolded way.""" start="00:44:14.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""That's interesting stuff,""" start="00:44:16.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I, your point actually driving also going""" start="00:44:18.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""back to previous parts of conversation about,""" start="00:44:21.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's difficult for people to share.""" start="00:44:24.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""When you realize, like I keep telling""" start="00:44:26.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""everyone, hey, if you blog about Emacs,""" start="00:44:28.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you'll not only learn things for yourself and""" start="00:44:30.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""make things more searchable,""" start="00:44:31.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""other people will come by and tell you even""" start="00:44:33.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""better ways of doing things,""" start="00:44:34.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""which is something that always happens to me""" start="00:44:36.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""too, and I'm posting this.""" start="00:44:37.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Has that ever happened?""" start="00:44:38.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm sure that happens to you.""" start="00:44:39.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's great. I love getting those things like,""" start="00:44:45.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""yeah, Howard's presentation on the game""" start="00:44:49.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""stuff. I'm like, I'm going to go explore that""" start="00:44:51.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""now. Because it's my little house.""" start="00:44:54.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: You just have to make it less intimidating,""" start="00:44:57.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""right? And kind of change people's perception""" start="00:45:00.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that, oh, blogging or sharing tutorials or""" start="00:45:03.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""whatever, that's then when you're an expert,""" start="00:45:05.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""when you're an experienced,""" start="00:45:06.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to rather working out loud,""" start="00:45:09.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thinking out loud, this is just that I'm""" start="00:45:11.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""learning along the way.""" start="00:45:12.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And it might not be the most efficient way to""" start="00:45:15.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""do things, but this is what I'm doing right""" start="00:45:17.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""now.""" start="00:45:17.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. And I had a handful of times where I""" start="00:45:23.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""posted something and someone was like,""" start="00:45:25.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Oh yeah, this is, this would have you tried""" start="00:45:27.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""this? Or I'm like, I didn't even know that""" start="00:45:30.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""existed. That makes this easier.""" start="00:45:32.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: I've written this like little hack and I'm""" start="00:45:37.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""very proud of it because it's clever.""" start="00:45:38.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then someone's like,""" start="00:45:39.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Oh yeah, there's a package for that.""" start="00:45:41.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's called this. Right?""" start="00:45:42.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you. Right? Yeah.""" start="00:45:43.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's just it's Yeah, it the fantastic part""" start="00:45:49.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it. I played Legos as a kid and me and my""" start="00:45:54.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""friends would play Legos at the house.""" start="00:45:55.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And Emacs has this like feeling of playing""" start="00:46:00.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Legos with a group of people across the""" start="00:46:04.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""world. In fact, 1 of my current,""" start="00:46:06.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""well, 1 of my best friends now,""" start="00:46:09.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we met a year ago. And it turns out we both""" start="00:46:14.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""love Emacs. We talk every Thursday and we""" start="00:46:18.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""hang out and we talk poetry.""" start="00:46:19.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""We talk Tom Petty. We talk Emacs.""" start="00:46:23.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""We talk software development.""" start="00:46:24.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""He does Python. I do Ruby.""" start="00:46:26.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Just anything and everything.""" start="00:46:29.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And it's also we both are curious because we""" start="00:46:36.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""don't use it the same way.""" start="00:46:38.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And we like how we accomplish a task.""" start="00:46:43.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I think that's the fascinating part to me is""" start="00:46:47.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""we each get to explore our way to interact""" start="00:46:50.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""with the computer uniquely by whatever""" start="00:46:54.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""pathways are in our brain.""" start="00:46:55.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""We see stuff, we pick it up,""" start="00:46:58.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and we're like, that doesn't quite work for""" start="00:47:00.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""me, or, oh, that worked really well.""" start="00:47:01.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Fascinating, like, I don't know,""" start="00:47:06.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""shared art installation.""" start="00:47:08.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: I think you're onto something that I also""" start="00:47:13.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""resonate with. 1 of the things that""" start="00:47:15.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""fascinates me about Emacs is all these""" start="00:47:18.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""people's configuration jobs are crystallized""" start="00:47:21.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""workflows. And it's really when you talk to""" start="00:47:24.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""them and you see how they're using it,""" start="00:47:26.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and you understand a little bit of their""" start="00:47:29.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""story and things that they need,""" start="00:47:32.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the ideas they've had,""" start="00:47:33.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that's really fascinating.""" start="00:47:35.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I think that's 1 of the things that makes""" start="00:47:37.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it possible to be perpetually curious about""" start="00:47:39.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs, because it's not just the,""" start="00:47:42.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, this is the,""" start="00:47:43.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""these are all the Lego pieces there are,""" start="00:47:45.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but you have this community of people who are""" start="00:47:47.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""using these Lego bricks in such fascinating""" start="00:47:50.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""ways and always inventing new things for it.""" start="00:47:53.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, new colors, new shapes,""" start="00:47:56.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they show up. It's great.""" start="00:47:59.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: It's like powered twice or something like""" start="00:48:03.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that because it's like you can use Emacs with""" start="00:48:06.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a thousand different customizations and then""" start="00:48:09.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you can interact with people who can each""" start="00:48:12.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""also Use Emacs in a thousand different ways""" start="00:48:16.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Mm-hmm, Right,""" start="00:48:17.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Then you can both learn from each other and""" start="00:48:20.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that can go a thousand different ways.""" start="00:48:21.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So it's like, it's like powering your""" start="00:48:24.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yep.""" start="00:48:25.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Something along those lines with each other""" start="00:48:27.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and like how different and how much you can""" start="00:48:30.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""learn from it.""" start="00:48:31.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, the kind of touching back to the mentee""" start="00:48:38.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that I have who went, he had originally""" start="00:48:41.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""started in Vim and then did VS code.""" start="00:48:44.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then we were talking and he was gonna go""" start="00:48:47.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""into Emacs and I didn't have a,""" start="00:48:50.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I mean, sure, that'd be great.""" start="00:48:52.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But he's like, I don't have a lot of time.""" start="00:48:53.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I'm like, well, go back to the place that""" start="00:48:56.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you have that experience.""" start="00:48:57.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And he did, And then he started writing Lua""" start="00:49:01.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""plugins. He was like, this is so much fun.""" start="00:49:02.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm like, good, you're on the right path.""" start="00:49:05.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like maybe there'll be space like over time,""" start="00:49:10.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how Lua plugins and Emacs,""" start="00:49:13.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, who knows? I know that Lua,""" start="00:49:16.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you can use Fennel to write Lisp.""" start="00:49:19.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""In you write Lisp and it will transpile""" start="00:49:24.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Fennel to Lua. I forget how that plays out,""" start="00:49:29.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but we're not too far away from those 2""" start="00:49:31.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""things being able to play.""" start="00:49:34.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But I guess the question is,""" start="00:49:39.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""does it need to? I don't know.""" start="00:49:41.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah, I mean, even without direct code""" start="00:49:44.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""translation, the cross-pollination of ideas""" start="00:49:47.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""is certainly enough. I love the fact that""" start="00:49:51.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""people are borrowing ideas from VS Code and""" start="00:49:54.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""from Vim and people look at Emacs videos and""" start="00:49:57.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""other things and say, hey,""" start="00:49:58.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that's a cool thing in Emacs,""" start="00:49:59.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I don't want to ever use Emacs.""" start="00:50:01.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm going to do that whole thing in Vim.""" start="00:50:03.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I think that's fantastic.""" start="00:50:04.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Absolutely. Yeah. I mean,""" start="00:50:07.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""monocultures die. They just do.""" start="00:50:10.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And computer software and computer industry""" start="00:50:16.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""pushes towards monoculture because of it""" start="00:50:24.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""wants the highest efficiency.""" start="00:50:26.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I'm like, I'm not,""" start="00:50:31.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I mean, sometimes I'm here for that,""" start="00:50:33.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but most of the time I'm like,""" start="00:50:35.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want the bumps and the warts.""" start="00:50:37.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want the art, the human interaction,""" start="00:50:40.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the like, why are we trying to accomplish""" start="00:50:42.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""this?""" start="00:50:43.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: It determines, It depends on how you""" start="00:50:46.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""determine efficiency because Emacs is far""" start="00:50:49.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Even if Emacs isn't multi-threaded is far""" start="00:50:52.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more efficient because because of the mental""" start="00:50:56.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""model shifts because you're able to play and""" start="00:51:00.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""tweak with it and then have as much of a""" start="00:51:04.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""mental model shift for each task change that""" start="00:51:07.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you want. Like, yeah, I want my file manager""" start="00:51:10.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to not be an editable text buffer.""" start="00:51:16.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Although sometimes when I want to rename""" start="00:51:18.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""files, I want it to be that.""" start="00:51:20.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. Yeah, and really,""" start="00:51:23.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like, to be clear, I like the idea of Emacs""" start="00:51:26.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""as a projection of, like,""" start="00:51:29.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how I think about stuff.""" start="00:51:30.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So it's that whatever my neurons have made a""" start="00:51:33.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""good pathway for, I can have Emacs flow with""" start="00:51:37.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""me. That efficiency side is I want a factory,""" start="00:51:41.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want to stamp out widgets,""" start="00:51:43.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I want them to be the same,""" start="00:51:44.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""chop, chop, chop, chop,""" start="00:51:45.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""chop, chop. That emacs runs in its spirit""" start="00:51:51.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""along with vim contrary to that and I like""" start="00:51:57.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that""" start="00:51:57.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: emacs is a 1 of the things with the like the""" start="00:52:00.530" video="qanda-mentor" id="subtitle"]]
+[[!template text="""mental model of Emacs is you should look at""" start="00:52:03.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs like this is probably something that""" start="00:52:06.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""people should think about when they are""" start="00:52:08.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""introducing Emacs to other people is Emacs is""" start="00:52:10.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a treasure trove of conflicting ways of""" start="00:52:15.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""solving the same problem so you get,""" start="00:52:18.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so you can individuate yourself on how you""" start="00:52:22.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""actually want to solve that problem.""" start="00:52:23.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Do you""" start="00:52:25.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: want Vim bindings or not?""" start="00:52:26.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""You get to choose. Or do you want Meow""" start="00:52:30.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""bindings? You can choose.""" start="00:52:31.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yep. Absolutely. Yeah.""" start="00:52:34.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I, I came, I'm, I consider my,""" start="00:52:38.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I, I lament because in 2005 I almost picked""" start="00:52:42.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""up Emacs and it wasn't until 2020 that I""" start="00:52:46.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""picked it up. And fortunately I picked it up""" start="00:52:49.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""when I did because I was able to look at""" start="00:52:54.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""things I had previously accomplished and find""" start="00:52:58.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""analogs And things like Helm and Ivy were""" start="00:53:05.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""both 2 different ways of doing it and consult""" start="00:53:08.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and then, or Selectrum and then consult,""" start="00:53:11.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like they all had these different ways And it""" start="00:53:15.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""felt great because I could find the thing""" start="00:53:18.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that worked for me. And they're close,""" start="00:53:24.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but then they also like branch out and do""" start="00:53:27.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""things differently. And it was so fascinating""" start="00:53:30.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to explore each of those and spend an hour or""" start="00:53:34.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""2 on a primary task in seeing where that""" start="00:53:39.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""little thread went. It's great.""" start="00:53:42.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: So tell me a bit more about how you got into""" start="00:53:47.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs. What pulled you""" start="00:53:51.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: in? Yeah, this is a great little moment.""" start="00:53:55.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I started in TextMate,""" start="00:53:59.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""That's kind of where I would say the""" start="00:54:03.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""beginning for coding for open source and""" start="00:54:06.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""using open source software.""" start="00:54:07.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Sorry, using open source frameworks and""" start="00:54:11.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""languages. So TextMate to Sublime,""" start="00:54:14.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""basically TextMate couldn't search very well""" start="00:54:18.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""at the time. It was getting bogged down.""" start="00:54:20.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I moved to Sublime,""" start="00:54:21.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""which solved it, felt well,""" start="00:54:23.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""carried the same UI look with me.""" start="00:54:27.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then when I was at a conference,""" start="00:54:30.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""there was a talk about using an open source""" start="00:54:34.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""editor. I was like, yeah,""" start="00:54:36.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I need to do that. I really need to.""" start="00:54:38.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And Adam was viable. I was like,""" start="00:54:43.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Oh, this is really close.""" start="00:54:44.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'll use it. And I didn't think too much""" start="00:54:47.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""about it. And then the writing was on the""" start="00:54:49.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""wall, that Adam is going away.""" start="00:54:51.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I was like, I need to find an open source""" start="00:54:55.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""editor that speaks to me.""" start="00:54:57.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I said, all right,""" start="00:54:59.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Vim, This is my fifth time.""" start="00:55:00.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I will try. And I gave an earnest 2 weeks.""" start="00:55:06.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I'm just like, I cannot get this mental""" start="00:55:09.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""model in my head. So I'm like,""" start="00:55:11.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""all right, I set it down.""" start="00:55:12.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I can use Vim, I'm comfortable.""" start="00:55:14.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I think it's a great tool,""" start="00:55:15.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but my mental model doesn't map well there.""" start="00:55:19.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I'm like, all right,""" start="00:55:21.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""here we go, VS code. All right,""" start="00:55:24.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you're fine. But I feel like I might""" start="00:55:28.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""accidentally charge my credit card in the""" start="00:55:31.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""text editor on the default installation.""" start="00:55:33.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And that was alluded to by in 1 of the talks,""" start="00:55:38.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I forget who he German about mandating Emacs""" start="00:55:46.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""in his computer science classes.""" start="00:55:48.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""He mentioned like the Microsoft Office or""" start="00:55:51.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Microsoft Marketplace felt like it was there.""" start="00:55:54.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So that was 1, but the moment where I was""" start="00:55:58.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like, oh, hell no, VS Code.""" start="00:56:02.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Or I wanted to use a commit from the command""" start="00:56:08.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""palette, and it brought up an HTML text input""" start="00:56:12.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""area, and it was 30 characters.""" start="00:56:15.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And in that moment, I saw several things.""" start="00:56:23.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""1, I'm like, no, that's terrible because I""" start="00:56:27.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""want to write something meaningful.""" start="00:56:28.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""2, this is the behavior that this tool is""" start="00:56:33.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""modeling. That tells me that history and like""" start="00:56:38.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""how it is built is not important.""" start="00:56:41.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And yes, I can fix it and get around it.""" start="00:56:47.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I kind of did. And I was like,""" start="00:56:49.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the principles are just,""" start="00:56:51.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they're there. And then also understanding""" start="00:56:53.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like there's a bunch of telemetry underneath""" start="00:56:56.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it. So I used VS Codium,""" start="00:56:58.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""there's still telemetry.""" start="00:57:00.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I was like, all right,""" start="00:57:03.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""2005 Jeremy, let's go try Emacs,""" start="00:57:07.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""let's see if we can do it.""" start="00:57:08.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I hopped in, I grabbed Space Max.""" start="00:57:13.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I was Like, yeah, this works pretty well.""" start="00:57:16.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like, I don't know how to use the keys very""" start="00:57:18.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""well. I'm figuring it out.""" start="00:57:20.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And. And I was like, you know what?""" start="00:57:26.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Why don't I do the tutorial?""" start="00:57:27.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And it was the tutorial that hooked me.""" start="00:57:30.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Not because everything made 100% sense""" start="00:57:36.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because Emacs is old. It had a lot of""" start="00:57:42.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""language that was hard to internalize,""" start="00:57:45.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but it presented it in a conversational I'm""" start="00:57:50.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""gonna meet you where you're at and we're""" start="00:57:52.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""gonna walk with it together.""" start="00:57:53.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then when I was done with the tutorial,""" start="00:57:56.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I said, you know, Space Max,""" start="00:57:58.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I don't understand it.""" start="00:57:59.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And it's got some performance.""" start="00:58:00.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It looks like there's like extra stuff that I""" start="00:58:04.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""may not need. So I went vanilla,""" start="00:58:08.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""nothing Emacs and just started working.""" start="00:58:11.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I was like, well, how do you do this?""" start="00:58:14.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Although 5 minutes of Space Max or any of""" start="00:58:17.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""those Emacs distribution shows you""" start="00:58:19.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""unequivocally how different it can be.""" start="00:58:22.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: It was, it was, it was so amazing,""" start="00:58:25.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and it was so good. But I knew my nature was,""" start="00:58:31.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I was frustrated in, like I wrote an Atom""" start="00:58:34.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""package, and that was awful.""" start="00:58:37.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It was so terrible. But I knew what I wanted.""" start="00:58:42.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then I wrote, I started writing a VS code""" start="00:58:48.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and I'm like, oh no, no,""" start="00:58:49.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""no, we're not here for this.""" start="00:58:50.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so, yeah, SpaceMax showed me like this""" start="00:58:55.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""can look and feel like a space that I used to""" start="00:59:00.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""be in. And then it has more functionality,""" start="00:59:03.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more stuff. It's gonna be great.""" start="00:59:07.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then I just was like,""" start="00:59:09.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm gonna go find my own.""" start="00:59:11.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm really happy that I took the path because""" start="00:59:15.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I just worked, wrote, and I'm like,""" start="00:59:19.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I bet you this, I bet you the tool,""" start="00:59:21.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I know it can do this because it,""" start="00:59:22.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, text me, did this or Adam,""" start="00:59:24.620" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm gonna go, I went on to Melpa and I found""" start="00:59:27.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a couple different things.""" start="00:59:29.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm like, all right, let's try them.""" start="00:59:31.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm like, that's the 1,""" start="00:59:32.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""great. Roll it in, keep working.""" start="00:59:34.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I know it can do this.""" start="00:59:36.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Find a package. And so I built up this sense""" start="00:59:39.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""of the packages and my strategy was go to""" start="00:59:46.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Melpa, look at, that was the 1 that showed""" start="00:59:49.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""up, look at the number of downloads.""" start="00:59:52.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I'm like, what's the high stuff?""" start="00:59:54.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""What really gets used?""" start="00:59:55.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""There's something there.""" start="00:59:57.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then also look at what was most recently""" start="01:00:00.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""updated. So kind of pivot on those along with""" start="01:00:03.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""a keyword search and I found the tools that""" start="01:00:06.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""worked well. But it really came down to like""" start="01:00:17.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that VS Code I was almost in,""" start="01:00:19.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I've been around long enough to know what""" start="01:00:24.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Microsoft will do.""" start="01:00:25.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: For me, I was always like customizing things.""" start="01:00:32.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I think I saw some interesting emacs videos.""" start="01:00:34.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I wanted to try Well, I wanted to try working""" start="01:00:42.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more with the keyboard and not need I think""" start="01:00:44.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: mm-hmm""" start="01:00:46.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: the mouse on a laptop And so I was looking""" start="01:00:51.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""explicitly for ways to just work on the""" start="01:00:54.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""keyboard only, which meant that I wasn't""" start="01:00:56.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""looking for programs that followed Cua,""" start="01:00:59.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""which really leaves you like 2 options,""" start="01:01:04.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Vim and Emacs. And when I looked at the 2,""" start="01:01:10.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I saw 1 of the big differentiating factors I""" start="01:01:13.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""saw was Tramp, which was,""" start="01:01:15.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""oh, you mean I get a SSH into a machine and""" start="01:01:18.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""have my customizations too?""" start="01:01:19.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yep. Yeah.""" start="01:01:22.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: And then I started using Emacs more and more.""" start="01:01:29.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Eventually I combined that with a tiling""" start="01:01:34.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""window manager, NixOS,""" start="01:01:36.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and started banishing as much of the GUI as I""" start="01:01:40.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""possibly could, running MPV or VLC,""" start="01:01:44.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so I could edit so that my config files could""" start="01:01:49.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""be keyboard oriented. My settings config""" start="01:01:53.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""menus are now keyboard oriented.""" start="01:01:55.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And yeah, that was the incremental process of""" start="01:02:00.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""just, yeah, making the computer nicer,""" start="01:02:04.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more efficient, and then you figure out all""" start="01:02:06.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the other advantages of the...""" start="01:02:08.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. How did you get in to it,""" start="01:02:13.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, you're lost.""" start="01:02:18.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sasha? Your sound is gone.""" start="01:02:21.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Sorry, my face mute button.""" start="01:02:27.345" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Okay, I'll tell you that story,""" start="01:02:29.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I get thought out of my head,""" start="01:02:30.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""so I forget it. But what you described,""" start="01:02:32.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Jerry, about kind of starting with the""" start="01:02:34.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""distribution and then pulling back and""" start="01:02:37.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""starting with vanilla and building up,""" start="01:02:39.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""kind of close the stories that I've heard""" start="01:02:41.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""from a lot of people in the community where""" start="01:02:42.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the distribution gives them kind of an end""" start="01:02:46.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""goal, at least work requirements,""" start="01:02:48.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So get the stuff done and they're not""" start="01:02:50.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""slugging through the weeds around the start.""" start="01:02:52.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I have a hard time modifying it because""" start="01:02:55.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""modifying the distribution itself is very""" start="01:02:57.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""different from the tools they see.""" start="01:02:59.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""They feel like they want to understand the""" start="01:03:01.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""different possible part.""" start="01:03:02.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And so then they pull back and say,""" start="01:03:04.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""okay, I've got this thing that can use""" start="01:03:06.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""everything to just get some quick work done,""" start="01:03:08.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but I have this thing that I can call,""" start="01:03:10.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that's mine. And I understand because I'm""" start="01:03:13.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""building it up from the ground up.""" start="01:03:15.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Okay, so that's like, oh,""" start="01:03:19.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""interesting, there's a lot of people who are""" start="01:03:21.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like that, and it really helps them to both""" start="01:03:23.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""have that insight, which is see through""" start="01:03:27.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""distributions and also videos of other""" start="01:03:29.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""people's workflows and press kind of""" start="01:03:32.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""conference presentations often about""" start="01:03:34.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""completely different topics,""" start="01:03:35.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""right? So someone whizzing through Ruby on""" start="01:03:37.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Rails or whatever else and doing all of this.""" start="01:03:39.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""But also having 1 help them break out,""" start="01:03:43.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""okay, well, there's a lot of work from where""" start="01:03:46.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I am to where that is.""" start="01:03:47.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""How do I do it without being overwhelmed?""" start="01:03:49.740" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Because if they try to learn everything,""" start="01:03:51.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they'll go crazy. And then they'll fall.""" start="01:03:55.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And the brain is super important.""" start="01:03:57.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And how I got into this whole eMac thing was""" start="01:04:01.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I was reading all the computer science books""" start="01:04:03.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""in the university library and 1 of the Unix""" start="01:04:06.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""power tools had a chapter on Emacs and had""" start="01:04:09.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""them you know well there's another type of""" start="01:04:11.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""whatever. Okay that's interesting so I went""" start="01:04:14.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and tried it out But the reason I really got""" start="01:04:17.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""into it was because I was using John Wigley's""" start="01:04:19.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Planner Mode. This was before Org Mode came""" start="01:04:23.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""about. So Planner Mode was a link.""" start="01:04:25.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I said, hey, this is great.""" start="01:04:27.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I'm looking for ways to help out.""" start="01:04:29.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""If you need help verifying any bugs,""" start="01:04:31.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you know, send it to me and I'll do the""" start="01:04:34.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""figuring out. He's an author and an inventor.""" start="01:04:37.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: And then""" start="01:04:37.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: he made me the miniature for it.""" start="01:04:39.480" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I'm like, okay. And then that's how I got""" start="01:04:42.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""to know this wonderful community of people""" start="01:04:44.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""who customize emacs so much.""" start="01:04:46.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And it just goes there because really,""" start="01:04:51.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""when you see all these different ways that""" start="01:04:54.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""people use in all these different stories""" start="01:04:55.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that you get send off because they're using""" start="01:05:00.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it to bake sourdough bread and do knitting""" start="01:05:03.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and all the crazy things that people come up""" start="01:05:06.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""with. I've been using it as an audio editor.""" start="01:05:08.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's just weird. It's just fun.""" start="01:05:11.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, that's great.""" start="01:05:13.100" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah. Every, Sasha, like 2 things that I was""" start="01:05:19.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""meaning to say is every time I see the on the""" start="01:05:22.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""EMAX conference the time that the scratch""" start="01:05:26.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""buffer with the big clock that is ticking""" start="01:05:29.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""down as and the multi multiple sized fonts As""" start="01:05:34.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I always think wow, that's really cool.""" start="01:05:37.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I didn't know Emacs could do that.""" start="01:05:38.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Wait, no, I saw that last year.""" start="01:05:40.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""How do you do, now, how do I do that?""" start="01:05:43.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Cause that's not, and that's not something I""" start="01:05:45.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""normally even think about Emacs doing.""" start="01:05:46.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right.""" start="01:05:48.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: I'll think about putting""" start="01:05:51.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: There's an EmacsConf-stream.el""" start="01:05:55.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""in the EmacsConf-el repository.""" start="01:05:59.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Grab the link and open but you can grab the""" start="01:06:03.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""code from there. It's basically the text""" start="01:06:07.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""property.""" start="01:06:08.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: But it's a thought that has repeated multiple""" start="01:06:15.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""years. Like, I didn't know we could do that""" start="01:06:17.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""way. I thought about that.""" start="01:06:18.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I had this exact thought last year when I saw""" start="01:06:21.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it.""" start="01:06:21.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's, we're like, I'm at the point where it's""" start="01:06:28.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like I have memories of remembering doing""" start="01:06:31.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""something. I don't have memories of doing it.""" start="01:06:34.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like all of the things.""" start="01:06:36.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like so it's again, we,""" start="01:06:40.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs helps expose like the,""" start="01:06:45.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like it's, anything's possible.""" start="01:06:48.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And we see how it becomes possible through""" start="01:06:53.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""other people. And then it gets our brains""" start="01:06:55.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thinking about other ways of doing stuff.""" start="01:06:57.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And I think that's the exciting part.""" start="01:06:59.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Dog who wants to go play Frisbee.""" start="01:07:02.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: And that's actually 1 of the reasons why I""" start="01:07:07.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""want to encourage people to not only talk""" start="01:07:11.060" video="qanda-mentor" id="subtitle"]]
+[[!template text="""about Emacs and write Emacs blog posts,""" start="01:07:12.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but also actually demonstrate Emacs in the""" start="01:07:15.380" video="qanda-mentor" id="subtitle"]]
+[[!template text="""sense of doing something else.""" start="01:07:16.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So for example, we can match people at Emacs""" start="01:07:20.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""if you're presenting about Ruby on Rails and""" start="01:07:23.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you're doing all of your and education and""" start="01:07:27.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""things while you're presenting Rails,""" start="01:07:30.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you reach all these people who are interested""" start="01:07:32.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""in Rails, developer Rails,""" start="01:07:34.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but might not have even considered Emacs.""" start="01:07:36.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And here, you know, you probably would.""" start="01:07:41.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I would probably have a hard time writing an""" start="01:07:44.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""entire talk about adding text properties,""" start="01:07:47.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but the fact that there's a thing here that""" start="01:07:49.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""shows, hey, this is possible,""" start="01:07:50.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs can get people to think,""" start="01:07:53.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""okay, so how do I get from here to there?""" start="01:07:54.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Just showing the possible.""" start="01:07:57.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Yeah. Which source code is in the,""" start="01:08:02.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""whatchamacallit.""" start="01:08:02.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, yeah. Yeah, I just saw that.""" start="01:08:04.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: There's a weird interesting thing how Emacs""" start="01:08:08.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""dovetails with people who are interested in""" start="01:08:12.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""making their own local first Zettelkasten,""" start="01:08:15.940" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because look at how many Zettelkasten""" start="01:08:17.720" video="qanda-mentor" id="subtitle"]]
+[[!template text="""packages you have. Especially with how much,""" start="01:08:21.300" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like it feels like, it seems like Emacs has""" start="01:08:23.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more than Vim, but Vim is bigger or VS,""" start="01:08:27.439" video="qanda-mentor" id="subtitle"]]
+[[!template text="""feels like it has more than Vim or VS Code,""" start="01:08:30.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and VS Code's bigger. I'm not sure,""" start="01:08:31.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but it feels like it. Same thing with that""" start="01:08:36.819" video="qanda-mentor" id="subtitle"]]
+[[!template text="""HyperCore. That HyperCore felt more like a""" start="01:08:39.920" video="qanda-mentor" id="subtitle"]]
+[[!template text="""local first peer-to-peer system.""" start="01:08:42.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So there's a weird dovetail where they want""" start="01:08:48.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the knowledge bases that are local first,""" start="01:08:52.279" video="qanda-mentor" id="subtitle"]]
+[[!template text="""comprehensive, because 1 of the properties of""" start="01:08:58.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""the Zettelkasten or Org Mode agendas is that""" start="01:09:03.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's all your notes in 1 place.""" start="01:09:07.359" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's not, you know, your notes in either pad""" start="01:09:14.439" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and your notes in Google Calendar,""" start="01:09:19.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""your notes in 20 different places,""" start="01:09:23.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""your notes in Evernote.""" start="01:09:24.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's your notes in 1 program in 1 place""" start="01:09:28.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because you have to deal with them And""" start="01:09:30.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""they're going to be in files on your hard""" start="01:09:32.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""drive, and you're going to have packages""" start="01:09:34.279" video="qanda-mentor" id="subtitle"]]
+[[!template text="""there. That's the other weird thing too,""" start="01:09:37.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""is how many, like, you install an Emacs""" start="01:09:40.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""package, 1 of the guarantees,""" start="01:09:41.399" video="qanda-mentor" id="subtitle"]]
+[[!template text="""some of the guarantees you seem to get with""" start="01:09:43.439" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it is if it does use an external program,""" start="01:09:46.260" video="qanda-mentor" id="subtitle"]]
+[[!template text="""it's going to have a lot of configuration in""" start="01:09:48.399" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Emacs. It's going to be installed.""" start="01:09:51.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It's going to be local first.""" start="01:09:53.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Cause like you have flow bits,""" start="01:09:56.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but how many programs like are,""" start="01:09:59.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""are cloud first. And it feels like most of""" start="01:10:05.140" video="qanda-mentor" id="subtitle"]]
+[[!template text="""those are like org Trello,""" start="01:10:06.820" video="qanda-mentor" id="subtitle"]]
+[[!template text="""where it's like, I want to use org mode,""" start="01:10:10.160" video="qanda-mentor" id="subtitle"]]
+[[!template text="""but other people use Trello.""" start="01:10:12.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I'm going to be grudgingly using this org""" start="01:10:15.460" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Trello to be a bridge between the 2,""" start="01:10:17.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""not because I wanted to use org,""" start="01:10:19.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""not because I wanted to use Trello in the""" start="01:10:21.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""first place or I started off with Trello and""" start="01:10:23.200" video="qanda-mentor" id="subtitle"]]
+[[!template text="""now I wanna use org mode.""" start="01:10:24.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, no, you're that local first.""" start="01:10:27.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""The Thought I have is with the 2022 interest""" start="01:10:37.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""rates going up, the era of free money,""" start="01:10:43.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""or even like getting money for more,""" start="01:10:46.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""more money than it actually costs Like it was""" start="01:10:49.960" video="qanda-mentor" id="subtitle"]]
+[[!template text="""minting money. We are going to be seeing how""" start="01:10:55.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""these organizations that had financial""" start="01:10:59.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""runways, all of these cloud services,""" start="01:11:01.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""what's not gonna last because there's no""" start="01:11:06.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""funding. And like the durability of our local""" start="01:11:12.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""first plain text, free open source stuff.""" start="01:11:16.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Like I won't have to do a content migration""" start="01:11:21.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""unless I get a B of my bonnet and want to""" start="01:11:24.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""like change from org mode to markdown for""" start="01:11:27.700" video="qanda-mentor" id="subtitle"]]
+[[!template text="""some reason. Like I have it and Then I can""" start="01:11:30.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""send it out. So there's also like that posse""" start="01:11:32.980" video="qanda-mentor" id="subtitle"]]
+[[!template text="""principle publish on-site syndicate""" start="01:11:36.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""everywhere Is what emacs and vim like they""" start="01:11:41.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""allow for us to do?""" start="01:11:42.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, that's part of the individuation is you""" start="01:11:46.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""have multiple options of doing something so""" start="01:11:48.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you can choose something so you can take""" start="01:11:51.580" video="qanda-mentor" id="subtitle"]]
+[[!template text="""ownership of your data in the way you want.""" start="01:11:54.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""It all dovetails into each other and I think""" start="01:12:00.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""that's something worth thinking about,""" start="01:12:02.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""especially in relation with who should learn""" start="01:12:05.540" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and how should you introduce Emacs to people,""" start="01:12:08.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because like, with the idea of people should""" start="01:12:14.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""try an Emacs distribution and then start""" start="01:12:16.560" video="qanda-mentor" id="subtitle"]]
+[[!template text="""their own from scratch,""" start="01:12:17.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""just so that they, like,""" start="01:12:18.880" video="qanda-mentor" id="subtitle"]]
+[[!template text="""if you use it for 10 minutes,""" start="01:12:20.280" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you'll gain so much because you use your 3""" start="01:12:24.400" video="qanda-mentor" id="subtitle"]]
+[[!template text="""and then all of a sudden you realize,""" start="01:12:25.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you also know how malleable Emacs can be.""" start="01:12:29.180" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And then you start saying,""" start="01:12:30.520" video="qanda-mentor" id="subtitle"]]
+[[!template text="""now, how do I do that?""" start="01:12:32.000" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So I get to make those choices?""" start="01:12:33.240" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah.""" start="01:12:34.840" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 2]: Or you might say, this person did it well""" start="01:12:39.340" video="qanda-mentor" id="subtitle"]]
+[[!template text="""enough, I don't have to.""" start="01:12:40.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: That reminded me of something that I also""" start="01:12:43.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""wanted to mention, shocking word,""" start="01:12:45.360" video="qanda-mentor" id="subtitle"]]
+[[!template text="""as in malleability. Another tip I came""" start="01:12:49.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""across, don't know from whom,""" start="01:12:50.600" video="qanda-mentor" id="subtitle"]]
+[[!template text="""might have been from you,""" start="01:12:51.500" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I don't know, is to define aliases,""" start="01:12:53.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""because we use different words from what the""" start="01:12:56.320" video="qanda-mentor" id="subtitle"]]
+[[!template text="""functions are. It's 1 of those little meta""" start="01:12:58.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""things that, you know,""" start="01:13:00.420" video="qanda-mentor" id="subtitle"]]
+[[!template text="""If you keep calling it something else,""" start="01:13:02.080" video="qanda-mentor" id="subtitle"]]
+[[!template text="""just define it so that you can call it like""" start="01:13:05.900" video="qanda-mentor" id="subtitle"]]
+[[!template text="""commencing your words.""" start="01:13:06.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: it's interesting. Anyway,""" start="01:13:12.440" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yeah. Yeah, gotta go disappear and get ready""" start="01:13:14.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""for my dog. Okay, I'll listen to what you""" start="01:13:17.220" video="qanda-mentor" id="subtitle"]]
+[[!template text="""say. All right, I""" start="01:13:18.120" video="qanda-mentor" id="subtitle"]]
+[[!template text="""[Speaker 1]: I need to take my dogs out and play Frisbee.""" start="01:13:20.020" video="qanda-mentor" id="subtitle"]]
+[[!template text="""They have been so patient.""" start="01:13:21.780" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So it was great talking with all of you and""" start="01:13:26.040" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Sasha, thanks for the organizing energy""" start="01:13:29.640" video="qanda-mentor" id="subtitle"]]
+[[!template text="""you've put into this. Plasma Strike,""" start="01:13:31.680" video="qanda-mentor" id="subtitle"]]
+[[!template text="""thank you for your presentation.""" start="01:13:32.800" video="qanda-mentor" id="subtitle"]]
+[[!template text="""I love this conference.""" start="01:13:34.860" video="qanda-mentor" id="subtitle"]]
+[[!template text="""So thank you very much.""" start="01:13:36.660" video="qanda-mentor" id="subtitle"]]
+[[!template text="""And now have a good rest of your Sunday.""" start="01:13:41.760" video="qanda-mentor" id="subtitle"]]
+[[!template text="""Bye.""" start="01:13:43.100" video="qanda-mentor" id="subtitle"]]
+
+Questions or comments? Please e-mail [jeremy@jeremyfriesen.com](mailto:jeremy@jeremyfriesen.com?subject=Comment%20for%20EmacsConf%202023%20mentor%3A%20Mentoring%20VS-Coders%20as%20an%20Emacsian%20%28or%20How%20to%20show%20not%20tell%20people%20about%20the%20wonders%20of%20Emacs%29)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/mentor-before.md b/2023/info/mentor-before.md
new file mode 100644
index 00000000..bcf457eb
--- /dev/null
+++ b/2023/info/mentor-before.md
@@ -0,0 +1,18 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 11-min talk; Q&A: BigBlueButton conference room
+Status: TO_INDEX_QA
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="mentor-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 10:44 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.opus">Download --main.opus (6.2MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.webm">Download --main.webm (26MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen.pdf">Download .pdf</a></li><li><a href="https://toobnix.org/w/sV9eKtGiPYZi5urxjoqerv">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="mentor-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="mentor-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--answers.opus"></audio></div><div></div>Duration: 1:13:43 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--answers--trimmed.webm">Download --answers--trimmed.webm (176MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--answers.opus">Download --answers.opus (25MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--answers.webm">Download --answers.webm (176MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/mentor-nav.md b/2023/info/mentor-nav.md
new file mode 100644
index 00000000..86a45646
--- /dev/null
+++ b/2023/info/mentor-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/steno">Programming with steno</a>
+Next by track: <a href="/2023/talks/web">Emacs saves the Web (maybe)</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/multi-after.md b/2023/info/multi-after.md
new file mode 100644
index 00000000..513b51ba
--- /dev/null
+++ b/2023/info/multi-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20multi%3A%20Emacs%20for%20the%20Indecisive%2FMulti-Talented)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/multi-before.md b/2023/info/multi-before.md
new file mode 100644
index 00000000..af9cef3a
--- /dev/null
+++ b/2023/info/multi-before.md
@@ -0,0 +1,4 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/multi-nav.md b/2023/info/multi-nav.md
new file mode 100644
index 00000000..0441b432
--- /dev/null
+++ b/2023/info/multi-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/uni">Authoring and presenting university courses with Emacs and a full libre software stack</a>
+Next by track: <a href="/2023/talks/hn">The many ways to browse Hacker News from Emacs</a>
+Track: <span class="sched-track gen">gen</span>
+</div>
diff --git a/2023/info/nabokov-after.md b/2023/info/nabokov-after.md
new file mode 100644
index 00000000..0e1ccfe4
--- /dev/null
+++ b/2023/info/nabokov-after.md
@@ -0,0 +1,512 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="nabokov-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template text="""Hello, fellow Emacs enthusiasts.""" start="00:00:00.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""My name is Edmund Jorgensen.""" start="00:00:05.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I'm a software engineer by day,""" start="00:00:06.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""but by night I love to write novels,""" start="00:00:08.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and I lean on Emacs heavily""" start="00:00:10.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""for both of these activities.""" start="00:00:11.774" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Today, I would like to talk to you about how Emacs,""" start="00:00:13.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""specifically with Org mode,""" start="00:00:15.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""has helped me manage some of the practical""" start="00:00:17.320" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""difficulties of writing long-form prose,""" start="00:00:18.840" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""novels in my case,""" start="00:00:20.940" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and I'd like to get at this by talking about how""" start="00:00:22.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""another, much more famous novelist managed""" start="00:00:24.320" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""some of those same difficulties in a way""" start="00:00:26.440" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""that makes me suspect he might well use Emacs""" start="00:00:28.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and Org mode himself""" start="00:00:30.874" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""if he were still alive and writing today.""" start="00:00:31.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""This talk will probably be""" start="00:00:34.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""of the most interest to listeners""" start="00:00:35.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""who either already write long-form prose in Emacs""" start="00:00:36.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or are considering doing so,""" start="00:00:39.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""but I think that anyone""" start="00:00:40.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""with an interest in literature or Emacs""" start="00:00:42.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""will find something to take away.""" start="00:00:44.080" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template new="1" text="""Nabokov's process of writing novels""" start="00:00:45.760" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template text="""So let's get to it.""" start="00:00:45.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Here's a picture of a man lying on a bed,""" start="00:00:51.120" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""writing something on an index card.""" start="00:00:53.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""If we didn't know any better,""" start="00:00:56.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""we might think that he was just jotting down""" start="00:00:57.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""a recipe for beef stew or something like that.""" start="00:00:58.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""But in fact, this is not just any old man.""" start="00:01:01.680" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""This is Vladimir Nabokov, one of the most""" start="00:01:03.840" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""celebrated novelists of the 20th century,""" start="00:01:06.174" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and he's not jotting down""" start="00:01:08.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""a recipe for beef stew in this picture.""" start="00:01:09.280" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""He's actually hard at work here,""" start="00:01:11.480" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""composing a classic of English literature""" start="00:01:12.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""on an index card.""" start="00:01:15.007" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""That's how he wrote all his novels, in fact,""" start="00:01:16.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""on index cards.""" start="00:01:18.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I don't mean that he just took notes on these cards""" start="00:01:20.160" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or wrote outlines on them.""" start="00:01:22.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""He did both of those things as well,""" start="00:01:24.160" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""but he also wrote the actual prose of his novels,""" start="00:01:25.680" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""word by word, sentence by sentence, on index cards.""" start="00:01:28.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Let's see what that looked like at scale.""" start="00:01:32.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""This box you see here,""" start="00:01:37.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""full of groups of bundled cards,""" start="00:01:39.440" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""is what a novel in progress looked like for Nabokov.""" start="00:01:41.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""If you squint, you can see that these cards""" start="00:01:43.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""were from the composition of Lolita,""" start="00:01:46.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""probably his most famous novel.""" start="00:01:47.640" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""So why did he write novels on index cards?""" start="00:01:50.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""It's not necessarily an obvious choice.""" start="00:01:53.720" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Yes, sadly, Emacs wasn't available to him at the time,""" start="00:01:56.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""but most writers in his day,""" start="00:01:59.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""if they weren't using typewriters,""" start="00:02:01.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""which were available,""" start="00:02:02.640" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""were using notebooks or loose-leaf sheets""" start="00:02:03.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or something like that.""" start="00:02:06.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Not these tiny little index cards.""" start="00:02:07.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""But Nabokov loved index cards.""" start="00:02:09.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""He swore by them because they represented""" start="00:02:11.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""an elegant solution""" start="00:02:14.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""to three of the most pressing practical problems""" start="00:02:15.200" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""that every novelist faces.""" start="00:02:18.000" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template new="1" text="""Three practical problems novelists face""" start="00:02:24.080" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template text="""Writing a good novel""" start="00:02:24.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""is artistically difficult, of course.""" start="00:02:25.307" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""You have to write something interesting""" start="00:02:27.480" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""with a good story,""" start="00:02:28.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""something that people want to read.""" start="00:02:30.107" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""But writing any novel at all,""" start="00:02:31.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""whether it's good or bad,""" start="00:02:33.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""is brutally, practically difficult.""" start="00:02:35.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""You're hacking something like 100,000 words""" start="00:02:37.720" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""into unified shape over a long period of time,""" start="00:02:39.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""months or years.""" start="00:02:42.440" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""There are organizational challenges""" start="00:02:43.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""inherent in that process,""" start="00:02:45.720" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and each writer needs practical techniques""" start="00:02:46.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""to manage those challenges.""" start="00:02:48.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""The most basic challenge, of course, is that,""" start="00:02:51.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""unless you're trying to bring back""" start="00:02:53.400" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""the Homeric Bard tradition""" start="00:02:55.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""of reciting books from memory in firelit halls,""" start="00:02:57.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""you need to actually set down""" start="00:02:59.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""those 100,000 words on some medium.""" start="00:03:01.200" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""In Nabokov's case, index cards worked fine for this.""" start="00:03:03.320" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""A little cramped, maybe, but workable.""" start="00:03:05.840" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Secondly, as you're writing,""" start="00:03:08.440" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""you're bound to think of little but important things""" start="00:03:09.680" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""about the story that you want to record.""" start="00:03:11.720" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I'm not talking here about big thematic notes""" start="00:03:13.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or research that can go in a separate document,""" start="00:03:16.207" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""but smaller, more contextual notes""" start="00:03:19.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""that belong right along the prose that they refer to.""" start="00:03:21.160" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""These might be reminders, like,""" start="00:03:23.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""&quot;Remember to clean up this sentence,&quot;""" start="00:03:26.640" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or questions for yourself""" start="00:03:28.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""to consider during rewrites, like,""" start="00:03:29.707" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""&quot;Why does Shirley feel this way here?&quot;""" start="00:03:31.907" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Nabokov recorded these notes""" start="00:03:33.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""in the margins of his cards or on the backs.""" start="00:03:35.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Paper, in general, is great for this kind of""" start="00:03:37.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""intertextual note-taking.""" start="00:03:40.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""That's not particular to index cards.""" start="00:03:41.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""But what Nabokov really loved about index cards""" start="00:03:44.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""was how they solved the novelist's""" start="00:03:47.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""third and most difficult practical problem,""" start="00:03:49.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""which is imposing some kind of structure""" start="00:03:52.120" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""on this mountain of words.""" start="00:03:54.280" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""To have any hope of wrangling a novel into being,""" start="00:03:55.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""you need some way to break it down""" start="00:03:58.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""into parts, chapters, scenes, snatches of dialogue.""" start="00:04:00.120" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""You need some kind of higher-level outline""" start="00:04:03.640" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""that you can read, navigate, and rearrange""" start="00:04:05.840" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""as you consider and reconsider your story.""" start="00:04:08.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""You need structure.""" start="00:04:09.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Index cards gave Nabokov a really powerful way""" start="00:04:11.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""to impose this structure""" start="00:04:14.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""because they created small, independent""" start="00:04:16.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""chunks of prose""" start="00:04:18.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""that he could bundle together into groups,""" start="00:04:19.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""like we saw in the box.""" start="00:04:21.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""This let him navigate his novel in progress quickly.""" start="00:04:22.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""He could just flip through those bundles,""" start="00:04:31.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""bundle by bundle, instead of card by card.""" start="00:04:33.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""He could also impose on""" start="00:04:36.120" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and modify the structure of his novel""" start="00:04:38.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""just by shuffling those bundles around.""" start="00:04:40.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""So that's why Nabokov loved index cards""" start="00:04:42.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""for writing novels.""" start="00:04:45.307" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template new="1" text="""Org mode for writing novels""" start="00:04:46.560" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template text="""Now I'd love to talk about""" start="00:04:46.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""why I love Org mode so much for writing novels""" start="00:04:48.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and how it helps me tackle those same challenges.""" start="00:04:51.280" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""The first practical challenge,""" start="00:04:54.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""recording your words on some medium,""" start="00:05:01.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""is pretty simple.""" start="00:05:03.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Org mode is a part of Emacs,""" start="00:05:04.774" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""a text editor, so you can just type in your text.""" start="00:05:06.440" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""We're not going to spend any more time on that.""" start="00:05:09.200" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""For the second practical challenge,""" start="00:05:10.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""recording small intertextual notes,""" start="00:05:13.440" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Org mode offers comments, like this one here.""" start="00:05:16.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""The comment, &quot;maybe I need to say which store?&quot;,""" start="00:05:19.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""with the leading pound sign there.""" start="00:05:21.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I think that comments are generally""" start="00:05:23.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""underappreciated outside of coding.""" start="00:05:25.874" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""When writing fiction, for example,""" start="00:05:28.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I love that Org mode lets me keep these comments""" start="00:05:29.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""close to the prose they refer to.""" start="00:05:32.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I can see right here that I'm talking about""" start="00:05:33.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""saying which store in this first line,""" start="00:05:37.160" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""&quot;One day, Bob went to the store.&quot;""" start="00:05:39.120" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I get to keep these things close to""" start="00:05:40.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""the prose they refer to""" start="00:05:44.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""without ever having to worry that""" start="00:05:45.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""they'll accidentally be exported to a reader.""" start="00:05:46.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""That's great.""" start="00:05:48.480" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""So let's talk about how Org Mode handles the third""" start="00:05:50.540" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and most brutal challenge of all, which is structure.""" start="00:05:52.807" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Here we've taken the same text""" start="00:06:00.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and we've imposed some structure on it.""" start="00:06:03.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Like index cards,""" start="00:06:04.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""this is where Org mode really shines.""" start="00:06:07.807" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Org mode extends outline mode,""" start="00:06:09.640" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""which is built around the concept of header lines,""" start="00:06:12.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""with different levels denoted by""" start="00:06:14.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""different numbers of leading asterisks (`*`).""" start="00:06:15.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Personally, I tend to use top line headers""" start="00:06:18.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""as chapters and second line headers as scenes.""" start="00:06:20.974" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""You can see that here, where chapter one says""" start="00:06:23.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""&quot;Bob and Shirley meet.&quot;""" start="00:06:26.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Here's a scene, &quot;Bob goes to the store.&quot;""" start="00:06:27.320" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""And here below is chapter two, yet unwritten,""" start="00:06:29.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""where Bob goes to work.""" start="00:06:32.640" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Pretty exciting. Since Org mode supports folding,""" start="00:06:34.320" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I can read quickly through a summary of my novel""" start="00:06:39.680" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""at either the chapter or the scene level""" start="00:06:42.160" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""just by flipping through different levels of""" start="00:06:44.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""visibility, just like Nabokov could flip through""" start="00:06:46.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""different bundles of cards.""" start="00:06:48.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""So here's the chapter level.""" start="00:06:51.307" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I can see at a chapter level,""" start="00:06:52.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""&quot;Bob and Shirley meet&quot;, &quot;Bob goes to work.&quot;""" start="00:06:54.720" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""And then I can get one level more specific""" start="00:06:56.680" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and see the various scenes in the chapter""" start="00:06:59.080" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""at the second header level.""" start="00:07:01.160" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""And I can, if I want,""" start="00:07:02.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I can go all the way back to the prose level.""" start="00:07:04.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""And just like Nabokov shuffling""" start="00:07:10.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""his index cards around,""" start="00:07:12.774" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I can move scenes around as logical units.""" start="00:07:14.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Let's say, for example,""" start="00:07:16.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""that we wanted to move Bob's thoughts about life,""" start="00:07:18.200" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""which are down here, up further.""" start="00:07:20.400" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Well, I can grab &quot;Bob thinks about life,&quot;""" start="00:07:22.920" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and I can move it up or down as a logical unit.""" start="00:07:26.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""But Org mode offers some even more powerful tricks""" start="00:07:30.480" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""for structuring and navigating your novel,""" start="00:07:34.720" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""beyond what even index cards can do.""" start="00:07:36.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""For example, you can use tags""" start="00:07:38.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""on your scene headings. You can see these here.""" start="00:07:41.974" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""They're the prominent colon separated words""" start="00:07:44.480" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""on the header lines.""" start="00:07:46.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""In this case, I'm using `bob` and `shirley`.""" start="00:07:47.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""These tags can represent characters""" start="00:07:49.840" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""who appear in the scene,""" start="00:07:52.720" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""which is what I'm doing here,""" start="00:07:53.674" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or locations in which the scenes occur,""" start="00:07:54.640" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or plot lines that the scenes further,""" start="00:07:57.207" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""really anything that you want.""" start="00:07:59.160" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""And you can then use Org mode's sparse view features""" start="00:08:00.480" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""to query a set of tags and trim your novel down to""" start="00:08:04.240" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""a subset of related scenes.""" start="00:08:07.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""For example, let's say we want to filter down to""" start="00:08:09.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""only the scenes in which Shirley appears.""" start="00:08:12.560" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""This could allow us to read quickly through""" start="00:08:14.800" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""just a subset of the prose,""" start="00:08:25.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""the prose that referred to Shirley in some way.""" start="00:08:27.440" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Maybe we want to do that""" start="00:08:29.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""to check continuity for her character,""" start="00:08:31.360" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or make sure that her character develops""" start="00:08:33.280" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""along a compelling arc,""" start="00:08:35.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or even just to get a sense""" start="00:08:37.000" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""of how much airtime she gets in the novel.""" start="00:08:38.320" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Thanks for listening to this whirlwind exploration""" start="00:08:44.040" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""of some of the practical challenges of writing""" start="00:08:49.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""novels and other long-form prose,""" start="00:08:51.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and how Org mode can help tackle them.""" start="00:08:53.600" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template new="1" text="""Takeaways and next steps""" start="00:08:55.600" video="mainVideo-nabokov" id="subtitle"]]
+
+[[!template text="""I'd like to leave you with a couple takeaways""" start="00:08:55.600" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and next steps for those who are interested.""" start="00:08:57.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""First, if you're writing a novel""" start="00:08:59.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or other long-form prose,""" start="00:09:01.907" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""or even considering doing so,""" start="00:09:02.841" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""take a look at Org mode,""" start="00:09:04.874" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""especially if you're already familiar with Emacs.""" start="00:09:06.108" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""It won't solve the artistic problem""" start="00:09:08.375" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""of writing an interesting book for you,""" start="00:09:10.475" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""not even with a ChatGPT plugin,""" start="00:09:11.875" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""but it's a fantastic tool for managing""" start="00:09:13.908" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""some of the practical challenges""" start="00:09:15.875" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""that come with hacking 100,000 words into shape""" start="00:09:16.875" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""over the months or years that that process takes.""" start="00:09:19.841" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Second, if you're interested in learning more""" start="00:09:22.741" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""about some of the advanced features of Org mode""" start="00:09:25.840" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and how they can help in this process,""" start="00:09:27.960" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I wrote a long blog post about my difficulties""" start="00:09:29.520" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""writing a novel with 13 interconnected subplots,""" start="00:09:32.320" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""and how Emacs and Org mode saved it from imploding.""" start="00:09:34.880" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""I'll put a link here below. [ewj.io/emacs]""" start="00:09:37.760" video="mainVideo-nabokov" id="subtitle"]]
+[[!template text="""Thanks for listening, and Emacs on!""" start="00:09:44.000" video="mainVideo-nabokov" id="subtitle"]]
+
+
+
+Captioner: bhavin192
+
+<a name="nabokov-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: About 3""" start="00:00:03.560" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""seconds. And I believe we are live.""" start="00:00:16.020" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Hi Edmund, how are you doing?""" start="00:00:17.280" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: Hi, how's it going Leo?""" start="00:00:19.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I'm doing well, thanks.""" start="00:00:20.279" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Yourself?""" start="00:00:20.560" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'm also doing well. So Edmund doesn't have""" start="00:00:24.480" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""his webcam on but he will be able to answer""" start="00:00:26.980" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""questions that you ask inside of the Azure""" start="00:00:29.960" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""pad that I've shared again on IRC.""" start="00:00:32.159" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""By the way, we only have 1 question and we""" start="00:00:35.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""have about 40 minutes of question time,""" start="00:00:37.120" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""so feel free to add as many questions as you""" start="00:00:40.380" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""want and in the meantime,""" start="00:00:41.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""we'll get started on the first 1.""" start="00:00:43.380" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Unless, Edmond, do you have anything to say""" start="00:00:45.020" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""after your presentation?""" start="00:00:45.920" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: No, we can jump in.""" start="00:00:48.280" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, lovely. So first question,""" start="00:00:51.560" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""is the index, sorry, does the index really""" start="00:00:54.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""matter here? I mean his colleague is also""" start="00:00:57.840" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""using some A4 paper and you think that the""" start="00:01:00.380" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""index card is the most important thing here?""" start="00:01:02.400" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's a great question.""" start="00:01:04.540" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I mean, I think you can do anything with a""" start="00:01:08.000" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""larger piece of paper that you can do with a""" start="00:01:09.520" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""smaller piece of paper.""" start="00:01:10.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""But I actually encourage you to try this out.""" start="00:01:12.280" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I did, not for research for this talk,""" start="00:01:14.820" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""but just when I read about Nabokov and his""" start="00:01:17.040" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""index cards to begin with,""" start="00:01:18.160" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I kind of tried it out a little bit and wrote""" start="00:01:20.380" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""some shorter things on index cards and so on""" start="00:01:22.480" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""and there really is something about the size""" start="00:01:24.640" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""and the kind of ability to manipulate them.""" start="00:01:27.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""You really can bundle them and move them""" start="00:01:30.200" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""around easier and I think that that I think""" start="00:01:33.420" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""he enjoyed that. So sure I mean I think you""" start="00:01:35.800" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""can do anything with a4 paper that you could""" start="00:01:37.540" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""do with index cards but I think there's""" start="00:01:38.860" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""something about that form that lends itself""" start="00:01:40.760" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""to the especially to the reorganization maybe""" start="00:01:43.840" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""to the focus as well just because it's""" start="00:01:45.540" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""smaller but but definitely to the""" start="00:01:47.060" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""reorganization.""" start="00:01:47.220" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Definitely So we have a lot more questions""" start="00:01:53.600" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""now. So thank you, everyone,""" start="00:01:54.640" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""for answering my plea for more questions.""" start="00:01:56.479" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Next question. How do you explore the second""" start="00:01:59.760" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""level headings, i.e. The scenes in this""" start="00:02:01.880" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""example, without the heading itself,""" start="00:02:03.600" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""just the content? Is that clear enough?""" start="00:02:05.740" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: Great question. Yeah, so I've tried 2 ways,""" start="00:02:09.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""sorry, 3 ways with this and landed on 1 that""" start="00:02:13.280" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I like. Originally I used the OX package.""" start="00:02:16.080" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""There's an OX ignore thing in there where you""" start="00:02:20.080" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""can add an ignore tag to where you don't want""" start="00:02:23.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""the headings, but you do want the content""" start="00:02:24.720" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""exported. I found that a little bit annoying,""" start="00:02:26.920" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""just visually annoying,""" start="00:02:27.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""when I'm, again, My theme here is navigating""" start="00:02:31.320" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""100,000 word documents effectively and having""" start="00:02:34.840" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""that extra visual noise was kind of a pain.""" start="00:02:36.900" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""So I ended up, first I just did like a dumb""" start="00:02:40.520" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""ox script as part of my publication kind of""" start="00:02:43.040" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""pipeline that removed headlines at the scene""" start="00:02:47.720" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""level. And then actually,""" start="00:02:48.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""because I ended up leaning so heavily on""" start="00:02:50.980" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Pandoc, and Pandoc, for those of you who have""" start="00:02:53.680" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""not looked at recent versions of Pandoc,""" start="00:02:56.200" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""they've got a really fantastic way to use Lua""" start="00:03:00.920" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""at this point to write filters.""" start="00:03:02.420" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""So you can kind of take the AST of your""" start="00:03:04.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""document and run these very simple Lua""" start="00:03:07.120" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""filters over it. They used to be in Haskell,""" start="00:03:09.140" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""which I'm not smart enough to write Haskell""" start="00:03:11.780" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""is 1 of the things that I've discovered.""" start="00:03:13.140" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I keep bouncing off of it,""" start="00:03:14.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""but I'm just smart enough to write Lua.""" start="00:03:16.360" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""And so I use a Lua filter now,""" start="00:03:19.480" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""which I'm happy to publish to anyone who's""" start="00:03:21.180" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""interested. That basically lets me say,""" start="00:03:22.880" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""you know, what level headings to get rid of""" start="00:03:27.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""the heading, but publish the content.""" start="00:03:28.740" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""And part of the reason that's been useful is""" start="00:03:30.320" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""that some of the other novels I'm working on""" start="00:03:31.920" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""for example have different levels of""" start="00:03:33.540" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""hierarchy where maybe there's a part and then""" start="00:03:35.640" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""you know at the top level and then chapter""" start="00:03:37.260" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""and then scene and it's now the third level""" start="00:03:39.160" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""instead of the second and it's much easier in""" start="00:03:41.400" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""the Lua to just be like remove the third""" start="00:03:43.840" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""level headings or the second level headings""" start="00:03:45.400" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""or whatever it is so that's been that's been""" start="00:03:47.680" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""helpful.""" start="00:03:47.860" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great, Moving on to the next question,""" start="00:03:53.040" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""slightly off topic, where can we see your""" start="00:03:58.120" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""novels?""" start="00:03:58.260" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh well yeah, you can,""" start="00:04:01.060" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""they're on Amazon, there's 2 of them and a""" start="00:04:05.500" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""book of short stories.""" start="00:04:06.160" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I think the short stories and the second""" start="00:04:10.120" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""novel, which is called World Enough in Time,""" start="00:04:11.960" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""which is the 1 that kind of prompted this""" start="00:04:13.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""talk, are probably of more interest to this,""" start="00:04:16.160" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""to the Emacs focused group.""" start="00:04:18.320" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""The first one's like a philosophical murder""" start="00:04:20.380" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""mystery, but the World Enough in Time is a""" start="00:04:25.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""kind of Douglas Adams inspired sci-fi comedy""" start="00:04:29.820" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""about kind of hijinks on a relativistic speed""" start="00:04:34.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""space cruiser, which was a lot of fun to""" start="00:04:37.360" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""write. It has a lot of twisty subplots,""" start="00:04:38.980" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""which is where I developed that technique of""" start="00:04:42.500" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""being able to filter down to tags and see a""" start="00:04:46.560" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""reduced version of the novel,""" start="00:04:47.840" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""which was very handy when trying to juggle 13""" start="00:04:51.560" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""subplots. So yeah, check it out.""" start="00:04:53.520" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great, we'll make sure that you have the""" start="00:04:57.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""links available on the talk page afterwards.""" start="00:04:59.860" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Right now I sadly have to host so I cannot""" start="00:05:03.420" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""look up the links but we'll make sure or if""" start="00:05:05.680" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: I put it in there for you.""" start="00:05:08.100" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: anyone in the chat... Oh you did?""" start="00:05:09.020" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Yeah. In the meantime we'll move on to the""" start="00:05:13.800" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""next question. Have you looked at the Denote""" start="00:05:16.560" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""signature features? The hierarchical nature""" start="00:05:19.700" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""of Lumen's ideas and index cards works well""" start="00:05:23.180" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""with Denote signatures.""" start="00:05:24.100" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""So are you familiar with Denote first?""" start="00:05:26.120" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: I am not. No, it sounds like something that I""" start="00:05:28.740" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""should check out.""" start="00:05:29.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, Denote is a way to work with slip""" start="00:05:33.080" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""boxes. We talked a little bit about it""" start="00:05:35.460" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""earlier today. We talked about Orgroam,""" start="00:05:37.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""we talked about Denote as well as a lighter""" start="00:05:40.600" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""alternative to Orgroam.""" start="00:05:41.580" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""And yeah, the organization with index cards""" start="00:05:45.520" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""feels like it's something that would highly""" start="00:05:47.360" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""benefit from linking and back links and any""" start="00:05:50.740" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""kind of UX functionality for relating pieces""" start="00:05:53.880" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""of information. So yeah,""" start="00:05:56.680" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""definitely look it up.""" start="00:05:57.620" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I'm a heavy org-roam user.""" start="00:06:00.040" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I use org-roam for a lot of different stuff""" start="00:06:03.280" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""and I would love, I will definitely check out""" start="00:06:05.740" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Denote as an alternative.""" start="00:06:06.740" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sure, I'm not particularly personally""" start="00:06:09.520" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""familiar with what Signature is within Denote""" start="00:06:11.720" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""and it'd be great if the person who asked the""" start="00:06:13.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""question could perhaps provide more details""" start="00:06:15.580" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""so that Edmund could get a little more""" start="00:06:17.980" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""information when he returns to the document.""" start="00:06:20.000" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""But yeah, if you're using Org-ROM,""" start="00:06:21.480" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""you're already within the mindset that you""" start="00:06:25.140" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""need, and perhaps you'd gain a little bit""" start="00:06:27.180" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""extra stuff from using Dino's signature,""" start="00:06:29.260" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I assume. We have 8 minutes.""" start="00:06:32.920" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""We're still good on time.""" start="00:06:34.040" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Next question, do you have a workflow""" start="00:06:36.500" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""combining handwritten index cards and org""" start="00:06:39.020" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""mode?""" start="00:06:39.360" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: Great question. I do not.""" start="00:06:42.400" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I do write by hand when I get,""" start="00:06:46.620" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I don't know what a good term for it is,""" start="00:06:49.120" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I'll call it like editorial paralysis or""" start="00:06:51.420" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""something when I find it very hard to move""" start="00:06:53.100" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""forward in something because I keep going""" start="00:06:54.720" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""back and tweaking. And I will handwrite stuff""" start="00:06:56.940" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""at that point and then type it in because""" start="00:06:58.520" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""it's so much harder to get stuck in editing""" start="00:07:02.120" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""mode when you have to move forward on the""" start="00:07:04.480" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""page. I don't use index cards.""" start="00:07:07.360" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""In the blog article that I link in my talk,""" start="00:07:11.680" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""the ewj.io slash emacs 1,""" start="00:07:14.400" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I did try using handwritten or spreadsheet""" start="00:07:18.240" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""outlines at 1 point and found them very,""" start="00:07:22.360" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""very clumsy for novel writing just because I""" start="00:07:27.640" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""do so much, I mean, I do so much revision""" start="00:07:29.820" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""that moving things around meant that I had to""" start="00:07:32.600" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""keep 2 things in sync with each other,""" start="00:07:34.480" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""the pros and the outline.""" start="00:07:35.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""And that was what really led me to Org Mode""" start="00:07:37.540" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""as a way to keep the, again,""" start="00:07:39.800" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""I think part of the key for me is keeping the""" start="00:07:42.040" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""outline and the pros right next to each other""" start="00:07:44.580" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""in a way that they move around which is just""" start="00:07:46.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""really, I don't know, for me really really""" start="00:07:48.800" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""powerful.""" start="00:07:49.000" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay great, so we finished the list of""" start="00:07:54.280" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""questions available on the pad,""" start="00:07:55.840" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""but I see that some people have joined us on""" start="00:07:58.260" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""BBB, so hi everyone. If you have any""" start="00:08:01.100" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""questions feel free to unmute yourself and""" start="00:08:03.340" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""ask them. Otherwise, we might go on a break.""" start="00:08:06.560" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""So I'm going to give you about 10 seconds to""" start="00:08:08.360" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""unmute yourself. Or if you just want to add""" start="00:08:14.480" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""more questions on the pad,""" start="00:08:15.660" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""that's also fine. And that'll give you about""" start="00:08:17.680" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""30 seconds. Otherwise,""" start="00:08:19.540" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""we'll need to go on a break.""" start="00:08:20.660" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""And in the meantime, I'll thank you,""" start="00:08:24.020" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Edmund, for your presentation,""" start="00:08:25.600" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""because it's always nice,""" start="00:08:27.880" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""you know, we The reason why we have 2 tracks,""" start="00:08:31.400" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""and we've been having 2 tracks for the last 2""" start="00:08:34.200" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""or 3 editions of EmacsConf is because it's""" start="00:08:36.039" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""really nice to have those talks which are""" start="00:08:38.799" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""still related to Emacs and to far distance""" start="00:08:43.500" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""developments because we are obviously using""" start="00:08:45.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""packages. But it's really nice to see when we""" start="00:08:48.160" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""foray into other areas like writing or any""" start="00:08:51.960" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""kind of academia-based topics.""" start="00:08:53.400" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""So thank you, it's really nice.""" start="00:08:55.440" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""It brings different colors to the spectrum of""" start="00:09:01.500" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""what EmacsConf is and what ultimately Emacs""" start="00:09:03.580" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""is as well. Thank you.""" start="00:09:04.680" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well thanks to everyone who tuned in and Leo""" start="00:09:06.960" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""thanks to you and all the other organizers""" start="00:09:08.160" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""for putting this together.""" start="00:09:09.060" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""Appreciate it.""" start="00:09:09.720" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you. All right I think we're going to""" start="00:09:12.720" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""go on a little break for 5 minutes because I""" start="00:09:14.380" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""don't see other questions being asked.""" start="00:09:16.060" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""So everyone we'll see you again in 5 minutes""" start="00:09:18.900" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""and thank you again, Edmund.""" start="00:09:19.900" video="qanda-nabokov" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cheers.""" start="00:09:20.720" video="qanda-nabokov" id="subtitle"]]
+
+Questions or comments? Please e-mail [ewj@inkwellandoften.com](mailto:ewj@inkwellandoften.com?subject=Comment%20for%20EmacsConf%202023%20nabokov%3A%20Why%20Nabokov%20would%20use%20Org-Mode%20if%20he%20were%20writing%20today)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/nabokov-before.md b/2023/info/nabokov-before.md
new file mode 100644
index 00000000..e9aa2951
--- /dev/null
+++ b/2023/info/nabokov-before.md
@@ -0,0 +1,25 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 10-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="nabokov-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="nabokov-mainVideo" data="""
+00:00.000 Introduction
+00:45.760 Nabokov's process of writing novels
+02:24.080 Three practical problems novelists face
+04:46.560 Org mode for writing novels
+08:55.600 Takeaways and next steps
+
+"""]]<div></div>Duration: 09:51 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--main.opus">Download --main.opus (6.3MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--main.webm">Download --main.webm (22MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--silence.mkv">Download --silence.mkv (12MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen.org">Download .org</a></li><li><a href="https://toobnix.org/w/bDou9TDETryMt18KcdB56A">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="nabokov-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="nabokov-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--answers.opus"></audio></div><div></div>Duration: 09:21 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--answers.opus">Download --answers.opus (3.1MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-nabokov--why-nabokov-would-use-orgmode-if-he-were-writing-today--edmund-jorgensen--answers.webm">Download --answers.webm (9.1MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/nabokov-nav.md b/2023/info/nabokov-nav.md
new file mode 100644
index 00000000..f7ef3f32
--- /dev/null
+++ b/2023/info/nabokov-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/writing">Emacs turbo-charges my writing</a>
+Next by track: <a href="/2023/talks/collab">Collaborative data processing and documenting using org-babel</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/one-after.md b/2023/info/one-after.md
new file mode 100644
index 00000000..e7b63c57
--- /dev/null
+++ b/2023/info/one-after.md
@@ -0,0 +1,904 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="one-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Hi, everybody. Welcome to the EmacsConf 2023.""" start="00:00:00.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""I hope you're doing well and you're having fun.""" start="00:00:04.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""I'm Tony Aldon, and in this talk,""" start="00:00:06.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we are going to see how to build a static website""" start="00:00:08.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""with the package one.el that I wrote.""" start="00:00:11.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""But before we start, I'd like to thank""" start="00:00:14.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""all the people who organized that conference,""" start="00:00:17.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so thank you all for the great work.""" start="00:00:20.560" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Documentation""" start="00:00:24.000" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Now let's jump into the documentation of one.el,""" start="00:00:24.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which is built with one.el. In the install page,""" start="00:00:27.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we can see that we have a sidebar""" start="00:00:31.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""with all of the pages in the documentation,""" start="00:00:33.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""some buttons to switch between pages,""" start="00:00:35.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we also have a table of contents""" start="00:00:39.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""for some of the pages if we need it.""" start="00:00:41.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now let's jump into one.el repository""" start="00:00:45.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and see why I like how it is implemented,""" start="00:00:49.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""because the website that we've seen,""" start="00:00:52.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the documentation, is just one file.""" start="00:00:53.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is that file, with the headline of level 1""" start="00:00:55.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""being the web pages.""" start="00:01:00.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""There needs to be a web page to have the property,""" start="00:01:03.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the Org property `:ONE:`, set to a render function.""" start="00:01:06.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We are going to see how they work after.""" start="00:01:09.240" video="mainVideo-one" id="subtitle"]]
+[[!template text="""And the `:CUSTOM_ID:`, the value of the `:CUSTOM_ID:`,""" start="00:01:11.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""is the path of the page. So really,""" start="00:01:14.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the website that we have on the left""" start="00:01:17.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""is this file. So to me, this is something simple like that""" start="00:01:20.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that I wanted.""" start="00:01:24.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""And another thing is that when we want to""" start="00:01:25.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""change something with one.el,""" start="00:01:29.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we don't change configuration""" start="00:01:33.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""or write JavaScript or anything else.""" start="00:01:36.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We just write Emacs Lisp code or a bit of CSS.""" start="00:01:38.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is what we have with a minibuffer website""" start="00:01:43.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that is built with one.el,""" start="00:01:45.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the only thing that I had to do""" start="00:01:47.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""is to write Emacs Lisp code.""" start="00:01:50.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So those are two things: the content in one file,""" start="00:01:51.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and if we want to change the layout, CSS and Emacs Lisp.""" start="00:01:55.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This is one.el.""" start="00:01:58.680" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Starting a new project""" start="00:02:02.200" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Now let's go to our node,""" start="00:02:02.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we are going to start a new project.""" start="00:02:03.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""How do we do that?""" start="00:02:07.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""In a new empty directory,""" start="00:02:09.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so new project directory,""" start="00:02:11.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we call the function `one-default-new-project`.""" start="00:02:15.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We have that project, which is one file with the""" start="00:02:19.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""five default type of pages that we have,""" start="00:02:22.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and one CSS file.""" start="00:02:25.760" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Building""" start="00:02:27.400" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""How to build that website?""" start="00:02:27.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Okay, so we call the function `one-build`.""" start="00:02:29.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This builds the website.""" start="00:02:32.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We jump into a terminal, and now if we run tree,""" start="00:02:33.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we can see that the website""" start="00:02:36.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""has been built in the public directory""" start="00:02:39.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""with the information in the Org properties""" start="00:02:42.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the content of one.org files. Okay, cool.""" start="00:02:45.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now we are going to render that in the browser""" start="00:02:50.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""to serve that, and to do that""" start="00:02:53.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we can use browser-sync utility,""" start="00:02:58.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which is cool with that,""" start="00:03:01.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""in that each time we are going to...""" start="00:03:02.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we go into public...""" start="00:03:06.420" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Each time we are going to change and rebuild the website,""" start="00:03:07.861" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this will be reloaded in the browser.""" start="00:03:11.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So one, this is that website, is now this one.""" start="00:03:14.320" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Side by side""" start="00:03:19.760" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""So let's put them side by side.""" start="00:03:19.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We go there, and we may do something like that.""" start="00:03:22.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So one.el, the home page, so our custom ID""" start="00:03:26.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""with the value just a /,""" start="00:03:30.240" video="mainVideo-one" id="subtitle"]]
+[[!template text="""is rendered with that function `one-default-home`,""" start="00:03:32.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which is a render function,""" start="00:03:36.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the first argument of that function is the headline,""" start="00:03:37.240" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this current headline. So, parsed with the Org parser,""" start="00:03:41.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and then we do the thing that we want to do,""" start="00:03:45.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the render function returns an HTML string""" start="00:03:48.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that is used to build the pages at the custom ID.""" start="00:03:52.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now we can go to another web page, the second web page,""" start="00:03:57.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see that there is a different value""" start="00:04:03.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""for the `:ONE:` property, so another render function,""" start="00:04:05.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the custom ID at the path of that page.""" start="00:04:10.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we can see that in the browser.""" start="00:04:14.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is `/blog/default-home-list-pages`.""" start="00:04:16.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is that. Now there are three other pages,""" start="00:04:19.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""but we can list that like that.""" start="00:04:23.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We do a grep in that files,""" start="00:04:25.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see the different default render function.""" start="00:04:28.360" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Writing a render function""" start="00:04:32.160" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""In the second part of that talk,""" start="00:04:32.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we are going to write a render function.""" start="00:04:34.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we are going to see that after.""" start="00:04:38.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now maybe we can go to the default page,""" start="00:04:41.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and let's modify that default page.""" start="00:04:47.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We see that this uses `one-default` render function,""" start="00:04:50.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now let's write &quot;foo bar baz&quot;.""" start="00:04:54.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We want to modify the content. We save.""" start="00:04:57.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We call again one-build distribute,""" start="00:05:00.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see here we have it: foo bar baz in the default page.""" start="00:05:10.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now we can use... When we use one-build,""" start="00:05:16.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this also copies the files in the asset directory""" start="00:05:19.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""into the public directory.""" start="00:05:23.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This is not always what we want to do.""" start="00:05:25.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Sometimes we just change the content,""" start="00:05:28.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and for that we can use `one-render-page-at-point`.""" start="00:05:29.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""If we use that one, this just renders the current page.""" start="00:05:34.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we see that we have again &quot;foo bar baz&quot; in the page.""" start="00:05:39.480" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""New page""" start="00:05:44.680" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Now let's add a new page. To add a new page,""" start="00:05:44.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we just have to copy one of them, maybe the default page.""" start="00:05:47.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We are going to call it maybe emacsconf-2023.""" start="00:05:52.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We still use one default render function to render it,""" start="00:05:58.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""but we want to change the path.""" start="00:06:01.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So the custom ID, we are going to give it /blog""" start="00:06:04.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and emacsconf-2023 with a slash at the end,""" start="00:06:08.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the content... We no longer want this one,""" start="00:06:12.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""but maybe &quot;We're having a lot of fun&quot;.""" start="00:06:18.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we save that, we rebuild with `one-build` this,""" start="00:06:22.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now we can look at the top""" start="00:06:28.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and pass it the path `/blog/emacsconf-2023/.""" start="00:06:33.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we have that new page.""" start="00:06:39.280" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Linking between pages""" start="00:06:41.720" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Now, how to link between pages?""" start="00:06:41.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we are going to write a link""" start="00:06:44.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that links to the last page,""" start="00:06:46.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so a page with the table of contents.""" start="00:06:48.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""To do that, we just have to use the value of the custom ID,""" start="00:06:50.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and to link to a custom ID inside Org mode,""" start="00:06:54.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we use the hashtag. We pass it here,""" start="00:06:58.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""then we pass it in the description,""" start="00:07:03.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so TOC and sidebar,""" start="00:07:07.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now if we press RET inside Emacs,""" start="00:07:09.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we jump to that page. So this is cool.""" start="00:07:12.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now we build again,""" start="00:07:15.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see that we are going to have""" start="00:07:17.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the link to the page in the browser.""" start="00:07:19.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this link to the default page with a table of contents,""" start="00:07:22.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""fine, but maybe what we want to do""" start="00:07:27.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""is to link to the &quot;Headline foo&quot; in that page.""" start="00:07:29.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""How do we do that?""" start="00:07:33.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We do that by adding a custom id.""" start="00:07:34.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We keep the first part,""" start="00:07:36.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which is the page where we are,""" start="00:07:41.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we added hash with foo,""" start="00:07:43.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so that Headline foo will have the ID &quot;foo&quot;""" start="00:07:46.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""in its H2 tag, HTML tag,""" start="00:07:50.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now we can link it here with still custom ID, so &quot;foo&quot;,""" start="00:07:57.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now it's headline... headline with what?""" start="00:08:05.081" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Headline foo in TOC page. So we have that.""" start="00:08:10.540" video="mainVideo-one" id="subtitle"]]
+[[!template text="""If we press RET, we jump to that headline in Emacs.""" start="00:08:14.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is super cool.""" start="00:08:19.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""And now, if we call `one-build`,""" start="00:08:20.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we see in the browser""" start="00:08:23.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we have a new link,""" start="00:08:25.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and this link linked to that specific headline.""" start="00:08:26.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is cool. So we have the link between pages""" start="00:08:30.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that works inside Emacs""" start="00:08:34.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and that works well also in the browser.""" start="00:08:36.320" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""CSS""" start="00:08:40.000" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Now let's say that we want to change the CSS.""" start="00:08:40.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we've added a page with specific content,""" start="00:08:44.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we've done some links.""" start="00:08:50.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now we want to modify the CSS file""" start="00:08:51.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which is in the asset directory, the one.css.""" start="00:08:55.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Each time we change it,""" start="00:09:00.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we want to have live reload""" start="00:09:02.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that copy that file into the public directory,""" start="00:09:05.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so the same. We go back here,""" start="00:09:10.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and there is a utility called `entr`, e-n-t-r.""" start="00:09:14.660" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Yes, this one, and using that, so a new terminal,""" start="00:09:18.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we are at the beginning.""" start="00:09:26.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This will watch the changing in what.css,""" start="00:09:28.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and `entr` will copy it into the public directory""" start="00:09:32.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""each time this changes. Let's go back to Org mode,""" start="00:09:35.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""because I chose some color that is cool,""" start="00:09:38.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now we go back to the CSS files.""" start="00:09:43.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We put them side by side, and maybe we go to the new page""" start="00:09:47.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we were changing,""" start="00:09:53.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we are going to change the body,""" start="00:09:55.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the background color, and maybe we can change""" start="00:10:01.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""with the color that we've just taken.""" start="00:10:03.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we save, and we see the changing happening.""" start="00:10:06.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We can do it again with the color""" start="00:10:10.220" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we have at the beginning,""" start="00:10:14.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and this is the user experience""" start="00:10:16.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we have with one.el and the default function.""" start="00:10:18.880" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""How to write a render function""" start="00:10:23.160" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Now that we've seen that,""" start="00:10:23.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we've done all of that part,""" start="00:10:26.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now we are going to see""" start="00:10:30.461" video="mainVideo-one" id="subtitle"]]
+[[!template text="""how to write a render function.""" start="00:10:31.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So let's go. The render function,""" start="00:10:34.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so one.org, we remember these are the functions""" start="00:10:36.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that are in the `:ONE:` Org property.""" start="00:10:41.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we are going to remove that part.""" start="00:10:43.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We no longer want that one. We don't want this.""" start="00:10:45.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We just keep that. `one-default`,""" start="00:10:49.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we want this to be the home of our website.""" start="00:10:52.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We have that. We rebuild,""" start="00:10:55.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now we just have one page, and we have that page.""" start="00:10:57.660" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We are going to add another page that we call &quot;foo&quot;,""" start="00:11:05.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and here we pass it the render function foo""" start="00:11:10.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that doesn't exist yet, and we are going to write it.""" start="00:11:15.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So maybe with some content, and we copy, copy.""" start="00:11:20.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We have that. We call it &quot;bar&quot; to have something to show.""" start="00:11:27.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So here we are. If we build that, so we build it,""" start="00:11:33.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see in the echo area at the bottom""" start="00:11:39.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we have an error &quot;void&quot;,""" start="00:11:42.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which is because the function foo doesn't exist.""" start="00:11:43.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So now we are going to write that function,""" start="00:11:46.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we write it in the onerc.el""" start="00:11:48.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""where we put any Elisp code""" start="00:11:53.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we want to be run""" start="00:11:57.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""each time we build the website or render the pages.""" start="00:11:58.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we want a render function called foo.""" start="00:12:03.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So that takes three arguments: page-tree, pages, and global.""" start="00:12:06.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We are going to look at the page-tree in our case,""" start="00:12:10.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the render function return an HTML string.""" start="00:12:16.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This is the thing that we want from them.""" start="00:12:19.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So maybe foo, bar, and baz.""" start="00:12:22.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now this is something well-defined,""" start="00:12:25.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and with one.org here, the file, we rebuild this,""" start="00:12:28.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we can see now in the browser,""" start="00:12:34.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""if we go to the page foo, that we have &quot;foo bar baz&quot;.""" start="00:12:39.620" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is exactly what we have rendered""" start="00:12:42.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""by the render function that is set,""" start="00:12:45.460" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we see at the bottom in the one.org file,""" start="00:12:47.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""in the `:ONE:` property. Now this is HTML, so we can pass it,""" start="00:12:51.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""for instance, h1, the tag h1.""" start="00:12:56.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We save that file. We go in the one.org file,""" start="00:13:00.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we build again, and now we see that we have an h1.""" start="00:13:06.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Okay, this is interesting, but if we would have to""" start="00:13:10.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""build this function with a string like that,""" start="00:13:14.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this is boring and not the best way.""" start="00:13:18.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we can use the library Jack,""" start="00:13:22.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which offers function `jack-html`""" start="00:13:24.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that takes some data structure,""" start="00:13:27.589" video="mainVideo-one" id="subtitle"]]
+[[!template text="""for instance, an h1, a nested list""" start="00:13:31.581" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that represents the HTML that we want to render,""" start="00:13:34.180" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and transform it into an HTML string.""" start="00:13:38.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we have that, we saved,""" start="00:13:41.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we rebuild in the one.org file with `one-build`,""" start="00:13:43.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see now that this has been built using `jack-html`.""" start="00:13:48.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now what do we want to do?""" start="00:13:55.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Okay, see, the thing that we want to do""" start="00:13:59.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""is to understand page-tree. So what is page-tree?""" start="00:14:02.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""page-tree is when we go to one.org,""" start="00:14:05.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this is really for foo,""" start="00:14:07.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this is the parsed data of that headline, that page.""" start="00:14:09.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So this is done with, no, not this one, we use,""" start="00:14:17.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so in the mini-buffer, we use `one-parse-buffer`,""" start="00:14:23.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see this is the data""" start="00:14:27.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we have with that function, first headline,""" start="00:14:30.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the second headline,""" start="00:14:33.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this is the parse tree that we have there.""" start="00:14:34.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This is that data that is passed to""" start="00:14:38.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the `foo` render function. One thing that is cool,""" start="00:14:40.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so I see here, is that as we are dealing with data,""" start="00:14:45.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we have all the data of the website,""" start="00:14:51.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we can show them in the web page. Now, why not?""" start="00:14:53.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""It's great to write the website""" start="00:14:57.361" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and also to debug if we need to debug at some point.""" start="00:15:00.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So let's render page-tree directly in the page, one.org,""" start="00:15:02.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we rebuild, we reload, and we see this is what we have,""" start="00:15:10.280" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this is the data that we have, okay?""" start="00:15:15.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""And we have, for instance, the `:raw-value` with this &quot;foo&quot;,""" start="00:15:17.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which is the headline,""" start="00:15:20.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the content of the headline in a raw format,""" start="00:15:22.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we also have custom,""" start="00:15:27.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so here we have the `:CUSTOM_ID: foo` and `:ONE: foo`,""" start="00:15:29.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""which are the properties,""" start="00:15:33.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and when we are inside those render functions,""" start="00:15:35.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we have access to this.""" start="00:15:40.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So let's, what can we do now, is to,""" start="00:15:43.241" video="mainVideo-one" id="subtitle"]]
+[[!template text="""let's get the row value.""" start="00:15:46.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So we no longer need that.""" start="00:15:48.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Maybe we can do something like that.""" start="00:15:51.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We create now HTML. In HTML, we want the body,""" start="00:15:54.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we want an h1 tag, and we are going to pass it""" start="00:16:04.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""a title, and in the title,""" start="00:16:08.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""this is something that we let-bind here,""" start="00:16:10.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so the value of the title,""" start="00:16:13.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we get it with `org-element-property`,""" start="00:16:15.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the `:raw-value`, so this is the property that we want,""" start="00:16:24.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so `raw-value`, and from which data we want that,""" start="00:16:29.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""to page-tree. So now, let's have one.org at the bottom,""" start="00:16:34.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we build again, and now we reload,""" start="00:16:40.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we see that we get a foo. This is that title,""" start="00:16:46.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the value of that variable in that data structure.""" start="00:16:50.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now, let's get those two properties.""" start="00:16:56.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""How do we get those two properties?""" start="00:17:00.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""The same way, `:ONE:` that we call one, so raw-value,""" start="00:17:03.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we change that for `:ONE`, the other raw-value""" start="00:17:07.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""for `:CUSTOM_ID`, we change the title for `custom-id`,""" start="00:17:11.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and what we want now is for instance,""" start="00:17:19.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""yes, h1 again, and org properties.""" start="00:17:23.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We add the org properties, and let's do a list,""" start="00:17:30.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""another list, with li element, one,""" start="00:17:34.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we want that value, and that value will be""" start="00:17:39.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the value of the variable one.""" start="00:17:43.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We can do that with also custom-id,""" start="00:17:45.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now, in the one that we have to save,""" start="00:17:52.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and in one of our files, not like that,""" start="00:17:56.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we rebuild that, and we see""" start="00:17:59.440" video="mainVideo-one" id="subtitle"]]
+[[!template text="""that we can get those properties.""" start="00:18:03.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This is super cool.""" start="00:18:05.800" video="mainVideo-one" id="subtitle"]]
+[[!template text="""As we are dealing with data,""" start="00:18:07.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we have the information of the whole website,""" start="00:18:09.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we can do whatever we want,""" start="00:18:11.720" video="mainVideo-one" id="subtitle"]]
+[[!template text="""because we have access to that data.""" start="00:18:14.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Let's, for instance, add a date, the date of 2023,""" start="00:18:16.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so I think this is 02, when there is the conference, see,""" start="00:18:23.840" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we can get access to that `one` again,""" start="00:18:28.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""here, so `date`, and we go,""" start="00:18:32.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we change the `:CUSTOM_ID` with the `:DATE`,""" start="00:18:37.955" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and in the list here,""" start="00:18:42.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so we want in the list, this to be the date,""" start="00:18:46.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we build again that,""" start="00:18:53.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we have access to the date.""" start="00:18:56.560" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Really, we can do whatever we want.""" start="00:18:58.800" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Rendering content""" start="00:19:03.200" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""Now, we want the content. So far,""" start="00:19:03.200" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we get the property, but what about the content,""" start="00:19:06.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so h1, and now we put &quot;Org content&quot;,""" start="00:19:11.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and this is going to be something in the variable content,""" start="00:19:17.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we have to add that variable,""" start="00:19:21.360" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so in the let binding, we write our content,""" start="00:19:25.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we are going to have that content from the page-tree.""" start="00:19:28.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""To do that, we use `org-export`,""" start="00:19:30.640" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so we need to export something into HTML,""" start="00:19:33.680" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we export the data with the backend.""" start="00:19:36.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So the data that we want is page-tree,""" start="00:19:37.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""but we don't want the first headline,""" start="00:19:40.240" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so we use `org-element-contents`,""" start="00:19:42.240" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we pass it `page-tree`, so this is that.""" start="00:19:46.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""But for the exported, we need to pass it,""" start="00:19:50.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and also, how do we call that, we call that an Org backend.""" start="00:19:53.120" video="mainVideo-one" id="subtitle"]]
+[[!template text="""So `one-ox` is our backend provided by one.el,""" start="00:20:00.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and the last argument is nil.""" start="00:20:06.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We are almost done. Now with one.org,""" start="00:20:09.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we build the website, and we see that we have an error,""" start="00:20:14.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""it's because this is not a content,""" start="00:20:18.880" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so there.. No, okay,""" start="00:20:22.080" video="mainVideo-one" id="subtitle"]]
+[[!template text="""there was this `org-element-contents`, I think,""" start="00:20:27.040" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and now we build it, and we must see it here.""" start="00:20:32.840" video="mainVideo-one" id="subtitle"]]
+
+[[!template new="1" text="""Rendering CSS""" start="00:20:37.160" video="mainVideo-one" id="subtitle"]]
+
+[[!template text="""So we have the content,""" start="00:20:37.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we have the Org values,""" start="00:20:39.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and last thing that we can do maybe is to put some CSS.""" start="00:20:43.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Let's have a look to `one-default` function.""" start="00:20:48.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""We can see in one.el file that we have a lot of""" start="00:20:51.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""default functions that we can use to take inspiration.""" start="00:20:56.400" video="mainVideo-one" id="subtitle"]]
+[[!template text="""The last thing that we need""" start="00:21:01.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""is to link to the one.css file,""" start="00:21:05.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so we are going to do that `onerc` file.""" start="00:21:08.000" video="mainVideo-one" id="subtitle"]]
+[[!template text="""This is here, so `html` we don't need,""" start="00:21:14.920" video="mainVideo-one" id="subtitle"]]
+[[!template text="""we have that one, we want the head to be here,""" start="00:21:20.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we pass it a class, which is a title,""" start="00:21:26.480" video="mainVideo-one" id="subtitle"]]
+[[!template text="""a div with the class content. We have that.""" start="00:21:37.320" video="mainVideo-one" id="subtitle"]]
+[[!template text="""Now with one.org, we build it again,""" start="00:21:42.240" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we should see the website render with the CSS,""" start="00:21:46.160" video="mainVideo-one" id="subtitle"]]
+[[!template text="""the property, and all the content,""" start="00:21:50.600" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and we've done that just with that Emacs Lisp file,""" start="00:21:56.760" video="mainVideo-one" id="subtitle"]]
+[[!template text="""so this is all I wanted to show you today with one.el,""" start="00:22:01.520" video="mainVideo-one" id="subtitle"]]
+[[!template text="""I hope you enjoyed the talk, and have a nice day,""" start="00:22:08.960" video="mainVideo-one" id="subtitle"]]
+[[!template text="""and a nice conference.""" start="00:22:14.880" video="mainVideo-one" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="one-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: So, will you, when I'm looking at my,""" start="00:00:00.459" video="qanda-one" id="subtitle"]]
+[[!template text="""the other screen, I don't see the chat,""" start="00:00:06.279" video="qanda-one" id="subtitle"]]
+[[!template text="""so maybe someone can tell me.""" start="00:00:08.480" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's fine, don't worry about it,""" start="00:00:11.259" video="qanda-one" id="subtitle"]]
+[[!template text="""and we are live. So hi again everyone.""" start="00:00:12.360" video="qanda-one" id="subtitle"]]
+[[!template text="""Hi Tony, how are you doing?""" start="00:00:15.060" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Really well, and you?""" start="00:00:17.040" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: I am doing fantastically,""" start="00:00:19.440" video="qanda-one" id="subtitle"]]
+[[!template text="""as fantastically as I can be doing,""" start="00:00:21.380" video="qanda-one" id="subtitle"]]
+[[!template text="""having to put out fire in the background""" start="00:00:24.099" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Cool!""" start="00:00:30.140" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: during MaxConf. But I'm doing great! Alright,""" start="00:00:25.840" video="qanda-one" id="subtitle"]]
+[[!template text="""Let me just try to set up everything so that""" start="00:00:31.640" video="qanda-one" id="subtitle"]]
+[[!template text="""I can show the questions and all this.""" start="00:00:34.960" video="qanda-one" id="subtitle"]]
+[[!template text="""Do you mind if I read you the question?""" start="00:00:37.260" video="qanda-one" id="subtitle"]]
+[[!template text="""It might be a little more interactive and""" start="00:00:38.600" video="qanda-one" id="subtitle"]]
+[[!template text="""this way you can focus on either presenting""" start="00:00:39.960" video="qanda-one" id="subtitle"]]
+[[!template text="""stuff on your end.""" start="00:00:42.800" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, tell me what are the questions and what""" start="00:00:44.059" video="qanda-one" id="subtitle"]]
+[[!template text="""to do and I will do that.""" start="00:00:48.680" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay great so what I'll do,""" start="00:00:53.420" video="qanda-one" id="subtitle"]]
+[[!template text="""I'll invite people to go to the pad and ask""" start="00:00:56.400" video="qanda-one" id="subtitle"]]
+[[!template text="""questions because it was a very interesting""" start="00:00:58.580" video="qanda-one" id="subtitle"]]
+[[!template text="""talk and I'm sure you have plenty of""" start="00:01:00.060" video="qanda-one" id="subtitle"]]
+[[!template text="""questions but I only see 1 right now.""" start="00:01:01.480" video="qanda-one" id="subtitle"]]
+[[!template text="""Do we have people on BigBlueButton?""" start="00:01:03.460" video="qanda-one" id="subtitle"]]
+[[!template text="""Yes we do have people joining right now.""" start="00:01:05.640" video="qanda-one" id="subtitle"]]
+[[!template text="""So reading the first question then.""" start="00:01:11.000" video="qanda-one" id="subtitle"]]
+[[!template text="""So what's the main motivation for this new""" start="00:01:12.620" video="qanda-one" id="subtitle"]]
+[[!template text="""package? I used to use org.yugo""" start="00:01:14.380" video="qanda-one" id="subtitle"]]
+[[!template text="""and use GitHub Actions to build a blog.""" start="00:01:16.280" video="qanda-one" id="subtitle"]]
+[[!template text="""So can you go in a little bit of details on""" start="00:01:18.340" video="qanda-one" id="subtitle"]]
+[[!template text="""this?""" start="00:01:20.600" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, OK. So the main goal,""" start="00:01:21.540" video="qanda-one" id="subtitle"]]
+[[!template text="""I didn't want to have,""" start="00:01:30.900" video="qanda-one" id="subtitle"]]
+[[!template text="""to, I will push that here.""" start="00:01:33.805" video="qanda-one" id="subtitle"]]
+[[!template text="""So my goal was to not have to rely on another""" start="00:01:38.040" video="qanda-one" id="subtitle"]]
+[[!template text="""static site generator to produce my website.""" start="00:01:45.060" video="qanda-one" id="subtitle"]]
+[[!template text="""So if you use a Yugo, that means that you""" start="00:01:49.920" video="qanda-one" id="subtitle"]]
+[[!template text="""take, so this is the website that we've seen""" start="00:01:54.780" video="qanda-one" id="subtitle"]]
+[[!template text="""in the talk, this 1. And I didn't want to""" start="00:02:01.960" video="qanda-one" id="subtitle"]]
+[[!template text="""have to use a piece of software in Emacs that""" start="00:02:07.880" video="qanda-one" id="subtitle"]]
+[[!template text="""translate to some other files to be feed to""" start="00:02:13.320" video="qanda-one" id="subtitle"]]
+[[!template text="""another statistic generator because this way""" start="00:02:16.960" video="qanda-one" id="subtitle"]]
+[[!template text="""I have 2 things to understand.""" start="00:02:20.680" video="qanda-one" id="subtitle"]]
+[[!template text="""I have to understand how that software""" start="00:02:23.680" video="qanda-one" id="subtitle"]]
+[[!template text="""translates my files into the other files and""" start="00:02:26.780" video="qanda-one" id="subtitle"]]
+[[!template text="""then I have to understand how Hugo works.""" start="00:02:32.440" video="qanda-one" id="subtitle"]]
+[[!template text="""So if I want to change something I need to""" start="00:02:37.060" video="qanda-one" id="subtitle"]]
+[[!template text="""understand Hugo. So at some point I need to""" start="00:02:39.480" video="qanda-one" id="subtitle"]]
+[[!template text="""work with Hugo. So if I need to work with""" start="00:02:43.660" video="qanda-one" id="subtitle"]]
+[[!template text="""Hugo, maybe I can work with it directly.""" start="00:02:46.200" video="qanda-one" id="subtitle"]]
+[[!template text="""And I wanted also something that was purely""" start="00:02:51.800" video="qanda-one" id="subtitle"]]
+[[!template text="""Emacs-centric and working on it,""" start="00:02:56.960" video="qanda-one" id="subtitle"]]
+[[!template text="""I found out about that solution.""" start="00:03:03.700" video="qanda-one" id="subtitle"]]
+[[!template text="""And I wanted also something that we have only""" start="00:03:05.600" video="qanda-one" id="subtitle"]]
+[[!template text="""1 file that have all the entries.""" start="00:03:11.780" video="qanda-one" id="subtitle"]]
+[[!template text="""And when I thought about that,""" start="00:03:15.560" video="qanda-one" id="subtitle"]]
+[[!template text="""finally I found a way that maybe we can just""" start="00:03:19.140" video="qanda-one" id="subtitle"]]
+[[!template text="""use 1 or 3 to pass it the information of the""" start="00:03:22.720" video="qanda-one" id="subtitle"]]
+[[!template text="""website. And if you look,""" start="00:03:30.360" video="qanda-one" id="subtitle"]]
+[[!template text="""If you just try to work with Gatsby,""" start="00:03:33.405" video="qanda-one" id="subtitle"]]
+[[!template text="""Ugo or all those websites,""" start="00:03:37.920" video="qanda-one" id="subtitle"]]
+[[!template text="""when you start, you download 10,""" start="00:03:40.940" video="qanda-one" id="subtitle"]]
+[[!template text="""20, 30, thousand for hundreds of dependencies""" start="00:03:46.240" video="qanda-one" id="subtitle"]]
+[[!template text="""to do. Just to me, I'm a small guy and I just""" start="00:03:53.440" video="qanda-one" id="subtitle"]]
+[[!template text="""want to have some documentation on the""" start="00:03:59.620" video="qanda-one" id="subtitle"]]
+[[!template text="""website like this 1. It just,""" start="00:04:02.720" video="qanda-one" id="subtitle"]]
+[[!template text="""it shouldn't need that much of a dependency.""" start="00:04:05.460" video="qanda-one" id="subtitle"]]
+[[!template text="""And if you look at the website,""" start="00:04:09.160" video="qanda-one" id="subtitle"]]
+[[!template text="""if you want to hack on something,""" start="00:04:11.460" video="qanda-one" id="subtitle"]]
+[[!template text="""you need a lot of to understand how the""" start="00:04:13.540" video="qanda-one" id="subtitle"]]
+[[!template text="""config files work. So you need to,""" start="00:04:17.320" video="qanda-one" id="subtitle"]]
+[[!template text="""how does it work this config file?""" start="00:04:19.459" video="qanda-one" id="subtitle"]]
+[[!template text="""But I want, it's always happened that you""" start="00:04:21.060" video="qanda-one" id="subtitle"]]
+[[!template text="""want to add 1 thing or to add that things.""" start="00:04:23.320" video="qanda-one" id="subtitle"]]
+[[!template text="""What do you have to do?""" start="00:04:26.420" video="qanda-one" id="subtitle"]]
+[[!template text="""You have to, you can't because it's not""" start="00:04:27.780" video="qanda-one" id="subtitle"]]
+[[!template text="""offered by the configuration file.""" start="00:04:30.340" video="qanda-one" id="subtitle"]]
+[[!template text="""With that solution that I built for me first,""" start="00:04:34.380" video="qanda-one" id="subtitle"]]
+[[!template text="""I don't care if I need something else.""" start="00:04:38.920" video="qanda-one" id="subtitle"]]
+[[!template text="""I just have to go in that file.""" start="00:04:42.020" video="qanda-one" id="subtitle"]]
+[[!template text="""It doesn't need to be that file because as I""" start="00:04:49.840" video="qanda-one" id="subtitle"]]
+[[!template text="""am in Emacs if the render functions are""" start="00:04:52.440" video="qanda-one" id="subtitle"]]
+[[!template text="""already evaluated they exist and I can use it""" start="00:04:56.120" video="qanda-one" id="subtitle"]]
+[[!template text="""but I just have to change that file so if I""" start="00:04:58.940" video="qanda-one" id="subtitle"]]
+[[!template text="""want something more I just I go there let's""" start="00:05:02.520" video="qanda-one" id="subtitle"]]
+[[!template text="""say so does it answer the question or I""" start="00:05:07.860" video="qanda-one" id="subtitle"]]
+[[!template text="""continue to show something?""" start="00:05:10.920" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's up to you, I think you are answering the""" start="00:05:14.320" video="qanda-one" id="subtitle"]]
+[[!template text="""question. I think you veered off a little bit""" start="00:05:16.060" video="qanda-one" id="subtitle"]]
+[[!template text="""from just why not you go but then you kind of""" start="00:05:17.600" video="qanda-one" id="subtitle"]]
+[[!template text="""redid part of your presentation to justify""" start="00:05:19.940" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: own system. But stop me if I go because I""" start="00:05:23.480" video="qanda-one" id="subtitle"]]
+[[!template text="""used to want to show more things than what""" start="00:05:26.360" video="qanda-one" id="subtitle"]]
+[[!template text="""there is in the question.""" start="00:05:29.920" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: why you had to roll your Yeah that's fine.""" start="00:05:21.940" video="qanda-one" id="subtitle"]]
+[[!template text="""Just for people who do not know,""" start="00:05:32.080" video="qanda-one" id="subtitle"]]
+[[!template text="""we tend to restrict speakers when they submit""" start="00:05:33.340" video="qanda-one" id="subtitle"]]
+[[!template text="""a presentation. We tell them,""" start="00:05:35.500" video="qanda-one" id="subtitle"]]
+[[!template text="""oh, you can do a flash talk in 10 minutes or""" start="00:05:36.620" video="qanda-one" id="subtitle"]]
+[[!template text="""a bit of a longer talk in 20 minutes or 40""" start="00:05:39.000" video="qanda-one" id="subtitle"]]
+[[!template text="""minutes. And usually, because we have a lot""" start="00:05:41.100" video="qanda-one" id="subtitle"]]
+[[!template text="""of speakers, we have to kind of coerce people""" start="00:05:43.180" video="qanda-one" id="subtitle"]]
+[[!template text="""into going to shorter formats and sometimes""" start="00:05:46.260" video="qanda-one" id="subtitle"]]
+[[!template text="""it's a lot about killing your darlings.""" start="00:05:48.340" video="qanda-one" id="subtitle"]]
+[[!template text="""But just to reassure you,""" start="00:05:51.100" video="qanda-one" id="subtitle"]]
+[[!template text="""we're just about to go on a launch break in""" start="00:05:52.360" video="qanda-one" id="subtitle"]]
+[[!template text="""about 10 minutes, so you've got the full 10""" start="00:05:54.560" video="qanda-one" id="subtitle"]]
+[[!template text="""minutes to use however you want,""" start="00:05:56.840" video="qanda-one" id="subtitle"]]
+[[!template text="""but I'll just tell you,""" start="00:05:58.320" video="qanda-one" id="subtitle"]]
+[[!template text="""you have a lot of questions so you might want""" start="00:05:59.340" video="qanda-one" id="subtitle"]]
+[[!template text="""to perhaps move on to the next 1 as soon as""" start="00:06:01.080" video="qanda-one" id="subtitle"]]
+[[!template text="""you can.""" start="00:06:03.400" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes okay so tell me the next 1 and if people""" start="00:06:04.540" video="qanda-one" id="subtitle"]]
+[[!template text="""want to stay more I can also stay more.""" start="00:06:08.940" video="qanda-one" id="subtitle"]]
+[[!template text="""Right. I understand if people need to go to""" start="00:06:14.240" video="qanda-one" id="subtitle"]]
+[[!template text="""lunch, they can, but people that want to""" start="00:06:17.220" video="qanda-one" id="subtitle"]]
+[[!template text="""stay, if it's possible,""" start="00:06:19.020" video="qanda-one" id="subtitle"]]
+[[!template text="""I'm here to answer any question.""" start="00:06:20.340" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Splendid. All right, so moving on to the next""" start="00:06:24.060" video="qanda-one" id="subtitle"]]
+[[!template text="""question. Is it possible to include the""" start="00:06:26.240" video="qanda-one" id="subtitle"]]
+[[!template text="""include org tag to add content from other""" start="00:06:29.180" video="qanda-one" id="subtitle"]]
+[[!template text="""files. Do you see what I'm talking about?""" start="00:06:31.560" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, so it's not included.""" start="00:06:35.200" video="qanda-one" id="subtitle"]]
+[[!template text="""So the idea was really to have only 1 file""" start="00:06:39.380" video="qanda-one" id="subtitle"]]
+[[!template text="""and have no options. So if you look at the,""" start="00:06:45.720" video="qanda-one" id="subtitle"]]
+[[!template text="""let's go into, so the answer is no,""" start="00:06:49.760" video="qanda-one" id="subtitle"]]
+[[!template text="""but if you want, you can write the code that""" start="00:06:52.240" video="qanda-one" id="subtitle"]]
+[[!template text="""do it. But let's just go into one.n,""" start="00:06:56.320" video="qanda-one" id="subtitle"]]
+[[!template text="""so that files. So this is the files where you""" start="00:07:02.280" video="qanda-one" id="subtitle"]]
+[[!template text="""have everything, and there is only 2""" start="00:07:07.900" video="qanda-one" id="subtitle"]]
+[[!template text="""dependencies. Maybe we can see that at the""" start="00:07:11.440" video="qanda-one" id="subtitle"]]
+[[!template text="""top so which are htmlis on the Jack and the""" start="00:07:13.980" video="qanda-one" id="subtitle"]]
+[[!template text="""other are Augment. So for me,""" start="00:07:18.080" video="qanda-one" id="subtitle"]]
+[[!template text="""they're not dependencies because they come""" start="00:07:19.840" video="qanda-one" id="subtitle"]]
+[[!template text="""with Emacs. But the question is,""" start="00:07:21.820" video="qanda-one" id="subtitle"]]
+[[!template text="""can I add other things?""" start="00:07:25.440" video="qanda-one" id="subtitle"]]
+[[!template text="""If you look at that, you don't see the orange""" start="00:07:27.440" video="qanda-one" id="subtitle"]]
+[[!template text="""color which are viable,""" start="00:07:31.640" video="qanda-one" id="subtitle"]]
+[[!template text="""it's because I didn't want any configuration""" start="00:07:33.600" video="qanda-one" id="subtitle"]]
+[[!template text="""nor option. So there is no,""" start="00:07:38.440" video="qanda-one" id="subtitle"]]
+[[!template text="""if you think about, you are used to use org""" start="00:07:41.960" video="qanda-one" id="subtitle"]]
+[[!template text="""export normally and to use all the options""" start="00:07:45.660" video="qanda-one" id="subtitle"]]
+[[!template text="""that are possible on all the things they are""" start="00:07:49.540" video="qanda-one" id="subtitle"]]
+[[!template text="""not included. You can add them because when""" start="00:07:52.000" video="qanda-one" id="subtitle"]]
+[[!template text="""you are in a render function.""" start="00:08:04.900" video="qanda-one" id="subtitle"]]
+[[!template text="""So this is the render function that I showed""" start="00:08:07.060" video="qanda-one" id="subtitle"]]
+[[!template text="""in the theme. You have a page tree so you""" start="00:08:08.940" video="qanda-one" id="subtitle"]]
+[[!template text="""have the information but in the global I""" start="00:08:11.980" video="qanda-one" id="subtitle"]]
+[[!template text="""think, yes in global, you can pass anything""" start="00:08:18.358" video="qanda-one" id="subtitle"]]
+[[!template text="""you want and if you want you can pass the""" start="00:08:21.020" video="qanda-one" id="subtitle"]]
+[[!template text="""parse tree of the whole file.""" start="00:08:24.720" video="qanda-one" id="subtitle"]]
+[[!template text="""So if you pass the parse tree of the whole""" start="00:08:28.080" video="qanda-one" id="subtitle"]]
+[[!template text="""file, what you can do is that you can get it""" start="00:08:30.840" video="qanda-one" id="subtitle"]]
+[[!template text="""there. So I don't have it right now,""" start="00:08:35.400" video="qanda-one" id="subtitle"]]
+[[!template text="""but you might have your include stuff and you""" start="00:08:38.659" video="qanda-one" id="subtitle"]]
+[[!template text="""get it with a node property that target""" start="00:08:43.980" video="qanda-one" id="subtitle"]]
+[[!template text="""something in the global variable.""" start="00:08:48.580" video="qanda-one" id="subtitle"]]
+[[!template text="""So if we look just to be short but those 3""" start="00:08:50.940" video="qanda-one" id="subtitle"]]
+[[!template text="""parts, the first 1 is page tree.""" start="00:08:55.320" video="qanda-one" id="subtitle"]]
+[[!template text="""So it's this page that you are on the right,""" start="00:08:57.180" video="qanda-one" id="subtitle"]]
+[[!template text="""pages are a list of all the pages and global""" start="00:08:59.160" video="qanda-one" id="subtitle"]]
+[[!template text="""is something that you can set and reset once""" start="00:09:02.840" video="qanda-one" id="subtitle"]]
+[[!template text="""and you have the whole part street.""" start="00:09:06.580" video="qanda-one" id="subtitle"]]
+[[!template text="""So anything that you add in your op-files""" start="00:09:10.840" video="qanda-one" id="subtitle"]]
+[[!template text="""could go in global if you want,""" start="00:09:15.040" video="qanda-one" id="subtitle"]]
+[[!template text="""but it's not included.""" start="00:09:16.840" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right. I think that's also answering the""" start="00:09:20.600" video="qanda-one" id="subtitle"]]
+[[!template text="""question. Can this generate a single file""" start="00:09:23.140" video="qanda-one" id="subtitle"]]
+[[!template text="""from different sources like blog.org,""" start="00:09:24.840" video="qanda-one" id="subtitle"]]
+[[!template text="""videos.org? I think you've just answered""" start="00:09:26.880" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, I think yes.""" start="00:09:30.040" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: this, right? Right. Okay.""" start="00:09:28.820" video="qanda-one" id="subtitle"]]
+[[!template text="""So moving on to the other question.""" start="00:09:32.660" video="qanda-one" id="subtitle"]]
+[[!template text="""Do you have pre-made templates already along""" start="00:09:34.660" video="qanda-one" id="subtitle"]]
+[[!template text="""with the 1.el package?""" start="00:09:37.200" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: So, yes and no. So, The answer is if we go to""" start="00:09:41.680" video="qanda-one" id="subtitle"]]
+[[!template text="""1.n, so this file, so the first are blah,""" start="00:09:49.960" video="qanda-one" id="subtitle"]]
+[[!template text="""blah, blah. How it works,""" start="00:09:55.520" video="qanda-one" id="subtitle"]]
+[[!template text="""so, okay, so you have the 1-hocs,""" start="00:10:01.780" video="qanda-one" id="subtitle"]]
+[[!template text="""which is what can translate the org parse""" start="00:10:07.200" video="qanda-one" id="subtitle"]]
+[[!template text="""tree into HTML. So this is for the content of""" start="00:10:11.980" video="qanda-one" id="subtitle"]]
+[[!template text="""each page. So this is very useful.""" start="00:10:16.260" video="qanda-one" id="subtitle"]]
+[[!template text="""Then we have a bunch of functions that help""" start="00:10:18.480" video="qanda-one" id="subtitle"]]
+[[!template text="""to render the function,""" start="00:10:22.660" video="qanda-one" id="subtitle"]]
+[[!template text="""each page. And you have a bunch of...""" start="00:10:26.040" video="qanda-one" id="subtitle"]]
+[[!template text="""Everything that starts with dash default is a""" start="00:10:31.360" video="qanda-one" id="subtitle"]]
+[[!template text="""render function. So there's no template,""" start="00:10:33.920" video="qanda-one" id="subtitle"]]
+[[!template text="""but each page that if you want,""" start="00:10:37.480" video="qanda-one" id="subtitle"]]
+[[!template text="""so that 1, the home, you can use 1 default""" start="00:10:42.240" video="qanda-one" id="subtitle"]]
+[[!template text="""home. So, if you want to list the page,""" start="00:10:46.400" video="qanda-one" id="subtitle"]]
+[[!template text="""you have that 1. For a page with no table of""" start="00:10:48.740" video="qanda-one" id="subtitle"]]
+[[!template text="""content, you use that thing.""" start="00:10:53.220" video="qanda-one" id="subtitle"]]
+[[!template text="""And if you go back to be short,""" start="00:10:55.840" video="qanda-one" id="subtitle"]]
+[[!template text="""if we go there, I put this like that.""" start="00:10:58.260" video="qanda-one" id="subtitle"]]
+[[!template text="""So this that we see here is the first inline""" start="00:11:03.900" video="qanda-one" id="subtitle"]]
+[[!template text="""of 1.org. By the way, it doesn't have to be""" start="00:11:09.960" video="qanda-one" id="subtitle"]]
+[[!template text="""called 1.org. It's just as you want,""" start="00:11:14.440" video="qanda-one" id="subtitle"]]
+[[!template text="""but maybe we can call it.""" start="00:11:17.160" video="qanda-one" id="subtitle"]]
+[[!template text="""So default, what was the other 1?""" start="00:11:20.740" video="qanda-one" id="subtitle"]]
+[[!template text="""Default with sidebar. Or is it default with""" start="00:11:23.220" video="qanda-one" id="subtitle"]]
+[[!template text="""sidebar or default? Yes,""" start="00:11:28.280" video="qanda-one" id="subtitle"]]
+[[!template text="""with sidebar. Sidebar,""" start="00:11:30.080" video="qanda-one" id="subtitle"]]
+[[!template text="""if it's worked correctly.""" start="00:11:36.400" video="qanda-one" id="subtitle"]]
+[[!template text="""Okay, so, okay, so I don't know why the CSS""" start="00:11:39.140" video="qanda-one" id="subtitle"]]
+[[!template text="""is not working correctly.""" start="00:11:46.760" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's okay. It wouldn't be a live demo without""" start="00:11:50.740" video="qanda-one" id="subtitle"]]
+[[!template text="""problems occurring at some point.""" start="00:11:53.860" video="qanda-one" id="subtitle"]]
+[[!template text="""Okay.""" start="00:11:55.440" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: But so maybe we can use this 1.""" start="00:11:56.980" video="qanda-one" id="subtitle"]]
+[[!template text="""Or we stuck. So we are going to use this 1,""" start="00:12:02.940" video="qanda-one" id="subtitle"]]
+[[!template text="""we've talked this 1, but maybe better in this""" start="00:12:06.980" video="qanda-one" id="subtitle"]]
+[[!template text="""1 that add something. So we build it again""" start="00:12:16.020" video="qanda-one" id="subtitle"]]
+[[!template text="""and now, oh, come on. We have it and we have""" start="00:12:20.340" video="qanda-one" id="subtitle"]]
+[[!template text="""the, sorry, if we have just default,""" start="00:12:32.180" video="qanda-one" id="subtitle"]]
+[[!template text="""we rebuild and now this is the default layer""" start="00:12:37.820" video="qanda-one" id="subtitle"]]
+[[!template text="""that if we do with table of content,""" start="00:12:41.120" video="qanda-one" id="subtitle"]]
+[[!template text="""you have it, you have the default content.""" start="00:12:46.060" video="qanda-one" id="subtitle"]]
+[[!template text="""So how to change, and they are not template.""" start="00:12:48.620" video="qanda-one" id="subtitle"]]
+[[!template text="""They are render functions that takes your""" start="00:12:53.940" video="qanda-one" id="subtitle"]]
+[[!template text="""page as a tree and render HTML string.""" start="00:13:00.300" video="qanda-one" id="subtitle"]]
+[[!template text="""So you can build any function that you want.""" start="00:13:06.260" video="qanda-one" id="subtitle"]]
+[[!template text="""So yes, I think that answers the question.""" start="00:13:10.600" video="qanda-one" id="subtitle"]]
+[[!template text="""There is no template like in other systems.""" start="00:13:12.280" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool, that makes sense.""" start="00:13:17.780" video="qanda-one" id="subtitle"]]
+[[!template text="""We have 2 more questions and then we'll need""" start="00:13:19.020" video="qanda-one" id="subtitle"]]
+[[!template text="""to go on a lunch break.""" start="00:13:21.000" video="qanda-one" id="subtitle"]]
+[[!template text="""I don't see anyone join the room.""" start="00:13:22.200" video="qanda-one" id="subtitle"]]
+[[!template text="""Remember, Tony has said that he would be""" start="00:13:23.740" video="qanda-one" id="subtitle"]]
+[[!template text="""willing to answer more questions during the""" start="00:13:25.640" video="qanda-one" id="subtitle"]]
+[[!template text="""lunch break, perhaps because it's not lunch""" start="00:13:27.500" video="qanda-one" id="subtitle"]]
+[[!template text="""break for you. Are you in Europe right now?""" start="00:13:29.120" video="qanda-one" id="subtitle"]]
+[[!template text="""So that's why for us, also for me it's very""" start="00:13:32.360" video="qanda-one" id="subtitle"]]
+[[!template text="""dark, but it's not lunch break for us,""" start="00:13:34.600" video="qanda-one" id="subtitle"]]
+[[!template text="""it's going to be dinner break soon actually.""" start="00:13:37.660" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes. Yes, exactly, so I'm just,""" start="00:13:31.280" video="qanda-one" id="subtitle"]]
+[[!template text="""I'm okay.""" start="00:13:44.020" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, Okay, so moving on to 1 of the last 2""" start="00:13:45.580" video="qanda-one" id="subtitle"]]
+[[!template text="""questions. What additional features are there""" start="00:13:49.200" video="qanda-one" id="subtitle"]]
+[[!template text="""that you would like to add to 1.EL""" start="00:13:51.680" video="qanda-one" id="subtitle"]]
+[[!template text="""in the future?""" start="00:13:53.960" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, there's only 1, which is a full text""" start="00:13:56.120" video="qanda-one" id="subtitle"]]
+[[!template text="""search done in a simple way.""" start="00:14:00.560" video="qanda-one" id="subtitle"]]
+[[!template text="""So I don't meet what simple way means,""" start="00:14:06.540" video="qanda-one" id="subtitle"]]
+[[!template text="""but when I see something complicated,""" start="00:14:10.320" video="qanda-one" id="subtitle"]]
+[[!template text="""it doesn't enter in 1 to me.""" start="00:14:12.620" video="qanda-one" id="subtitle"]]
+[[!template text="""So, but really, if you see that,""" start="00:14:15.400" video="qanda-one" id="subtitle"]]
+[[!template text="""I would like to have some way.""" start="00:14:19.120" video="qanda-one" id="subtitle"]]
+[[!template text="""So, this is the documentation and I would""" start="00:14:22.300" video="qanda-one" id="subtitle"]]
+[[!template text="""like to have some way to just have another""" start="00:14:25.080" video="qanda-one" id="subtitle"]]
+[[!template text="""function because we are not talking about""" start="00:14:27.500" video="qanda-one" id="subtitle"]]
+[[!template text="""those websites on the 1.L.""" start="00:14:31.300" video="qanda-one" id="subtitle"]]
+[[!template text="""It's not made for a big company or of your""" start="00:14:34.440" video="qanda-one" id="subtitle"]]
+[[!template text="""things, it's just for a random guy that have""" start="00:14:39.520" video="qanda-one" id="subtitle"]]
+[[!template text="""a blog or a few blogs and If you are a great""" start="00:14:42.440" video="qanda-one" id="subtitle"]]
+[[!template text="""blogger, maybe you are going to write 100 or""" start="00:14:46.200" video="qanda-one" id="subtitle"]]
+[[!template text="""200 or 300 pages in many years.""" start="00:14:53.040" video="qanda-one" id="subtitle"]]
+[[!template text="""So this enter in that category.""" start="00:14:57.240" video="qanda-one" id="subtitle"]]
+[[!template text="""So it's small. So I think it can,""" start="00:15:00.060" video="qanda-one" id="subtitle"]]
+[[!template text="""we could find a way to make a full text""" start="00:15:04.080" video="qanda-one" id="subtitle"]]
+[[!template text="""search. And that is simple.""" start="00:15:07.580" video="qanda-one" id="subtitle"]]
+[[!template text="""I don't need to, to go with,""" start="00:15:10.240" video="qanda-one" id="subtitle"]]
+[[!template text="""with solution like Algolia that is,""" start="00:15:13.520" video="qanda-one" id="subtitle"]]
+[[!template text="""that works super fine.""" start="00:15:16.620" video="qanda-one" id="subtitle"]]
+[[!template text="""But this is something that I don't control""" start="00:15:17.900" video="qanda-one" id="subtitle"]]
+[[!template text="""and I have to give them the data and I'm not""" start="00:15:21.600" video="qanda-one" id="subtitle"]]
+[[!template text="""against that but it's just that I think with""" start="00:15:26.200" video="qanda-one" id="subtitle"]]
+[[!template text="""a bit of work something can be done with full""" start="00:15:29.320" video="qanda-one" id="subtitle"]]
+[[!template text="""textile. But this is the only thing that I""" start="00:15:32.800" video="qanda-one" id="subtitle"]]
+[[!template text="""would like to add.""" start="00:15:35.600" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Very clear answer. Next question.""" start="00:15:38.720" video="qanda-one" id="subtitle"]]
+[[!template text="""Can you create navbars on a website and fancy""" start="00:15:41.580" video="qanda-one" id="subtitle"]]
+[[!template text="""things like carousels using 1.EL?""" start="00:15:44.380" video="qanda-one" id="subtitle"]]
+[[!template text="""Now carousels is just,""" start="00:15:46.800" video="qanda-one" id="subtitle"]]
+[[!template text="""I think, a fancy way to display pictures and""" start="00:15:48.260" video="qanda-one" id="subtitle"]]
+[[!template text="""please correct me whoever asked this""" start="00:15:51.820" video="qanda-one" id="subtitle"]]
+[[!template text="""question. Otherwise I see you taking notes""" start="00:15:53.800" video="qanda-one" id="subtitle"]]
+[[!template text="""for the answers, thank you very much.""" start="00:15:55.440" video="qanda-one" id="subtitle"]]
+[[!template text="""But if you could specify maybe carousels so""" start="00:15:56.820" video="qanda-one" id="subtitle"]]
+[[!template text="""that Tony and I may get a better idea.""" start="00:15:58.740" video="qanda-one" id="subtitle"]]
+[[!template text="""But still, first part of the question,""" start="00:16:01.920" video="qanda-one" id="subtitle"]]
+[[!template text="""can you create navbars on a website?""" start="00:16:03.340" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes. So if, for instance,""" start="00:16:05.980" video="qanda-one" id="subtitle"]]
+[[!template text="""you see there, to me, it's not a,""" start="00:16:10.900" video="qanda-one" id="subtitle"]]
+[[!template text="""it's a navbar. So you already have it.""" start="00:16:14.600" video="qanda-one" id="subtitle"]]
+[[!template text="""I didn't show that in the talk,""" start="00:16:19.860" video="qanda-one" id="subtitle"]]
+[[!template text="""but the CSS for the default function that""" start="00:16:23.080" video="qanda-one" id="subtitle"]]
+[[!template text="""works is responsive. So,""" start="00:16:27.440" video="qanda-one" id="subtitle"]]
+[[!template text="""out of the box, if you are using something,""" start="00:16:31.720" video="qanda-one" id="subtitle"]]
+[[!template text="""you will have an app bar done for you with""" start="00:16:34.600" video="qanda-one" id="subtitle"]]
+[[!template text="""all the pages that you have.""" start="00:16:37.540" video="qanda-one" id="subtitle"]]
+[[!template text="""So, if we go to install,""" start="00:16:38.680" video="qanda-one" id="subtitle"]]
+[[!template text="""we have that. And if we no longer have that,""" start="00:16:40.920" video="qanda-one" id="subtitle"]]
+[[!template text="""we have that sidebar there.""" start="00:16:44.900" video="qanda-one" id="subtitle"]]
+[[!template text="""And how it's done. So,""" start="00:16:50.220" video="qanda-one" id="subtitle"]]
+[[!template text="""the same way. I like simple fields that are""" start="00:16:52.660" video="qanda-one" id="subtitle"]]
+[[!template text="""flexible and I didn't want configuration""" start="00:16:56.380" video="qanda-one" id="subtitle"]]
+[[!template text="""because if you want to write the code to""" start="00:16:58.860" video="qanda-one" id="subtitle"]]
+[[!template text="""change something you just have to write code.""" start="00:17:01.280" video="qanda-one" id="subtitle"]]
+[[!template text="""So any function, render function,""" start="00:17:03.480" video="qanda-one" id="subtitle"]]
+[[!template text="""is yours. So you can do whatever you want and""" start="00:17:05.859" video="qanda-one" id="subtitle"]]
+[[!template text="""you enter the html that you want to render.""" start="00:17:08.760" video="qanda-one" id="subtitle"]]
+[[!template text="""So let's see how do we get that navigation""" start="00:17:11.520" video="qanda-one" id="subtitle"]]
+[[!template text="""bar that we have when we do that this is a""" start="00:17:17.920" video="qanda-one" id="subtitle"]]
+[[!template text="""CSS stuff. But when we click,""" start="00:17:20.920" video="qanda-one" id="subtitle"]]
+[[!template text="""this is a JS stuff that,""" start="00:17:23.099" video="qanda-one" id="subtitle"]]
+[[!template text="""so let's go to one.l And maybe this is a""" start="00:17:27.040" video="qanda-one" id="subtitle"]]
+[[!template text="""sidebar. Why that function because,""" start="00:17:32.320" video="qanda-one" id="subtitle"]]
+[[!template text="""okay. So when that function,""" start="00:17:36.300" video="qanda-one" id="subtitle"]]
+[[!template text="""so 1 default sidebar is 1 that is used to do""" start="00:17:40.680" video="qanda-one" id="subtitle"]]
+[[!template text="""some of the things at some point,""" start="00:17:45.340" video="qanda-one" id="subtitle"]]
+[[!template text="""what we return is a JackHTML that take a data""" start="00:17:47.120" video="qanda-one" id="subtitle"]]
+[[!template text="""structure and return a string.""" start="00:17:52.120" video="qanda-one" id="subtitle"]]
+[[!template text="""So this is your HTML. So you can see at the""" start="00:17:54.340" video="qanda-one" id="subtitle"]]
+[[!template text="""top you have the end, then you have the body,""" start="00:17:57.280" video="qanda-one" id="subtitle"]]
+[[!template text="""and if we go at the end we can add a script""" start="00:18:01.120" video="qanda-one" id="subtitle"]]
+[[!template text="""thing. So what we've seen with the sidebar""" start="00:18:06.080" video="qanda-one" id="subtitle"]]
+[[!template text="""it's just that much line of JavaScript.""" start="00:18:08.920" video="qanda-one" id="subtitle"]]
+[[!template text="""So this is the only JavaScript that there is""" start="00:18:11.920" video="qanda-one" id="subtitle"]]
+[[!template text="""to get what we have here when we do that.""" start="00:18:17.440" video="qanda-one" id="subtitle"]]
+[[!template text="""So you can add whatever you want.""" start="00:18:25.360" video="qanda-one" id="subtitle"]]
+[[!template text="""It's code and you're the master of that code.""" start="00:18:29.500" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Splendid, great. So to specify the carousel""" start="00:18:35.280" video="qanda-one" id="subtitle"]]
+[[!template text="""stuff that we mentioned before,""" start="00:18:38.800" video="qanda-one" id="subtitle"]]
+[[!template text="""it's pictures rolling or sliding from 1 to""" start="00:18:39.860" video="qanda-one" id="subtitle"]]
+[[!template text="""the other. It's kind of like having a""" start="00:18:42.520" video="qanda-one" id="subtitle"]]
+[[!template text="""gallery, imagine a fancy dynamic gallery""" start="00:18:44.620" video="qanda-one" id="subtitle"]]
+[[!template text="""where you can scroll pictures.""" start="00:18:47.540" video="qanda-one" id="subtitle"]]
+[[!template text="""Do you see what I'm talking about?""" start="00:18:48.740" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, so that things would just be I think""" start="00:18:50.380" video="qanda-one" id="subtitle"]]
+[[!template text="""some javascript added somewhere and I can""" start="00:18:53.620" video="qanda-one" id="subtitle"]]
+[[!template text="""show you another website.""" start="00:18:57.620" video="qanda-one" id="subtitle"]]
+[[!template text="""So for instance if we go because there are""" start="00:18:59.440" video="qanda-one" id="subtitle"]]
+[[!template text="""not all the data of the website are not all""" start="00:19:04.200" video="qanda-one" id="subtitle"]]
+[[!template text="""public, but the website they are.""" start="00:19:08.160" video="qanda-one" id="subtitle"]]
+[[!template text="""So for instance, a mini-buffer,""" start="00:19:10.140" video="qanda-one" id="subtitle"]]
+[[!template text="""it's not a carousel, but at the home page,""" start="00:19:14.480" video="qanda-one" id="subtitle"]]
+[[!template text="""we can do whatever we want.""" start="00:19:19.140" video="qanda-one" id="subtitle"]]
+[[!template text="""Still those pages, still,""" start="00:19:22.660" video="qanda-one" id="subtitle"]]
+[[!template text="""this is only 1 file for each page.""" start="00:19:24.560" video="qanda-one" id="subtitle"]]
+[[!template text="""So if we click, we can get those things.""" start="00:19:28.980" video="qanda-one" id="subtitle"]]
+[[!template text="""It's just that when we,""" start="00:19:31.720" video="qanda-one" id="subtitle"]]
+[[!template text="""for the home page for instance,""" start="00:19:33.420" video="qanda-one" id="subtitle"]]
+[[!template text="""when we go back on that home page,""" start="00:19:35.860" video="qanda-one" id="subtitle"]]
+[[!template text="""we have the list at that point.""" start="00:19:38.160" video="qanda-one" id="subtitle"]]
+[[!template text="""So let's go back to that function that we're,""" start="00:19:40.580" video="qanda-one" id="subtitle"]]
+[[!template text="""so not that 1, maybe the 1,""" start="00:19:45.540" video="qanda-one" id="subtitle"]]
+[[!template text="""1 different, it's better because that 1 is""" start="00:19:47.740" video="qanda-one" id="subtitle"]]
+[[!template text="""simpler. So almost nothing happened.""" start="00:19:50.760" video="qanda-one" id="subtitle"]]
+[[!template text="""We have the list of the pages.""" start="00:19:53.620" video="qanda-one" id="subtitle"]]
+[[!template text="""So I can do whatever I want with that list.""" start="00:19:56.240" video="qanda-one" id="subtitle"]]
+[[!template text="""I can loop over and we can see that 1,""" start="00:20:00.360" video="qanda-one" id="subtitle"]]
+[[!template text="""that default home list of pages,""" start="00:20:06.340" video="qanda-one" id="subtitle"]]
+[[!template text="""so that list of the pages,""" start="00:20:08.600" video="qanda-one" id="subtitle"]]
+[[!template text="""and we see where is the list.""" start="00:20:10.260" video="qanda-one" id="subtitle"]]
+[[!template text="""Okay, so this is a, here we have a function""" start="00:20:13.200" video="qanda-one" id="subtitle"]]
+[[!template text="""that just, we want the pages,""" start="00:20:17.680" video="qanda-one" id="subtitle"]]
+[[!template text="""but I think we, but the home page,""" start="00:20:21.100" video="qanda-one" id="subtitle"]]
+[[!template text="""and we have that list,""" start="00:20:24.620" video="qanda-one" id="subtitle"]]
+[[!template text="""and then here we do that.""" start="00:20:28.300" video="qanda-one" id="subtitle"]]
+[[!template text="""And we get something listed,""" start="00:20:37.740" video="qanda-one" id="subtitle"]]
+[[!template text="""But then as you control everything that you""" start="00:20:40.680" video="qanda-one" id="subtitle"]]
+[[!template text="""do, you can pass any CSS class that you want""" start="00:20:44.060" video="qanda-one" id="subtitle"]]
+[[!template text="""to do those things. So,""" start="00:20:51.820" video="qanda-one" id="subtitle"]]
+[[!template text="""for instance, that div,""" start="00:20:53.620" video="qanda-one" id="subtitle"]]
+[[!template text="""add the class either. Yes,""" start="00:20:55.260" video="qanda-one" id="subtitle"]]
+[[!template text="""you can do. I don't remember the question,""" start="00:21:00.660" video="qanda-one" id="subtitle"]]
+[[!template text="""but I think I was answering the right 1.""" start="00:21:02.840" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: No, no, you were answering it.""" start="00:21:05.860" video="qanda-one" id="subtitle"]]
+[[!template text="""It was about carousels and about having fancy""" start="00:21:07.260" video="qanda-one" id="subtitle"]]
+[[!template text="""display for image galleries.""" start="00:21:09.720" video="qanda-one" id="subtitle"]]
+[[!template text="""And I think you've answered.""" start="00:21:11.720" video="qanda-one" id="subtitle"]]
+[[!template text="""Basically, you just put your JavaScript,""" start="00:21:12.660" video="qanda-one" id="subtitle"]]
+[[!template text="""you embed it inside the code.""" start="00:21:14.160" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Exactly.""" start="00:21:16.620" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: So, other question. Would there be an""" start="00:21:18.620" video="qanda-one" id="subtitle"]]
+[[!template text="""automated way to convert an existing HTML""" start="00:21:20.220" video="qanda-one" id="subtitle"]]
+[[!template text="""document into a JackHTML form?""" start="00:21:22.860" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, so that 1, I don't have 1.""" start="00:21:28.180" video="qanda-one" id="subtitle"]]
+[[!template text="""It's another topic, but maybe there are some""" start="00:21:32.200" video="qanda-one" id="subtitle"]]
+[[!template text="""kind of session because some people that""" start="00:21:35.660" video="qanda-one" id="subtitle"]]
+[[!template text="""know, that are used to Lisp,""" start="00:21:37.940" video="qanda-one" id="subtitle"]]
+[[!template text="""common Lisp or Clojure or other,""" start="00:21:43.080" video="qanda-one" id="subtitle"]]
+[[!template text="""Jack-html, that function,""" start="00:21:46.300" video="qanda-one" id="subtitle"]]
+[[!template text="""is something classic, but I didn't find,""" start="00:21:50.740" video="qanda-one" id="subtitle"]]
+[[!template text="""So I wrote it because I didn't find it""" start="00:21:53.680" video="qanda-one" id="subtitle"]]
+[[!template text="""already done the way I want for Emacs.""" start="00:22:00.840" video="qanda-one" id="subtitle"]]
+[[!template text="""And this is something for E-cup closure.""" start="00:22:06.040" video="qanda-one" id="subtitle"]]
+[[!template text="""So really I take, it's not that I take my""" start="00:22:09.640" video="qanda-one" id="subtitle"]]
+[[!template text="""impression, just that when you have something""" start="00:22:13.260" video="qanda-one" id="subtitle"]]
+[[!template text="""that exists and you look at how it's done.""" start="00:22:15.060" video="qanda-one" id="subtitle"]]
+[[!template text="""So you have a eCup for Crusher,""" start="00:22:20.640" video="qanda-one" id="subtitle"]]
+[[!template text="""does the same thing that HTML.""" start="00:22:25.160" video="qanda-one" id="subtitle"]]
+[[!template text="""It's more that I do a Jack HTML do what eCup""" start="00:22:26.660" video="qanda-one" id="subtitle"]]
+[[!template text="""does, but maybe they do it a better way.""" start="00:22:32.440" video="qanda-one" id="subtitle"]]
+[[!template text="""So I think maybe in that community,""" start="00:22:37.800" video="qanda-one" id="subtitle"]]
+[[!template text="""it might already exist something that go from""" start="00:22:42.320" video="qanda-one" id="subtitle"]]
+[[!template text="""HTML to Jack. So you can see,""" start="00:22:46.320" video="qanda-one" id="subtitle"]]
+[[!template text="""is it big enough? I will make it big enough.""" start="00:22:53.640" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's good enough, don't worry.""" start="00:22:57.626" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: So if you see- So you have the hash HTML and""" start="00:22:56.820" video="qanda-one" id="subtitle"]]
+[[!template text="""you see those things. There are things that I""" start="00:23:01.420" video="qanda-one" id="subtitle"]]
+[[!template text="""couldn't do, for instance,""" start="00:23:04.200" video="qanda-one" id="subtitle"]]
+[[!template text="""for the ID, I couldn't use the hash in the""" start="00:23:05.460" video="qanda-one" id="subtitle"]]
+[[!template text="""name of, of how do we name that,""" start="00:23:09.280" video="qanda-one" id="subtitle"]]
+[[!template text="""of the keywords, because it's used for""" start="00:23:14.760" video="qanda-one" id="subtitle"]]
+[[!template text="""something else in a Emacs Lisp.""" start="00:23:18.480" video="qanda-one" id="subtitle"]]
+[[!template text="""So, I use... Anyway, so you see that you have""" start="00:23:21.180" video="qanda-one" id="subtitle"]]
+[[!template text="""that things but in Emacs we don't have the""" start="00:23:25.520" video="qanda-one" id="subtitle"]]
+[[!template text="""map with that syntax. We have a hash map but""" start="00:23:30.260" video="qanda-one" id="subtitle"]]
+[[!template text="""they are not with that syntax and I wanted""" start="00:23:34.960" video="qanda-one" id="subtitle"]]
+[[!template text="""that syntax so we use only list and Here we""" start="00:23:37.120" video="qanda-one" id="subtitle"]]
+[[!template text="""have an array with a hash map.""" start="00:23:46.080" video="qanda-one" id="subtitle"]]
+[[!template text="""So let me just say, so the question was,""" start="00:23:49.200" video="qanda-one" id="subtitle"]]
+[[!template text="""does it exist something?""" start="00:23:52.360" video="qanda-one" id="subtitle"]]
+[[!template text="""I think not, but it could be built or maybe""" start="00:23:55.240" video="qanda-one" id="subtitle"]]
+[[!template text="""exist for E-Cups, you are interested.""" start="00:23:58.680" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay, great. I think that answers the""" start="00:24:03.240" video="qanda-one" id="subtitle"]]
+[[!template text="""question perfectly. And our final question,""" start="00:24:04.860" video="qanda-one" id="subtitle"]]
+[[!template text="""does this or you use any other Emacs packages""" start="00:24:08.440" video="qanda-one" id="subtitle"]]
+[[!template text="""for your packages slash website,""" start="00:24:12.240" video="qanda-one" id="subtitle"]]
+[[!template text="""example, or publish? Like,""" start="00:24:14.840" video="qanda-one" id="subtitle"]]
+[[!template text="""rephrasing the question,""" start="00:24:17.020" video="qanda-one" id="subtitle"]]
+[[!template text="""do you use it for your own personal usage or""" start="00:24:17.960" video="qanda-one" id="subtitle"]]
+[[!template text="""do you interact with other packages?""" start="00:24:20.820" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'm not sure I understand the question.""" start="00:24:24.120" video="qanda-one" id="subtitle"]]
+[[!template text="""Can you please repeat the question?""" start="00:24:26.640" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, I will reread it as it is written and I""" start="00:24:29.820" video="qanda-one" id="subtitle"]]
+[[!template text="""will leave you interpret it however you want.""" start="00:24:32.460" video="qanda-one" id="subtitle"]]
+[[!template text="""Thank you. Does this or you use any other""" start="00:24:34.760" video="qanda-one" id="subtitle"]]
+[[!template text="""Emacs packages for your package slash website""" start="00:24:39.220" video="qanda-one" id="subtitle"]]
+[[!template text="""like org-publish?""" start="00:24:43.840" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: No, no, no. I don't use nothing.""" start="00:24:46.620" video="qanda-one" id="subtitle"]]
+[[!template text="""I just accept dependency of 1.n.""" start="00:24:49.660" video="qanda-one" id="subtitle"]]
+[[!template text="""So, we are in 1.n and we go at the top and we""" start="00:24:57.660" video="qanda-one" id="subtitle"]]
+[[!template text="""see that those are the dependencies.""" start="00:25:01.000" video="qanda-one" id="subtitle"]]
+[[!template text="""I use nothing. So what I do is that I""" start="00:25:04.820" video="qanda-one" id="subtitle"]]
+[[!template text="""publish, I just generate the public""" start="00:25:09.520" video="qanda-one" id="subtitle"]]
+[[!template text="""directory. So if we go to public,""" start="00:25:12.620" video="qanda-one" id="subtitle"]]
+[[!template text="""this 1, no, I don't want this 1.""" start="00:25:16.500" video="qanda-one" id="subtitle"]]
+[[!template text="""I want to go to the website of the video.""" start="00:25:18.240" video="qanda-one" id="subtitle"]]
+[[!template text="""If we see here, everything is rendered in the""" start="00:25:23.620" video="qanda-one" id="subtitle"]]
+[[!template text="""public. Any services, if you use your own""" start="00:25:27.400" video="qanda-one" id="subtitle"]]
+[[!template text="""server and you save those files,""" start="00:25:37.380" video="qanda-one" id="subtitle"]]
+[[!template text="""you have your website.""" start="00:25:39.280" video="qanda-one" id="subtitle"]]
+[[!template text="""So I don't use anything else.""" start="00:25:40.580" video="qanda-one" id="subtitle"]]
+[[!template text="""I just git push and I'm using Netlify as a""" start="00:25:42.580" video="qanda-one" id="subtitle"]]
+[[!template text="""service to run to save my files,""" start="00:25:49.700" video="qanda-one" id="subtitle"]]
+[[!template text="""but you can use anything you want.""" start="00:25:52.580" video="qanda-one" id="subtitle"]]
+[[!template text="""Because your website is really what is into a""" start="00:25:55.900" video="qanda-one" id="subtitle"]]
+[[!template text="""public. So, this is another,""" start="00:25:58.620" video="qanda-one" id="subtitle"]]
+[[!template text="""It's not the concern of 1.L""" start="00:26:01.360" video="qanda-one" id="subtitle"]]
+[[!template text="""to answer. I'm not using org.publish.""" start="00:26:04.860" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool, great. Well, thank you.""" start="00:26:08.960" video="qanda-one" id="subtitle"]]
+[[!template text="""I think the question was also about other""" start="00:26:10.900" video="qanda-one" id="subtitle"]]
+[[!template text="""things, but I think If the person wants a""" start="00:26:13.000" video="qanda-one" id="subtitle"]]
+[[!template text="""more clear answer to their question,""" start="00:26:16.500" video="qanda-one" id="subtitle"]]
+[[!template text="""feel free to clarify the question and Tony""" start="00:26:18.820" video="qanda-one" id="subtitle"]]
+[[!template text="""might be able to answer it later on.""" start="00:26:21.260" video="qanda-one" id="subtitle"]]
+[[!template text="""Alright Tony, I think that's all the""" start="00:26:22.960" video="qanda-one" id="subtitle"]]
+[[!template text="""questions we had. Thank you so much for""" start="00:26:24.220" video="qanda-one" id="subtitle"]]
+[[!template text="""taking the time not only to present Adimax""" start="00:26:25.760" video="qanda-one" id="subtitle"]]
+[[!template text="""Kant, but also for answering all the""" start="00:26:27.680" video="qanda-one" id="subtitle"]]
+[[!template text="""questions people had.""" start="00:26:29.240" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you to everybody participating,""" start="00:26:31.220" video="qanda-one" id="subtitle"]]
+[[!template text="""organizing and thank you for all those""" start="00:26:34.540" video="qanda-one" id="subtitle"]]
+[[!template text="""questions and you can send me any emails if""" start="00:26:38.000" video="qanda-one" id="subtitle"]]
+[[!template text="""you have a question and open the issues if""" start="00:26:42.180" video="qanda-one" id="subtitle"]]
+[[!template text="""it's not working the way it should work for""" start="00:26:45.180" video="qanda-one" id="subtitle"]]
+[[!template text="""you. Please send me those things.""" start="00:26:47.720" video="qanda-one" id="subtitle"]]
+[[!template text="""Thank you, everybody.""" start="00:26:49.840" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: Splendid, thank you. And before,""" start="00:26:51.940" video="qanda-one" id="subtitle"]]
+[[!template text="""so right now we're gonna go on a lunch break.""" start="00:26:54.280" video="qanda-one" id="subtitle"]]
+[[!template text="""We'll be back in about 40 minutes for the""" start="00:26:56.140" video="qanda-one" id="subtitle"]]
+[[!template text="""talk called Emacs Turbocharges My Writing.""" start="00:26:58.660" video="qanda-one" id="subtitle"]]
+[[!template text="""And I will not tell you more.""" start="00:27:01.300" video="qanda-one" id="subtitle"]]
+[[!template text="""You can look at the talk page to see a little""" start="00:27:02.540" video="qanda-one" id="subtitle"]]
+[[!template text="""bit of a synopsis but otherwise keep the""" start="00:27:04.280" video="qanda-one" id="subtitle"]]
+[[!template text="""surprise. So have a good lunch or have a good""" start="00:27:06.340" video="qanda-one" id="subtitle"]]
+[[!template text="""dinner if you are in dinner-friendly times""" start="00:27:08.900" video="qanda-one" id="subtitle"]]
+[[!template text="""and I will see you afterwards.""" start="00:27:11.880" video="qanda-one" id="subtitle"]]
+[[!template text="""Thank you again, Tony.""" start="00:27:13.180" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 0]: See you.""" start="00:27:14.860" video="qanda-one" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right. Let me just close everything.""" start="00:27:17.960" video="qanda-one" id="subtitle"]]
+[[!template text="""All right, got it. OK,""" start="00:27:29.080" video="qanda-one" id="subtitle"]]
+[[!template text="""so thank you so much, Tony.""" start="00:27:30.480" video="qanda-one" id="subtitle"]]
+[[!template text="""I just had to clear everything up on the""" start="00:27:31.400" video="qanda-one" id="subtitle"]]
+[[!template text="""stream. I'm going to need to...""" start="00:27:33.520" video="qanda-one" id="subtitle"]]
+[[!template text="""Sorry. I'm going to stop.""" start="00:27:36.160" video="qanda-one" id="subtitle"]]
+
+Questions or comments? Please e-mail [tony@tonyaldon.com](mailto:tony@tonyaldon.com?subject=Comment%20for%20EmacsConf%202023%20one%3A%20one.el%3A%20the%20static%20site%20generator%20for%20Emacs%20Lisp%20Programmers)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/one-before.md b/2023/info/one-before.md
new file mode 100644
index 00000000..04ae447f
--- /dev/null
+++ b/2023/info/one-before.md
@@ -0,0 +1,32 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 23-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="one-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="one-mainVideo" data="""
+00:00.000 Introduction
+00:24.000 Documentation
+02:02.200 Starting a new project
+02:27.400 Building
+03:19.760 Side by side
+04:32.160 Writing a render function
+05:44.680 New page
+06:41.720 Linking between pages
+08:40.000 CSS
+10:23.160 How to write a render function
+19:03.200 Rendering content
+20:37.160 Rendering CSS
+
+"""]]<div></div>Duration: 22:18 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--main.opus">Download --main.opus (14MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--main.webm">Download --main.webm (54MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/x2yYYWLHQe75FTV8sWiDmy">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="one-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="one-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.opus"></audio></div><div></div>Duration: 27:39 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.json">Download --answers.json (1.1MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.opus">Download --answers.opus (15MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-one--oneel-the-static-site-generator-for-emacs-lisp-programmers--tony-aldon--answers.webm">Download --answers.webm (96MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/one-nav.md b/2023/info/one-nav.md
new file mode 100644
index 00000000..fe3eb334
--- /dev/null
+++ b/2023/info/one-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/table">Who needs Excel? Managing your students qualifications with org-table</a>
+Next by track: <a href="/2023/talks/writing">Emacs turbo-charges my writing</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/overlay-after.md b/2023/info/overlay-after.md
new file mode 100644
index 00000000..7db881e5
--- /dev/null
+++ b/2023/info/overlay-after.md
@@ -0,0 +1,731 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="overlay-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Hi, I'm Jeff Trull, and today I'm going to talk to you""" start="00:00:00.000" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""about improving C++ compiler diagnostics""" start="00:00:04.898" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""using overlays and other features from Emacs.""" start="00:00:08.460" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""First an overview of my talk.""" start="00:00:13.600" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I'm going to cover what overlays are""" start="00:00:15.840" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and how you can use them in code,""" start="00:00:17.657" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""then I'm going to talk about C++""" start="00:00:19.326" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and why its compiler errors can be so onerous.""" start="00:00:21.479" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Finally, we'll take that information""" start="00:00:24.480" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and build a new minor mode""" start="00:00:26.751" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""using overlays and other Emacs features.""" start="00:00:28.448" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Overlays and what they can do""" start="00:00:33.560" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""First of all, overlays.""" start="00:00:33.560" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""What are they?""" start="00:00:35.520" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""They are objects consisting of a buffer range""" start="00:00:36.680" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and a set of properties.""" start="00:00:39.125" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""That means that they cover a region in a buffer.""" start="00:00:40.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""The properties can be a certain set""" start="00:00:43.120" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""of special property names,""" start="00:00:45.534" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""in which case they can be used to cause""" start="00:00:47.345" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""special effects in the buffer,""" start="00:00:50.289" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""but they never change the underlying text.""" start="00:00:52.570" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""You can use them for things like hiding things.""" start="00:00:55.660" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So, for example, overlays are working right now""" start="00:00:59.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""in this window. `org-present`,""" start="00:01:02.887" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the technology I'm using for this presentation,""" start="00:01:04.661" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""is hiding the asterisk before every headline,""" start="00:01:07.596" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""as well as the things called emphasis markers;""" start="00:01:10.032" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that is, those things that make things look""" start="00:01:12.521" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""monospaced for verbatim, or italic, or bold.""" start="00:01:16.270" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""The special characters we use to mark off those sections""" start="00:01:20.700" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""are also hidden by `org-present` using overlays.""" start="00:01:24.422" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""But those things are still in the buffer""" start="00:01:28.940" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and they're still visible to code.""" start="00:01:30.602" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So if I run this little snippet of code down here,""" start="00:01:31.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""it's going to go up to the headline &quot;Overlays""" start="00:01:34.922" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and what they can do,&quot; and it's going to tell us""" start="00:01:37.404" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""what's there in the buffer.""" start="00:01:40.052" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's go down and run this.""" start="00:01:41.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So according to this code, the contents of the buffer""" start="00:01:45.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to the left of the headline is a star in a space,""" start="00:01:48.958" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which means that even though we can't see that star,""" start="00:01:51.991" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""it's still there, because it's hidden by an overlay.""" start="00:01:55.205" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And that's kind of the essence of what overlays are.""" start="00:01:58.220" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Simple overlay example - creating an overlay""" start="00:02:02.500" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Let's do a simple overlay example.""" start="00:02:02.500" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We have some text on the right here,""" start="00:02:04.780" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which is a famous poem by William Carlos Williams,""" start="00:02:06.720" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which has been the subject of many memes.""" start="00:02:09.340" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's create an overlay that covers it.""" start="00:02:12.180" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I'll go down here and use this snippet of code here.""" start="00:02:17.860" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We'll go up to the top, and we'll mark everything""" start="00:02:20.700" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""between `#+BEGIN_VERSE` and `#+END_VERSE`.""" start="00:02:25.919" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""You can see we've created an overlay""" start="00:02:29.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""from position 74 to 224.""" start="00:02:33.277" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Adding properties""" start="00:02:35.700" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Now we can take that overlay that we already created""" start="00:02:35.700" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and add a property, in this case a `face` property,""" start="00:02:38.064" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to change the appearance of the text.""" start="00:02:41.212" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""This is a poem, and it's currently using""" start="00:02:43.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""a face that is monospaced,""" start="00:02:46.280" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and so it looks like a computer program,""" start="00:02:48.084" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""even though it's a poem.""" start="00:02:50.492" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I think it would be nicer to use something""" start="00:02:51.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with variable-width font, maybe with some serifs.""" start="00:02:54.586" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So let's give that a try.""" start="00:02:57.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Now you can see that the poem looks quite a bit different.""" start="00:03:01.140" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It looks more like what we'd see in a book.""" start="00:03:03.700" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Deleting an overlay""" start="00:03:10.940" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""We can also delete overlays.""" start="00:03:10.940" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So I've named this one.""" start="00:03:13.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So we can just go down and run `delete-overlay`""" start="00:03:15.140" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and get rid of it, and it'll go back to""" start="00:03:17.766" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the appearance it had before.""" start="00:03:20.049" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And there it is.""" start="00:03:22.660" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It's back to normal.""" start="00:03:23.660" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Setting fonts the right way""" start="00:03:24.660" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Now, if you're interested in changing all of the verses""" start="00:03:24.660" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""inside an Org Mode file to a different face""" start="00:03:28.474" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or a different font family,""" start="00:03:31.109" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""this isn't the way you'd really do it.""" start="00:03:32.786" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I'll just show you that real quick.""" start="00:03:35.060" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""The right way is probably to change the `org-verse` face,""" start="00:03:37.520" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which is the face used for all of the verse blocks""" start="00:03:43.472" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""inside your Org Mode file.""" start="00:03:48.869" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And so this is how you do it here:""" start="00:03:51.620" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""`face-remap-add-relative`.""" start="00:03:55.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's give it a try.""" start="00:03:56.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It worked!""" start="00:03:58.340" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""More properties""" start="00:03:59.540" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""There are more advanced things that you can do""" start="00:03:59.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""other than just changing fonts.""" start="00:04:01.806" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""There's a whole long list of them in the manual,""" start="00:04:03.300" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""but let's talk about the ones we're going to use today.""" start="00:04:05.544" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Visibility""" start="00:04:12.580" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""You can make text invisible, just like `org-present` did.""" start="00:04:12.580" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""The simplest way is to set the `invisible` property to true,""" start="00:04:17.380" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""so here's a code snippet that will do that.""" start="00:04:21.820" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""What we're going to do is""" start="00:04:24.500" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""go and find the word &quot;plums&quot; inside the poem,""" start="00:04:26.160" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and then we're going to make it invisible""" start="00:04:28.967" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""by creating an overlay that covers it,""" start="00:04:31.285" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and then setting the invisible property to true.""" start="00:04:33.437" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Boom!""" start="00:04:36.820" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It's gone.""" start="00:04:37.940" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We've eaten the plums.""" start="00:04:38.940" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Visibility is a huge topic and very complicated.""" start="00:04:39.940" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""There are powerful mechanisms for using it.""" start="00:04:42.180" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I suggest reading the manual""" start="00:04:44.220" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""if you'd like to know more about that.""" start="00:04:46.627" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Adding text""" start="00:04:49.780" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Another thing we can do with properties""" start="00:04:49.780" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""is to add text either before or after an overlay.""" start="00:04:52.118" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Since we've made the word &quot;plums&quot; invisible,""" start="00:04:54.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or anything that you make invisible in the buffer,""" start="00:04:57.348" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""if you add text then afterwards,""" start="00:05:00.575" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""it looks like you've replaced the original words""" start="00:05:02.663" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with new words.""" start="00:05:05.700" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So let's add a property, a `before-string` property,""" start="00:05:08.220" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to the overlay that we used before""" start="00:05:12.047" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to make it seem as though we're eating cherries""" start="00:05:14.194" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""instead of plums.""" start="00:05:17.138" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Boom!""" start="00:05:18.180" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""There it is.""" start="00:05:19.580" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So that's how you can replace words using overlays.""" start="00:05:22.020" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Custom properties""" start="00:05:27.820" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""You can also have custom properties""" start="00:05:27.820" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that you name and then use yourself.""" start="00:05:29.761" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""For example, you can use it to mark regions in the buffer.""" start="00:05:31.700" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""You can also use it to add information""" start="00:05:35.320" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to regions in the buffer for your own tracking""" start="00:05:38.009" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""in a minor mode or something like that, which we will use.""" start="00:05:41.180" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Notes on properties""" start="00:05:45.380" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Finally, two notes on properties.""" start="00:05:45.380" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We've been talking about overlay properties,""" start="00:05:49.620" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""but there's also something called text properties.""" start="00:05:51.951" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Text properties are attached to text in a buffer.""" start="00:05:54.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""When you copy that text, the properties come along with it.""" start="00:05:57.460" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""If you modify the properties,""" start="00:06:00.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the buffer is considered modified.""" start="00:06:03.057" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Org Mode makes heavy use of text properties,""" start="00:06:05.500" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""as we can see by running this little code snippet here,""" start="00:06:08.460" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which is going to tell us the properties""" start="00:06:11.678" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and the string attached""" start="00:06:14.060" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to the &quot;Some poetry&quot; headline on the right.""" start="00:06:16.566" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""There's also some controversy regarding performance.""" start="00:06:20.740" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It may be that text properties""" start="00:06:23.660" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""perform better than overlay properties,""" start="00:06:25.521" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""so do some research""" start="00:06:27.860" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""if you're going to make heavy use of them.""" start="00:06:28.893" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I prefer overlays because they're just easier to use.""" start="00:06:31.060" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Improving C++ compiler output""" start="00:06:36.100" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""C++ compiler output.""" start="00:06:36.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So my day job is C++ programmer,""" start="00:06:37.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and although I've been an Emacser for many years,""" start="00:06:41.171" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""it can be a little bit of a chore dealing with errors.""" start="00:06:46.561" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""The error messages that come out of the compiler""" start="00:06:52.860" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""can be pretty hard to understand.""" start="00:06:55.681" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""This has often been a barrier,""" start="00:06:57.580" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""particularly for people who are new to C++.""" start="00:07:00.538" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So let's see what that's like.""" start="00:07:04.640" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I have an example""" start="00:07:09.040" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which is generously supplied by Ben Deane of Intel.""" start="00:07:10.560" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So let's see what it looks like""" start="00:07:14.780" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""when you compile a C++ program""" start="00:07:17.083" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that has a difficult error in it.""" start="00:07:19.314" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Okay.""" start="00:07:24.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Okay.""" start="00:07:28.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So you see we have a lot of fairly verbose messages.""" start="00:07:31.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""The most verbose one I think is probably here.""" start="00:07:35.680" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""This one here.""" start="00:07:39.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""These are pretty bad.""" start="00:07:41.000" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I think there might be bigger ones.""" start="00:07:42.000" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Oh, yeah. Here we go.""" start="00:07:43.000" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Here's my favorite one.""" start="00:07:43.721" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""You can see... Let's look for specialization... Basically,""" start="00:07:44.961" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""this whole section of the buffer here,""" start="00:07:51.064" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that is specifying the specific types""" start="00:07:55.179" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that a function template was instantiated with.""" start="00:07:58.229" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And it's a lot there.""" start="00:08:02.000" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So if you're trying to figure out""" start="00:08:04.000" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""what's wrong with your program""" start="00:08:05.474" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and you're looking at something like this,""" start="00:08:06.818" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""it can be really, really hard to understand.""" start="00:08:08.885" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Okay.""" start="00:08:11.000" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Back to our presentation.""" start="00:08:12.000" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""The problem with C++ error messages""" start="00:08:17.680" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""So it's often this way in C++""" start="00:08:17.680" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""because we compose types from other types.""" start="00:08:20.064" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""They can be long to begin with,""" start="00:08:23.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""but then a couple of other factors come into play.""" start="00:08:26.217" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Many standard class templates have default arguments""" start="00:08:30.240" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""First of all, we can have default template arguments.""" start="00:08:30.240" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""These are arguments you didn't write,""" start="00:08:33.280" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""but that are implicitly there""" start="00:08:35.364" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and can sometimes refer""" start="00:08:37.009" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to the arguments that you did write,""" start="00:08:38.326" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which causes them to get a bit bigger,""" start="00:08:40.301" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""such as these allocator arguments here and here.""" start="00:08:42.441" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Some types are aliases for longer things, too""" start="00:08:47.520" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Then there are type aliases.""" start="00:08:47.520" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""For example, `std::string` here expands to""" start="00:08:49.360" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""a type with three template arguments.""" start="00:08:54.015" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So you can imagine, when we combine""" start="00:08:58.320" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""those two things together,""" start="00:09:01.941" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""our simple vector of maps from strings to ints""" start="00:09:04.734" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""becomes this humongous thing here, which...""" start="00:09:09.764" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's run the comparison.""" start="00:09:14.258" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Yeah.""" start="00:09:18.360" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Reporting type information accurately means long lines""" start="00:09:20.960" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""So in summary, to properly understand an error""" start="00:09:20.960" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""when you're a C++ programmer""" start="00:09:24.925" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""requires knowing the exact types""" start="00:09:27.371" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that were supplied to your function.""" start="00:09:29.719" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And types are built recursively,""" start="00:09:32.280" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and therefore the types can--""" start="00:09:34.431" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the correct exact name for the type""" start="00:09:36.647" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""can just be really huge""" start="00:09:40.514" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and have many levels and layers to it.""" start="00:09:42.777" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So when I was trying to understand""" start="00:09:46.360" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the things I'd done wrong,""" start="00:09:48.114" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""especially when I was a newer C++ programmer,""" start="00:09:49.467" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""but honestly still even recently,""" start="00:09:52.402" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""if I was having a really intractable problem,""" start="00:09:54.571" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I would just copy the entire error message out,""" start="00:09:57.440" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""stick it in the scratch buffer,""" start="00:10:00.124" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and then manually reformat it""" start="00:10:01.736" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""so I could see what it was telling me""" start="00:10:03.650" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I'd actually called the function""" start="00:10:05.564" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or whatever it was with, the exact type.""" start="00:10:07.262" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I had to sit there""" start="00:10:09.320" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and go through the whole thing.""" start="00:10:11.312" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""But there's a better way.""" start="00:10:13.240" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Now, anyway.""" start="00:10:15.240" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Emacs can help - Treat C++ type names as just another kind of balanced expression""" start="00:10:18.240" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""So what can Emacs do to help us with this problem?""" start="00:10:18.240" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""First of all, if you think about a type name,""" start="00:10:23.960" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""it's a lot like what we call S-expressions""" start="00:10:28.871" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or balanced expressions.""" start="00:10:33.080" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Lisp code itself is an S-expression.""" start="00:10:35.480" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It's basically things with parentheses""" start="00:10:38.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and little atoms or symbols in it,""" start="00:10:41.465" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or strings or numbers.""" start="00:10:44.215" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""But parenthesized balanced expressions""" start="00:10:46.520" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""are things that Emacs was actually built to deal with.""" start="00:10:50.232" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""They were... I found an old manual from 1981,""" start="00:10:55.800" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and the two major modes that they recommended""" start="00:10:58.945" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or that they actually documented in the manual were""" start="00:11:02.160" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""one, assembly language, and two, Lisp.""" start="00:11:05.766" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""They mentioned that there were other modes,""" start="00:11:08.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""but they didn't say anything about them.""" start="00:11:10.653" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So Lisp is something""" start="00:11:12.700" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with a really long history with Emacs.""" start="00:11:14.626" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Balanced expressions and manipulating them""" start="00:11:17.440" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and doing them efficiently""" start="00:11:19.977" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""is just a thing that Emacs knows how to do,""" start="00:11:21.435" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and Emacs is good at it.""" start="00:11:24.156" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""There's just a legacy""" start="00:11:25.640" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""of algorithms and functions for doing it.""" start="00:11:27.706" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So we take types,""" start="00:11:31.320" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and we take the angle brackets in the types,""" start="00:11:33.183" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and we get the symbols right.""" start="00:11:37.840" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Then we can treat them""" start="00:11:40.840" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""as though they were balanced expressions or S-expressions,""" start="00:11:41.815" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the same kind that Emacs is really good at handling.""" start="00:11:44.313" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Add overlays to improve readability""" start="00:11:49.320" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Secondly, we can use overlays""" start="00:11:49.320" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to improve the readability of errors.""" start="00:11:51.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We can take long lines and break and indent them""" start="00:11:55.260" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""using `before-string`s, so the same thing""" start="00:11:58.013" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I used to add &quot;cherries&quot; into the poem.""" start="00:12:00.200" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We can use that to insert new lines""" start="00:12:03.440" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""followed by indentation""" start="00:12:06.612" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and produce a much nicer-looking listing of a type.""" start="00:12:08.726" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We can also use the `invisible` property""" start="00:12:15.160" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to hide unwanted detail.""" start="00:12:19.642" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Create a minor mode that runs during compilation""" start="00:12:22.400" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Last of all, we can create a minor mode.""" start="00:12:22.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""When we're compiling things in Emacs,""" start="00:12:24.960" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""we often use `compilation-mode`.""" start="00:12:27.855" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""`compilation-mode` allows you to install""" start="00:12:30.140" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""compilation filters that run""" start="00:12:32.098" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""when the compiler is producing output,""" start="00:12:33.554" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and at that time, then, we can add our overlays.""" start="00:12:36.435" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We can also add in minor-mode commands""" start="00:12:39.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that do whatever we want to the keymap.""" start="00:12:42.869" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""In this case, we're going to show and hide""" start="00:12:45.758" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""lower-level details interactively""" start="00:12:48.322" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""so that we can see a simplified version""" start="00:12:50.177" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or a more detailed version of a type, depending on our needs.""" start="00:12:53.907" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Parsing types as balanced expressions""" start="00:12:59.500" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""First of all, parsing types as balanced expressions.""" start="00:12:59.500" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We need to be able to quickly locate""" start="00:13:03.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the boundaries and the contents""" start="00:13:05.687" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""of parenthesized expressions,""" start="00:13:07.163" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""or in this case, expressions in angle brackets.""" start="00:13:08.500" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We use a syntax table inside Emacs""" start="00:13:12.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to allow movement functions like `forward-list`""" start="00:13:14.996" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to jump between matching angle brackets.""" start="00:13:18.801" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""By default, they're just parentheses.""" start="00:13:21.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""First of all, let's look at our syntax table.""" start="00:13:23.460" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We're going to add here syntax entries""" start="00:13:25.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to handle angle brackets as though they were parentheses.""" start="00:13:29.190" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Then we have a lot of types""" start="00:13:33.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that have colons in them, and those are namespaces in C++.""" start="00:13:37.248" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""By default, Emacs does not recognize them""" start="00:13:42.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""as parts of symbols, so we're going to tell Emacs""" start="00:13:45.767" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that a colon is something called a symbol constituent,""" start="00:13:49.135" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that it can be part of a name.""" start="00:13:52.840" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Once we do that, then we can use our functions""" start="00:13:54.860" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""like `forward-list`, `backward-word`,""" start="00:13:57.614" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""all of the navigation and movement functions that we have""" start="00:13:59.443" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that do things, that do more complicated things""" start="00:14:03.289" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""like S-expressions and so on,""" start="00:14:06.624" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""can be used now with our angle brackets""" start="00:14:08.708" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and inside of our types.""" start="00:14:11.486" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Indent and fill with overlays - Use ancient "pretty printing" algorithms"""" start="00:14:16.100" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""The next thing we can do is""" start="00:14:16.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""perform indent and fill with overlays.""" start="00:14:18.463" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We're going to use `before-string` properties""" start="00:14:21.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to break lines and create indentation""" start="00:14:23.736" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to make the output look a little better.""" start="00:14:25.631" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Today, we fill mostly text and we indent mostly code.""" start="00:14:28.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We fill text in order to prevent it""" start="00:14:35.320" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""from running off the side of the right margin,""" start="00:14:37.308" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and we indent code to line up syntactic elements.""" start="00:14:39.903" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Back in the day, they had algorithms that could do both.""" start="00:14:43.940" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Those are what we're going to leverage.""" start="00:14:47.080" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Overlays can mimic line breaks and indentation""" start="00:14:52.260" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""We can use the `before-string` property""" start="00:14:52.260" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to insert a new line in the correct number of spaces""" start="00:14:54.583" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to emulate indentation.""" start="00:14:57.760" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""As a simplified example, here's some code""" start="00:15:00.240" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that will indent 4 upon each open angle bracket.""" start="00:15:03.526" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's give it a try.""" start="00:15:07.280" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Hiding details - Marking depths with overlays""" start="00:15:14.520" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""The next thing we're going to need to do is hide details.""" start="00:15:14.520" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So we have nested types, and the user is going to want to""" start="00:15:18.280" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""be able to reveal lower-level or hide lower-level parts""" start="00:15:22.689" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""of the nested type interactively""" start="00:15:27.372" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""once we've already reformatted the error messages.""" start="00:15:30.132" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's see how we can do that using invisible properties.""" start="00:15:35.480" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""The first thing we're going to do is""" start="00:15:40.440" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""mark depths within the type.""" start="00:15:43.993" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""When we're originally analyzing and formatting""" start="00:15:46.680" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and doing the indentation and the line breaks,""" start="00:15:49.329" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""at the same time, we're going to go through""" start="00:15:51.920" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and mark the nested levels inside the type names,""" start="00:15:55.072" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""just as this diagram shows.""" start="00:15:58.818" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So depth 1, for example, will be everything""" start="00:16:00.840" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""inside the first level of angle brackets.""" start="00:16:03.574" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Depth 2 will be everything inside the second level,""" start="00:16:06.120" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and so on.""" start="00:16:09.039" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And then later on, when the users request it,""" start="00:16:09.760" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""we can go and look at the depth that they've selected""" start="00:16:12.071" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and then mark those sections invisible.""" start="00:16:16.304" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's see how that might work.""" start="00:16:19.360" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""First of all, let's delete the overlays""" start="00:16:20.520" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that we already have that created the indentation.""" start="00:16:24.023" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Now we're going to go and do that marking""" start="00:16:28.400" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with the custom depth properties here.""" start="00:16:32.420" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""To prove that I didn't pull a fast one,""" start="00:16:35.740" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""let's go and see what `describe-char` tells us""" start="00:16:38.761" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""about the depths inside here.""" start="00:16:42.083" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's start here.""" start="00:16:44.660" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Okay, so inside this part here, `std::string`,""" start="00:16:46.460" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""There are two overlays.""" start="00:16:52.820" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""One of them is of depth 1, and the other is of depth 2,""" start="00:16:54.980" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which makes sense, because depth 1 is going to be""" start="00:16:57.781" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""from about here to here,""" start="00:17:00.602" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and depth 2 is going to be from about here to this area.""" start="00:17:02.012" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So it's reasonable that there should be two,""" start="00:17:07.660" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and that's what we expect.""" start="00:17:10.830" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Hiding to a target depth""" start="00:17:12.660" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Now that we've marked the nested types with their depths,""" start="00:17:12.660" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""let's experiment with hiding details.""" start="00:17:17.354" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""This fragment of code takes a user-supplied depth,""" start="00:17:21.380" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""in this case 2, and will hide,""" start="00:17:26.774" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""based on those markings""" start="00:17:29.086" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that we've already made on the overlays,""" start="00:17:30.876" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""the custom depth properties.""" start="00:17:33.933" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We'll take those and apply your requested level of detail.""" start="00:17:36.020" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So let's try it out.""" start="00:17:40.020" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Depth 2.""" start="00:17:42.020" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""All right, that hid everything under the `std::map`,""" start="00:17:43.020" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""so the deepest level.""" start="00:17:46.006" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""If we make it 1, we should get a level higher than that.""" start="00:17:47.260" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So now level 1 and below are hidden.""" start="00:17:52.140" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Now if we put it back to 3, it should reveal everything.""" start="00:17:54.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""So that's what we're going to use in our minor mode.""" start="00:17:59.660" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Demo""" start="00:18:04.900" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""Let's have a demo.""" start="00:18:04.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We're going to revisit the initial example""" start="00:18:05.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with the minor mode installed.""" start="00:18:08.539" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Now we're going to have a compilation filter""" start="00:18:10.380" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that will run on every chunk of output""" start="00:18:12.102" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""produced by the compiler.""" start="00:18:13.594" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It's going to add those overlays""" start="00:18:15.780" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with the line breaks and the indentation.""" start="00:18:17.850" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""It's also going to add overlays""" start="00:18:20.420" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that mark up the nested types""" start="00:18:22.207" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with the depths for each region.""" start="00:18:23.881" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's add the hook for `tspew-mode`.""" start="00:18:26.220" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And now we can compile again.""" start="00:18:31.580" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""All right, we can already see""" start="00:18:38.220" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that these things are formatted a little bit better""" start="00:18:41.504" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""than they were before.""" start="00:18:47.196" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""They're not all on one line.""" start="00:18:49.180" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Things are getting kind of lined up here.""" start="00:18:50.180" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Here's a good example.""" start="00:18:53.580" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And here's our big ugly one from before""" start="00:19:05.620" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""with all the characters in it.""" start="00:19:08.638" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's try hiding some of this information.""" start="00:19:10.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""We'll just slowly decrease the level of detail""" start="00:19:14.500" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and you can see how it works.""" start="00:19:17.432" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Over here, where there's these ellipses""" start="00:19:19.740" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""next to string constant, the &quot;...&quot; there,""" start="00:19:22.334" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""that's where we are starting to hide information""" start="00:19:25.460" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and go to the next level.""" start="00:19:30.387" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Hiding more, hiding more, hiding more.""" start="00:19:32.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Now we can go back and start adding it back.""" start="00:19:36.460" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""You can see here now we just have about four layers,""" start="00:19:38.220" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""which is a lot easier to understand.""" start="00:19:42.737" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And if we start understanding what it is""" start="00:19:45.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and we need more detail, we can just increase detail again.""" start="00:19:47.734" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""And every time we increase or decrease detail,""" start="00:19:52.180" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""it reformats so it still stays kind of consolidated""" start="00:19:55.403" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and nice looking.""" start="00:19:58.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's increase it a little bit more.""" start="00:19:59.900" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Okay, so you can see how that worked.""" start="00:20:02.060" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Let's go back to our presentation.""" start="00:20:04.540" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""All right.""" start="00:20:08.340" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:20:10.220" video="mainVideo-overlay" id="subtitle"]]
+
+[[!template text="""In conclusion, we saw how we could solve""" start="00:20:10.220" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""a real problem for C++ programmers""" start="00:20:12.997" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""by combining several Emacs features: overlays,""" start="00:20:15.368" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""compilation mode extensions,""" start="00:20:18.535" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""and balanced expression navigation using syntax tables.""" start="00:20:20.490" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Emacs is often compared unfavorably""" start="00:20:25.700" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""to newer IDEs and editors with slicker user interfaces.""" start="00:20:27.979" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""What Emacs has that they don't is powerful abstractions,""" start="00:20:32.220" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""tons of libraries, and decades of work""" start="00:20:36.387" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""by some of the luminaries in the field of software.""" start="00:20:38.863" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""I think that this project would have been much harder to do""" start="00:20:42.100" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""in a prettier but less powerful environment.""" start="00:20:45.344" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""In short, there's plenty of hope for Emacs.""" start="00:20:48.020" video="mainVideo-overlay" id="subtitle"]]
+[[!template text="""Thank you.""" start="00:20:50.860" video="mainVideo-overlay" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="overlay-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Out here or also you can continue discussing""" start="00:00:02.899" video="qanda-overlay" id="subtitle"]]
+[[!template text="""on IRC.""" start="00:00:06.200" video="qanda-overlay" id="subtitle"]]
+[[!template text="""So I see 2 questions coming in already on the""" start="00:00:23.200" video="qanda-overlay" id="subtitle"]]
+[[!template text="""pad. So the first question is,""" start="00:00:24.400" video="qanda-overlay" id="subtitle"]]
+[[!template text="""how did you draw the under braces and over""" start="00:00:26.759" video="qanda-overlay" id="subtitle"]]
+[[!template text="""braces? Sorry, Jeff, you're muted on the blue""" start="00:00:38.360" video="qanda-overlay" id="subtitle"]]
+[[!template text="""button.""" start="00:00:38.559" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm sorry for some reason I'm seeing""" start="00:00:43.340" video="qanda-overlay" id="subtitle"]]
+[[!template text="""everything twice. I'm hearing everything""" start="00:00:45.960" video="qanda-overlay" id="subtitle"]]
+[[!template text="""twice. So it's, it's about with about a 5""" start="00:00:48.420" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: Probably my stream turned on""" start="00:00:53.400" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: second delay. It's straight Oh,""" start="00:00:57.340" video="qanda-overlay" id="subtitle"]]
+[[!template text="""you're right Thank you so much I MPB is""" start="00:01:03.820" video="qanda-overlay" id="subtitle"]]
+[[!template text="""showing the the big blue button Okay,""" start="00:01:07.340" video="qanda-overlay" id="subtitle"]]
+[[!template text="""sorry everyone. Okay now.""" start="00:01:09.060" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I'm together now Let's see How did I draw the""" start="00:01:12.180" video="qanda-overlay" id="subtitle"]]
+[[!template text="""over braces and under braces?""" start="00:01:13.140" video="qanda-overlay" id="subtitle"]]
+[[!template text="""LaTeX. That is a, that's a,""" start="00:01:17.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""yeah, and a SVG, I think,""" start="00:01:25.020" video="qanda-overlay" id="subtitle"]]
+[[!template text="""produced by LaTeX through a separate file.""" start="00:01:29.160" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I tried to do like a LaTeX code block and""" start="00:01:31.960" video="qanda-overlay" id="subtitle"]]
+[[!template text="""didn't get around to it.""" start="00:01:33.940" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Also, the code to produce it in TickSet was""" start="00:01:36.900" video="qanda-overlay" id="subtitle"]]
+[[!template text="""really, really long. So I didn't put it in""" start="00:01:39.800" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: The next question is, you've got a nice""" start="00:01:47.300" video="qanda-overlay" id="subtitle"]]
+[[!template text="""sounding keyboard. What kind is it?""" start="00:01:48.840" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: the notes. GARY ILLYES-CHAKRABARTYTT I'm so""" start="00:01:50.380" video="qanda-overlay" id="subtitle"]]
+[[!template text="""sorry. It is an Ergodox split keyboard for my""" start="00:01:55.960" video="qanda-overlay" id="subtitle"]]
+[[!template text="""wrists. Sorry about the noise.""" start="00:01:59.700" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: Awesome. Yeah, no worries.""" start="00:02:01.020" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I mean, I like to hear it.""" start="00:02:02.220" video="qanda-overlay" id="subtitle"]]
+[[!template text="""We like to hear it. I think a lot of us do.""" start="00:02:03.900" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: Do we have anything on IRC?""" start="00:02:07.080" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Let's see. Someone's asking for ligatures.""" start="00:02:15.880" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Do you have any questions,""" start="00:02:23.420" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Ben? Charles?""" start="00:02:26.100" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: I see a bunch on the path that I can read for""" start="00:02:35.280" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, yeah, please do.""" start="00:02:36.980" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: now. Sure. So next question is,""" start="00:02:39.960" video="qanda-overlay" id="subtitle"]]
+[[!template text="""do you find that the invasive,""" start="00:02:41.580" video="qanda-overlay" id="subtitle"]]
+[[!template text="""quote unquote, 3-formatting interferes with""" start="00:02:44.540" video="qanda-overlay" id="subtitle"]]
+[[!template text="""navigation?""" start="00:02:44.680" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, it does. That is true.""" start="00:02:48.700" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Let me see. Yeah, it's weird.""" start="00:03:01.300" video="qanda-overlay" id="subtitle"]]
+[[!template text="""The good news is that,""" start="00:03:04.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""oh, you know what? The first thing I did,""" start="00:03:06.260" video="qanda-overlay" id="subtitle"]]
+[[!template text="""my first attempt at this,""" start="00:03:07.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I actually made all of the incoming text""" start="00:03:11.140" video="qanda-overlay" id="subtitle"]]
+[[!template text="""invisible and just replaced it with my own""" start="00:03:13.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""text. And that was actually a lot worse.""" start="00:03:15.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""The more of the input that is removed or made""" start="00:03:21.420" video="qanda-overlay" id="subtitle"]]
+[[!template text="""invisible, the harder the navigation becomes.""" start="00:03:23.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""So the fact that now I'm just inserting line""" start="00:03:26.520" video="qanda-overlay" id="subtitle"]]
+[[!template text="""breaks and spaces makes it a lot easier.""" start="00:03:29.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""And I can still search.""" start="00:03:30.540" video="qanda-overlay" id="subtitle"]]
+[[!template text="""And when I get to the destination of the""" start="00:03:34.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""search, I'm still in proper normal text.""" start="00:03:38.300" video="qanda-overlay" id="subtitle"]]
+[[!template text="""So it got a little better by changing my""" start="00:03:41.980" video="qanda-overlay" id="subtitle"]]
+[[!template text="""strategy a bit, but it's still a little bit""" start="00:03:43.740" video="qanda-overlay" id="subtitle"]]
+[[!template text="""of a problem. Let's see.""" start="00:03:50.180" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I'll go look at the etherpad.""" start="00:03:51.720" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Where is it?""" start="00:03:55.080" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: I can read the questions from etherpad if""" start="00:03:57.260" video="qanda-overlay" id="subtitle"]]
+[[!template text="""you'd like me to. And then If at any point""" start="00:04:00.660" video="qanda-overlay" id="subtitle"]]
+[[!template text="""you want to take the questions from IRC,""" start="00:04:02.720" video="qanda-overlay" id="subtitle"]]
+[[!template text="""then feel free to do that as well.""" start="00:04:04.320" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: I found it. Can you show us the key bindings""" start="00:04:07.240" video="qanda-overlay" id="subtitle"]]
+[[!template text="""of your minor map for editing overlays?""" start="00:04:08.940" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Well, I have a minor mode key map for""" start="00:04:15.860" video="qanda-overlay" id="subtitle"]]
+[[!template text="""increasing or decreasing the level of detail.""" start="00:04:21.720" video="qanda-overlay" id="subtitle"]]
+[[!template text="""And the key bindings are like,""" start="00:04:24.640" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I can't remember what it is.""" start="00:04:31.840" video="qanda-overlay" id="subtitle"]]
+[[!template text="""If you go and you look at the source on""" start="00:04:34.080" video="qanda-overlay" id="subtitle"]]
+[[!template text="""GitHub, you can see it there.""" start="00:04:35.640" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I forgot what I bound them to.""" start="00:04:37.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Something that I'm allowed to do.""" start="00:04:40.320" video="qanda-overlay" id="subtitle"]]
+[[!template text="""They have restrictions on what key bindings""" start="00:04:45.860" video="qanda-overlay" id="subtitle"]]
+[[!template text="""you can make in minor modes.""" start="00:04:47.200" video="qanda-overlay" id="subtitle"]]
+[[!template text="""And I carefully followed the directions.""" start="00:04:49.300" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I don't remember what it was.""" start="00:04:50.580" video="qanda-overlay" id="subtitle"]]
+[[!template text="""It's like Control-C-P or something like that.""" start="00:04:54.220" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Or yeah. Sorry. Your examples were with C++""" start="00:05:00.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""if you experiment with any other languages.""" start="00:05:02.640" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I haven't. I guess this is just a perennial""" start="00:05:07.460" video="qanda-overlay" id="subtitle"]]
+[[!template text="""pain point for C++ programmers.""" start="00:05:10.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""So that's kind of why my,""" start="00:05:13.480" video="qanda-overlay" id="subtitle"]]
+[[!template text="""and I am 1, and I guess that's why my focus""" start="00:05:15.680" video="qanda-overlay" id="subtitle"]]
+[[!template text="""was there. You probably have to rewrite some""" start="00:05:17.880" video="qanda-overlay" id="subtitle"]]
+[[!template text="""of the parsers to use something else.""" start="00:05:20.520" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Would it be possible to include overlays in""" start="00:05:24.060" video="qanda-overlay" id="subtitle"]]
+[[!template text="""the source file itself?""" start="00:05:25.080" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I actually don't understand this question.""" start="00:05:30.860" video="qanda-overlay" id="subtitle"]]
+[[!template text="""In the source file itself,""" start="00:05:33.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""there are language modes that do this.""" start="00:05:35.160" video="qanda-overlay" id="subtitle"]]
+[[!template text="""No, I'm not certain I understand that""" start="00:05:41.580" video="qanda-overlay" id="subtitle"]]
+[[!template text="""question. Maybe you could edit it a little""" start="00:05:43.520" video="qanda-overlay" id="subtitle"]]
+[[!template text="""bit more, overlays in the source file.""" start="00:05:45.360" video="qanda-overlay" id="subtitle"]]
+[[!template text="""What are your plans for TSP in the future?""" start="00:05:48.840" video="qanda-overlay" id="subtitle"]]
+[[!template text="""It's a little fragile.""" start="00:05:54.560" video="qanda-overlay" id="subtitle"]]
+[[!template text="""So it might be nice to investigate.""" start="00:06:00.020" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I think you can get the compiler to output""" start="00:06:02.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""error messages in different formats,""" start="00:06:04.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""which might be more parsable or the parsing""" start="00:06:07.320" video="qanda-overlay" id="subtitle"]]
+[[!template text="""might be more maintainable.""" start="00:06:08.360" video="qanda-overlay" id="subtitle"]]
+[[!template text="""That might be an interesting thing to""" start="00:06:10.280" video="qanda-overlay" id="subtitle"]]
+[[!template text="""investigate. And the other thing is I have""" start="00:06:15.460" video="qanda-overlay" id="subtitle"]]
+[[!template text="""just 1 way of reformatting the output where""" start="00:06:19.200" video="qanda-overlay" id="subtitle"]]
+[[!template text="""everything on the same level is vertically""" start="00:06:21.360" video="qanda-overlay" id="subtitle"]]
+[[!template text="""aligned. But I think some people might want""" start="00:06:23.920" video="qanda-overlay" id="subtitle"]]
+[[!template text="""to make more use of the horizontal space on""" start="00:06:26.920" video="qanda-overlay" id="subtitle"]]
+[[!template text="""the screen and take the sort of sibling parts""" start="00:06:30.920" video="qanda-overlay" id="subtitle"]]
+[[!template text="""of the type and line them up straight across""" start="00:06:34.860" video="qanda-overlay" id="subtitle"]]
+[[!template text="""and take up a little bit less vertical space.""" start="00:06:39.140" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Enriched mode. I don't know what enriched""" start="00:06:47.560" video="qanda-overlay" id="subtitle"]]
+[[!template text="""mode is. Interesting. Oh,""" start="00:06:51.240" video="qanda-overlay" id="subtitle"]]
+[[!template text="""what's my repository link?""" start="00:06:52.720" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Let me get that then. I don't know how to""" start="00:06:56.400" video="qanda-overlay" id="subtitle"]]
+[[!template text="""format this properly, but it's just troll""" start="00:07:00.620" video="qanda-overlay" id="subtitle"]]
+[[!template text="""slash tspute. Yeah, it's on GitHub.""" start="00:07:03.820" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Something like that. Let's see.""" start="00:07:14.820" video="qanda-overlay" id="subtitle"]]
+[[!template text="""This looks like the Etherpad.""" start="00:07:16.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""It looks like all the Etherpad questions.""" start="00:07:19.640" video="qanda-overlay" id="subtitle"]]
+[[!template text="""We have 1 here from Charles.""" start="00:07:22.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Can overlays work as hypertext so you can""" start="00:07:24.960" video="qanda-overlay" id="subtitle"]]
+[[!template text="""link an error message back to the source?""" start="00:07:26.680" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Yeah, actually, that's done by default in""" start="00:07:30.720" video="qanda-overlay" id="subtitle"]]
+[[!template text="""compilation mode. That's 1 of the features""" start="00:07:32.680" video="qanda-overlay" id="subtitle"]]
+[[!template text="""you get, which has been around for literally""" start="00:07:36.160" video="qanda-overlay" id="subtitle"]]
+[[!template text="""decades. Oh, yeah. Is it already there?""" start="00:07:41.280" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Yes, it's already there.""" start="00:07:42.240" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Let's see. Do we have anything on IRC?""" start="00:07:45.960" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Let me see. OK, looks like it seems like""" start="00:07:56.680" video="qanda-overlay" id="subtitle"]]
+[[!template text="""we've run out of questions.""" start="00:07:58.000" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Is that true?""" start="00:07:58.860" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, it seems so. It seems so,""" start="00:08:04.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""although we still have a couple more minutes,""" start="00:08:06.820" video="qanda-overlay" id="subtitle"]]
+[[!template text="""like maybe 3, 4 minutes on the stream.""" start="00:08:09.000" video="qanda-overlay" id="subtitle"]]
+[[!template text="""So yeah. And then, of course,""" start="00:08:13.780" video="qanda-overlay" id="subtitle"]]
+[[!template text="""once the stream does move on to the next""" start="00:08:15.800" video="qanda-overlay" id="subtitle"]]
+[[!template text="""talk. Folks are welcome to join Jeff here on""" start="00:08:19.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""BigBlueButton. If Jeff still has a few more""" start="00:08:22.340" video="qanda-overlay" id="subtitle"]]
+[[!template text="""minutes to just chat here or ask questions""" start="00:08:24.640" video="qanda-overlay" id="subtitle"]]
+[[!template text="""here, that works as well.""" start="00:08:25.800" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: JEFF CROSSMAN-WILSONEY-PORTMAN Yeah,""" start="00:08:26.920" video="qanda-overlay" id="subtitle"]]
+[[!template text="""if anyone's excited about the tool.""" start="00:08:29.640" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Are the notes are available online,""" start="00:08:38.460" video="qanda-overlay" id="subtitle"]]
+[[!template text="""right? I uploaded an org file that was my""" start="00:08:42.100" video="qanda-overlay" id="subtitle"]]
+[[!template text="""talk, and I actually included some""" start="00:08:43.700" video="qanda-overlay" id="subtitle"]]
+[[!template text="""references. Like at the end,""" start="00:08:48.900" video="qanda-overlay" id="subtitle"]]
+[[!template text="""there's some links and stuff like that.""" start="00:08:50.860" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Whenever you see like a underlined thing in""" start="00:08:54.620" video="qanda-overlay" id="subtitle"]]
+[[!template text="""my presentation, it's like I was kind of""" start="00:08:56.840" video="qanda-overlay" id="subtitle"]]
+[[!template text="""thinking people would have access to the""" start="00:08:58.520" video="qanda-overlay" id="subtitle"]]
+[[!template text="""actual presentation itself so they could go""" start="00:09:00.920" video="qanda-overlay" id="subtitle"]]
+[[!template text="""and see what it was I was linking to some PDF""" start="00:09:04.640" video="qanda-overlay" id="subtitle"]]
+[[!template text="""somewhere. How annoying is this for multiple""" start="00:09:07.540" video="qanda-overlay" id="subtitle"]]
+[[!template text="""compilers? It's annoying,""" start="00:09:09.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Ben. I basically have separate parsers for""" start="00:09:15.620" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Clang and GCC, and I'm not supporting MSVC at""" start="00:09:18.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""the moment. So yeah, that's where I do worry""" start="00:09:23.540" video="qanda-overlay" id="subtitle"]]
+[[!template text="""about its fragility, about the way I'm kind""" start="00:09:26.520" video="qanda-overlay" id="subtitle"]]
+[[!template text="""of parsing these error messages,""" start="00:09:27.720" video="qanda-overlay" id="subtitle"]]
+[[!template text="""which are idiosyncratic.""" start="00:09:29.340" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Oh, yeah, great. Thank you,""" start="00:09:38.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Amin. That's good. Should just follow that""" start="00:09:49.060" video="qanda-overlay" id="subtitle"]]
+[[!template text="""link, I guess.""" start="00:09:49.600" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, yeah, it's so that you have to scroll""" start="00:09:56.420" video="qanda-overlay" id="subtitle"]]
+[[!template text="""down a little bit underneath the video""" start="00:09:59.020" video="qanda-overlay" id="subtitle"]]
+[[!template text="""embedding itself. There's timestamps.""" start="00:10:00.460" video="qanda-overlay" id="subtitle"]]
+[[!template text="""And then below the timestamps,""" start="00:10:01.880" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I see a bunch of links,""" start="00:10:03.240" video="qanda-overlay" id="subtitle"]]
+[[!template text="""including 1 that says download.org.""" start="00:10:06.140" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, let's see what that is.""" start="00:10:09.800" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Is that the right 1? Yeah,""" start="00:10:13.080" video="qanda-overlay" id="subtitle"]]
+[[!template text="""that's it. That's the 1.""" start="00:10:14.780" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Yeah, you can also see all of my hacks to Org""" start="00:10:19.280" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Present are in there as well.""" start="00:10:20.740" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I followed the System Crafters thing and made""" start="00:10:25.760" video="qanda-overlay" id="subtitle"]]
+[[!template text="""a bunch of my own modifications.""" start="00:10:27.160" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Org Present has this problem where every""" start="00:10:33.120" video="qanda-overlay" id="subtitle"]]
+[[!template text="""heading is a slide, which I don't like.""" start="00:10:35.760" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I kind of want hierarchy.""" start="00:10:37.080" video="qanda-overlay" id="subtitle"]]
+[[!template text="""You know? Oh, no. Sorry.""" start="00:10:41.040" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Every level 1 heading is a slide.""" start="00:10:43.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""And I kind of want hierarchy among the""" start="00:10:46.360" video="qanda-overlay" id="subtitle"]]
+[[!template text="""slides. And I had to sort of invent it in""" start="00:10:51.440" video="qanda-overlay" id="subtitle"]]
+[[!template text="""that system myself through navigation.""" start="00:10:54.320" video="qanda-overlay" id="subtitle"]]
+[[!template text="""It looks like things have quieted down.""" start="00:11:03.800" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Shall we call it?""" start="00:11:09.520" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, sure. So yeah, thanks again for the""" start="00:11:14.020" video="qanda-overlay" id="subtitle"]]
+[[!template text="""great talk, Jeff. And also to the audience""" start="00:11:17.780" video="qanda-overlay" id="subtitle"]]
+[[!template text="""for questions and discussions.""" start="00:11:18.960" video="qanda-overlay" id="subtitle"]]
+[[!template text="""People are welcome to stay here on BBB if""" start="00:11:21.720" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Jeff has time to continue the discussions and""" start="00:11:24.060" video="qanda-overlay" id="subtitle"]]
+[[!template text="""ask any questions they might have.""" start="00:11:25.320" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Otherwise, yeah, we can wrap it.""" start="00:11:26.820" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure. Thank you so much.""" start="00:11:29.200" video="qanda-overlay" id="subtitle"]]
+[[!template text="""And I love this conference.""" start="00:11:30.400" video="qanda-overlay" id="subtitle"]]
+[[!template text="""I've been a happy attendee since like 2015 or""" start="00:11:33.900" video="qanda-overlay" id="subtitle"]]
+[[!template text="""something. So yeah, it's great.""" start="00:11:36.760" video="qanda-overlay" id="subtitle"]]
+[[!template text="""Thank you for your work.""" start="00:11:37.760" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you. Cheers. I mean,""" start="00:11:41.040" video="qanda-overlay" id="subtitle"]]
+[[!template text="""in large part, thanks to awesome people like""" start="00:11:43.080" video="qanda-overlay" id="subtitle"]]
+[[!template text="""you who give these amazing talks.""" start="00:11:44.280" video="qanda-overlay" id="subtitle"]]
+[[!template text="""So Thank you as well.""" start="00:11:45.420" video="qanda-overlay" id="subtitle"]]
+[[!template text="""[Speaker 1]: You are currently the only person in this""" start="00:14:30.260" video="qanda-overlay" id="subtitle"]]
+[[!template text="""conference.""" start="00:14:30.460" video="qanda-overlay" id="subtitle"]]
+[[!template text="""You""" start="00:21:15.260" video="qanda-overlay" id="subtitle"]]
+[[!template text="""1""" start="00:21:37.760" video="qanda-overlay" id="subtitle"]]
+[[!template text="""1 1 1 1 2 1 2 1 2 1 1 3 4 1 2 4 1 1 3 4 1 1 2""" start="00:22:23.260" video="qanda-overlay" id="subtitle"]]
+[[!template text="""3 3 4 1 2 1""" start="00:22:28.100" video="qanda-overlay" id="subtitle"]]
+[[!template text="""You""" start="00:24:41.445" video="qanda-overlay" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20overlay%3A%20Improving%20compiler%20diagnostics%20with%20overlays)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/overlay-before.md b/2023/info/overlay-before.md
new file mode 100644
index 00000000..03bcd74e
--- /dev/null
+++ b/2023/info/overlay-before.md
@@ -0,0 +1,46 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 21-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="overlay-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="overlay-mainVideo" data="""
+00:00.000 Introduction
+00:33.560 Overlays and what they can do
+02:02.500 Simple overlay example - creating an overlay
+02:35.700 Adding properties
+03:10.940 Deleting an overlay
+03:24.660 Setting fonts the right way
+03:59.540 More properties
+04:12.580 Visibility
+04:49.780 Adding text
+05:27.820 Custom properties
+05:45.380 Notes on properties
+06:36.100 Improving C++ compiler output
+08:17.680 The problem with C++ error messages
+08:30.240 Many standard class templates have default arguments
+08:47.520 Some types are aliases for longer things, too
+09:20.960 Reporting type information accurately means long lines
+10:18.240 Emacs can help - Treat C++ type names as just another kind of balanced expression
+11:49.320 Add overlays to improve readability
+12:22.400 Create a minor mode that runs during compilation
+12:59.500 Parsing types as balanced expressions
+14:16.100 Indent and fill with overlays - Use ancient "pretty printing" algorithms"
+14:52.260 Overlays can mimic line breaks and indentation
+15:14.520 Hiding details - Marking depths with overlays
+17:12.660 Hiding to a target depth
+18:04.900 Demo
+20:10.220 Conclusion
+
+"""]]<div></div>Duration: 20:57 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--expr_depth.svg">Download --expr_depth.svg</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--main.opus">Download --main.opus (15MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--main.webm">Download --main.webm (63MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--testdata.org">Download --testdata.org</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull.org">Download .org</a></li><li><a href="https://toobnix.org/w/5fJkawU4R9b1dJq5BcDykx">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="overlay-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="overlay-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--answers.opus"></audio></div><div></div>Duration: 11:48 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--answers.opus">Download --answers.opus (12MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull--answers.webm">Download --answers.webm (20MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/overlay-nav.md b/2023/info/overlay-nav.md
new file mode 100644
index 00000000..ba04cc37
--- /dev/null
+++ b/2023/info/overlay-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/llm">LLM clients in Emacs, functionality and standardization</a>
+Next by track: <a href="/2023/talks/eval">Editor Integrated REPL Driven Development for all languages</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/parallel-after.md b/2023/info/parallel-after.md
new file mode 100644
index 00000000..2f390ff8
--- /dev/null
+++ b/2023/info/parallel-after.md
@@ -0,0 +1,631 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="parallel-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Hi everyone!""" start="00:00:00.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Welcome to our talk on Parallel Text Replacement.""" start="00:00:01.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""My name is Lovro, and I'll be telling you about an""" start="00:00:04.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""interesting problem that my friend Valentino and I""" start="00:00:07.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""set out to solve one afternoon.""" start="00:00:09.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We will describe the problem, take a look at some""" start="00:00:11.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""of the existing work and then present our solution.""" start="00:00:13.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Afterwards, we will show some demos and conclude""" start="00:00:16.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""with a quick overview of the implementation.""" start="00:00:19.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Let's get straight into it!""" start="00:00:21.520" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Problem: Goal""" start="00:00:23.440" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Here is a problem that most of us have dealt with""" start="00:00:23.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""at some point.""" start="00:00:25.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Assume we have a piece of code such as the following.""" start="00:00:27.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We use a code example here, but in general what we're""" start="00:00:29.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""about to discuss can be applied to any piece of text.""" start="00:00:32.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""After a bit of thinking, we decide that the names of""" start="00:00:35.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""the two variables, &quot;foo&quot; and &quot;bar&quot;, should actually be""" start="00:00:37.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""swapped.""" start="00:00:39.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""That is, &quot;foo&quot; should be replaced with &quot;bar&quot;, and &quot;bar&quot;""" start="00:00:40.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""should be replaced with &quot;foo&quot;.""" start="00:00:43.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The question is: what is a good way to achieve this?""" start="00:00:45.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We could perform the edits manually if the code is""" start="00:00:49.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""small enough, and we might even be done reasonably""" start="00:00:51.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""quickly.""" start="00:00:53.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""However, consider two things.""" start="00:00:54.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Imagine the usual case where there's just too much""" start="00:00:56.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""code to edit by hand.""" start="00:00:58.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We have no other option than to automate the task.""" start="00:01:00.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""More importantly though, we have a whole programmable""" start="00:01:03.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""text editor right at our fingertips.""" start="00:01:06.120" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We should object to doing things that the computer""" start="00:01:08.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""can do for us.""" start="00:01:10.280" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Problem: Naive Multi-pass""" start="00:01:12.360" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""So, one way to automate it is by using our old friend""" start="00:01:12.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""query-replace (M-%) multiple times in a sequence.""" start="00:01:15.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We first do a pass where we replace &quot;foo&quot; with &quot;bar&quot;,""" start="00:01:19.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""then we do another pass where we replace &quot;bar&quot; with &quot;foo&quot;.""" start="00:01:22.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""But that's clearly not right.""" start="00:01:25.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We all know that this naive multi-pass approach""" start="00:01:26.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""doesn't work because it results in interference""" start="00:01:29.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""between the two replacements.""" start="00:01:31.560" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Problem: Clever Multi-pass""" start="00:01:34.200" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Instead, we have to be a bit more clever.""" start="00:01:34.200" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We should first replace &quot;foo&quot; with a temporary string,""" start="00:01:36.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""in this case &quot;oof&quot;, that we will call a &quot;token&quot;.""" start="00:01:39.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""To avoid interference, we must be careful to ensure""" start="00:01:42.120" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""that the token does not contain whatever we're about""" start="00:01:45.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""to replace next.""" start="00:01:48.120" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Then we do a second pass to replace &quot;bar&quot; with &quot;foo&quot;,""" start="00:01:49.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and finally a third pass to replace the token with &quot;bar&quot;.""" start="00:01:52.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This gives us the result we want.""" start="00:01:56.080" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Problem: Terminology""" start="00:01:57.720" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Putting the implementation aside for a moment, this style""" start="00:01:57.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""of text replacement, where we replace multiple sources""" start="00:02:01.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""with their targets, without running into interference""" start="00:02:05.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""issues between replacement pairs, is what we call""" start="00:02:09.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""a &quot;parallel replacement&quot;.""" start="00:02:11.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This is the essence of the problem we're trying to solve.""" start="00:02:12.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The examples with swapping that we've shown so far""" start="00:02:16.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""are really just one of the many use cases that are""" start="00:02:18.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""supported by a general parallel replacement utility.""" start="00:02:21.320" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""To avoid confusion, let us clarify that the word &quot;parallel&quot;""" start="00:02:25.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""is not in reference to hardware parallelization, but""" start="00:02:28.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""rather comes from analogy with the Lisp let operator,""" start="00:02:31.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""where the bindings of variables are performed in parallel,""" start="00:02:34.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""rather than sequentially as in let*.""" start="00:02:38.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Parallel in this context means that none of the bindings""" start="00:02:40.200" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""are in scope within any of the initial value forms.""" start="00:02:43.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""In other words, just like a let's initialization form""" start="00:02:46.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""cannot refer to any of the earlier bindings, a""" start="00:02:50.200" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""replacement pair's source should not be able to replace""" start="00:02:53.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""the previously substituted targets of any other pair.""" start="00:02:56.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This is what we mean by &quot;no interference&quot;.""" start="00:03:00.200" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Problem: Scaling Multi-pass""" start="00:03:04.440" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""However, manually invoking multiple carefully chosen""" start="00:03:04.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""query-replace commands gets old very quickly.""" start="00:03:08.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Say we scaled up the problem and wanted to perform n""" start="00:03:11.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""swaps instead of just two, e.g. to swap, or rather,""" start="00:03:14.200" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""rotate, &quot;foo&quot; to &quot;bar&quot;, &quot;bar&quot; to &quot;baz&quot;, &quot;baz&quot; to &quot;quux&quot;""" start="00:03:18.320" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and &quot;quux&quot; to &quot;foo&quot;.""" start="00:03:22.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We would first have to perform n - 1 additional""" start="00:03:23.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""replacements to introduce the necessary tokens,""" start="00:03:26.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""effectively doubling the number of steps.""" start="00:03:29.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Even if we tried to automate this, think about what""" start="00:03:32.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""tokens the code would have to generate if we had no""" start="00:03:34.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""prior knowledge of the replacement pairs given by the""" start="00:03:37.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""user.""" start="00:03:40.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We would have to program defensively and use long""" start="00:03:41.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""randomly-generated strings that, one, hopefully do""" start="00:03:44.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""not interfere with any of the replacement pairs,""" start="00:03:47.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and two, might slow down the search if they're overly long.""" start="00:03:50.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Can we do better?""" start="00:03:53.480" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Solution: Single-pass""" start="00:03:55.920" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Yes we can!""" start="00:03:55.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We can actually perform just a single pass.""" start="00:03:56.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The trick is to alternate between the replacement""" start="00:03:59.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""pairs, replacing whichever source occurs the earliest,""" start="00:04:02.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and making sure to continue scanning after the end""" start="00:04:06.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""of the substituted target in order to avoid interference.""" start="00:04:08.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This interleaving of replacements is not something""" start="00:04:12.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""that's easy to do by hand with query-replace.""" start="00:04:14.520" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Solution: Existing""" start="00:04:18.240" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Since this is Emacs we're talking about, of course""" start="00:04:18.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""there already exist solutions that implement this idea.""" start="00:04:20.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Here are few that we could find.""" start="00:04:23.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The EmacsWiki has a page dedicated to this problem.""" start="00:04:25.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Stack Overflow has an old post where a couple of""" start="00:04:28.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""users provided their solutions.""" start="00:04:31.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Mastering Emacs also gives a method along with other""" start="00:04:33.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""interesting query-replace-regexp (C-M-%) patterns.""" start="00:04:36.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""More recently, Tony Zorman made a blogpost providing""" start="00:04:39.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""a solution with an interface based on query-replace.""" start="00:04:42.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""I encourage you to take a look at these solutions if""" start="00:04:45.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""you're interested in the details.""" start="00:04:47.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""But while a step in the right direction, these solutions""" start="00:04:50.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""are not satisfactory because they all lack one or""" start="00:04:53.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""more of the following.""" start="00:04:55.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""One, they are not completely automated and require""" start="00:04:56.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""the user to come up with a relatively complicated""" start="00:05:00.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and verbose query-replace-regexp invocation.""" start="00:05:02.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Two, they are restricted to performing only 2-element""" start="00:05:06.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""swaps rather than general parallel replacements.""" start="00:05:09.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Three, they don't provide any sort of interactivity""" start="00:05:12.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""during replacement and instead perform it in one shot.""" start="00:05:15.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Four, they don't attempt to integrate with the familiar""" start="00:05:18.620" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""query-replace interface, which supports skipping, undo,""" start="00:05:21.400" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""history and more advanced features like Lisp expressions""" start="00:05:25.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and recursive query edits.""" start="00:05:28.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Most importantly however, five, none of them were""" start="00:05:30.700" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""designed with regular expressions in mind and instead""" start="00:05:33.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""only ever consider literal strings.""" start="00:05:36.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""In fact, the only one that comes close is the""" start="00:05:39.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""half-automated solution that invokes query-replace-regexp""" start="00:05:43.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""with a specially crafted replacement.""" start="00:05:46.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""As an example, here's how you would use this technique""" start="00:05:48.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""to perform a 3-element parallel regex replacement.""" start="00:05:51.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""It uses the backslash-comma Lisp expression feature""" start="00:05:54.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""in order to choose the appropriate target to substitute.""" start="00:05:57.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Aside from being very clumsy and tedious to write out,""" start="00:06:01.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""this approach makes it really hard to use more complex""" start="00:06:03.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""regular expressions that make use of capture groups""" start="00:06:06.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""themselves.""" start="00:06:09.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This was the biggest limitation that we wanted""" start="00:06:10.800" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""to get rid of and the main motivation for our work.""" start="00:06:12.200" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""So, as an alternative to the existing zoo of 80% solutions,""" start="00:06:15.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""we aim to provide a 100% solution, one that handles""" start="00:06:19.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""regexes and consolidates all of the existing ideas""" start="00:06:24.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""into a single package.""" start="00:06:27.120" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Solution: query-replace-parallel""" start="00:06:29.080" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""We call it query-replace-parallel.""" start="00:06:29.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The package is free and open-source and can currently""" start="00:06:31.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""be found on GitHub under hokomo/query-replace-parallel.""" start="00:06:34.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The name is not yet finalized and we're open to any""" start="00:06:37.400" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""suggestions.""" start="00:06:40.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We hope to get it published on an Elisp""" start="00:06:41.503" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""package archive in the near future, but for now you""" start="00:06:43.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""can just download and load the main Elisp file manually.""" start="00:06:45.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""With all of that said, let's go through a few demos""" start="00:06:48.900" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""to illustrate some use cases and see how to use the package.""" start="00:06:51.400" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Demonstration: Swap""" start="00:06:55.240" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Our first demo is a simple swap, like the one we""" start="00:06:55.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""showed at the beginning of the presentation.""" start="00:06:57.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This chunk of text is actually one of the tests""" start="00:06:59.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""from our package's code.""" start="00:07:02.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Assuming we have loaded the package, we can execute""" start="00:07:03.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""the query-replace-parallel command, a parallel version""" start="00:07:06.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""of the standard query-replace.""" start="00:07:09.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This command works with literal strings and will""" start="00:07:11.320" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""ask for each source and target in turn.""" start="00:07:14.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Our goal is to replace &quot;foo&quot; with &quot;bar&quot;""" start="00:07:16.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and &quot;bar&quot; with &quot;foo&quot;.""" start="00:07:21.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""After inputting our replacements, we terminate the""" start="00:07:24.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""prompt by pressing enter with empty input.""" start="00:07:27.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""At this point, everything functions the same as in""" start="00:07:29.860" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""a standard query-replace invocation.""" start="00:07:32.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The echo area shows the match and the replacement""" start="00:07:35.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""we're about to make.""" start="00:07:37.400" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We can perform replacements,""" start="00:07:38.703" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""undo them,""" start="00:07:43.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""skip them,""" start="00:07:46.503" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""execute them until the end,""" start="00:07:49.203" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and so on.""" start="00:07:50.240" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Demonstration: LaTeX""" start="00:07:53.970" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""The second demo shows our first regex use case.""" start="00:07:53.970" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Imagine we have the following LaTeX code.""" start="00:07:56.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We realize that we haven't been completely consistent""" start="00:07:58.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""in our use and naming of macros, so we decide to""" start="00:08:01.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""fix the problem.""" start="00:08:04.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This time we execute query-replace-parallel-regexp""" start="00:08:05.536" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""because we want to work with regex instead of literal""" start="00:08:08.400" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""strings.""" start="00:08:11.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We want to achieve two things.""" start="00:08:12.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""First, we want to wrap all usages of the variable n""" start="00:08:13.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""with the natvar macro.""" start="00:08:16.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Using the backslash-less-than and blackslash-greater-than""" start="00:08:18.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""constructs allows us to only match letters n not""" start="00:08:21.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""appearing as part of a larger word.""" start="00:08:23.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Second, we want to rename natvar to intvar because""" start="00:08:25.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""the variables a, b and c are integers and not natural""" start="00:08:29.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""numbers.""" start="00:08:32.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We enter empty input to terminate the prompt and can""" start="00:08:33.300" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""now perform the replacements.""" start="00:08:35.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""There we go, the fixes are done and we didn't have""" start="00:08:42.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""to think about in which order to apply them.""" start="00:08:44.480" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Demonstration: Regex""" start="00:08:48.700" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""We now take a look at a more complicated regex""" start="00:08:48.700" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""example to demonstrate that even advanced query-replace""" start="00:08:51.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""features are supported.""" start="00:08:53.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Each &quot;foo&quot; and &quot;bar&quot; in this example is followed by""" start="00:08:55.100" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""a number.""" start="00:08:57.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The goal is to not only swap &quot;foo&quot; and &quot;bar&quot;, but""" start="00:08:58.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""also increase or decrease the corresponding number.""" start="00:09:01.380" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We first match &quot;foo&quot; and capture the number that""" start="00:09:03.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""follows it.""" start="00:09:06.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""For the target, we make use of the backslash-comma""" start="00:09:07.200" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Lisp expression feature in order to replace the""" start="00:09:10.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""match with &quot;bar&quot; followed by the number's successor.""" start="00:09:12.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We do the same thing for &quot;bar&quot;, except that we""" start="00:09:15.540" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""replace the number with its predecessor.""" start="00:09:17.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Performing the replacements, we can see how each""" start="00:09:27.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""number is incremented or decremented appropriately.""" start="00:09:29.120" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Demonstration: Order""" start="00:09:36.320" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""We haven't covered it explicitly so some of you may""" start="00:09:36.320" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""be wondering how parallel replacement deals with""" start="00:09:38.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""overlapping matches and whether the order of the""" start="00:09:41.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""replacement pairs is significant.""" start="00:09:43.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This demo will clarify the exact behavior.""" start="00:09:45.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The first example has the sources &quot;watch&quot; and &quot;stopwatch&quot;.""" start="00:09:48.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Conceptually, the matches overlap, but the rule is""" start="00:09:57.500" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""that matches are always processed earliest first,""" start="00:10:00.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""regardless of their length or the ordering of the pairs.""" start="00:10:03.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Therefore it is &quot;stopwatch&quot; that gets replaced,""" start="00:10:06.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and not its substring &quot;watch&quot;.""" start="00:10:09.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The second example uses the sources &quot;watch&quot; and &quot;watchword&quot;.""" start="00:10:16.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Both of the matches now conceptually start at the same""" start="00:10:19.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""position.""" start="00:10:22.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""In situations like these the order of the pairs does""" start="00:10:23.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""matter, and ties are broken by prefering the pair that""" start="00:10:26.400" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""was entered first, which is behavior that is inherited""" start="00:10:29.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""from the Elisp regex engine.""" start="00:10:32.280" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""So, the substring &quot;watch&quot; in &quot;watchword&quot; is what gets""" start="00:10:34.460" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""replaced in this case.""" start="00:10:37.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Situations where the order of the pairs is significant""" start="00:10:39.460" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""are not very common however, so the user generally""" start="00:10:41.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""doesn't have to worry about this edge case.""" start="00:10:44.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The order only matters when two or more sources""" start="00:10:46.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""share the same prefix, as in this example.""" start="00:10:49.960" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Demonstration: Fun""" start="00:10:54.440" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""The final demo tests the limits of the package and""" start="00:10:54.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""shows that it fully integrates with query-replace.""" start="00:10:56.960" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""It is really just for fun and can even serve as a""" start="00:10:59.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""small Emacs brainteaser.""" start="00:11:03.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""See if you can keep up!""" start="00:11:04.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We open a directory and enter Writable Dired mode""" start="00:11:06.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""in order to rename the directories &quot;foo&quot; and &quot;bar&quot;.""" start="00:11:09.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Instead of doing it quickly by hand, we decide to""" start="00:11:11.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""show off and use query-replace-parallel-regexp.""" start="00:11:14.760" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We enter our pairs and make use of the""" start="00:11:17.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""backslash-question-mark query edit feature.""" start="00:11:20.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Now whenever we perform a replacement, the query""" start="00:11:25.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""edit makes Emacs stop and prompt us for additional""" start="00:11:27.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""input to use as the target.""" start="00:11:30.840" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We confirm the renames and now enter the &quot;bar-lib&quot;""" start="00:11:36.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""directory in order to perform the same kind of""" start="00:11:39.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""replacement on &quot;baz&quot; and &quot;quux&quot;.""" start="00:11:42.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Rather than save time, we decide to be extra lazy""" start="00:11:44.500" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and take the long route.""" start="00:11:47.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We recall the first pair and initiate a recursive""" start="00:11:48.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""invocation of query-replace-parallel-regexp.""" start="00:11:52.320" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We are now replacing the replacement.""" start="00:11:54.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We apply our fixes and then do the same thing again""" start="00:12:01.020" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""with the second pair.""" start="00:12:04.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Recall and recurse.""" start="00:12:05.970" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We confirm the prompt and finally rename our directories.""" start="00:12:16.300" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Wow, that really paid off.""" start="00:12:25.360" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""Implementation""" start="00:12:29.120" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""Before we finish, a few quick words about the""" start="00:12:29.120" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""implementation for the curious.""" start="00:12:31.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Both query-replace-parallel and query-replace-parallel-regexp""" start="00:12:33.300" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""delegate to the complex perform-replace function""" start="00:12:36.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""which is the workhorse of query-replace's interactive""" start="00:12:39.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""mechanism.""" start="00:12:41.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The way we achieve multiple interleaved replacements""" start="00:12:43.120" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""is by providing perform-replace with a big &quot;matcher regex&quot;""" start="00:12:45.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and a special replacement function.""" start="00:12:49.120" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Essentially, a complex parallel replacement like this""" start="00:12:50.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""is transformed into a standard replacement like this.""" start="00:12:54.400" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This is similar to the trick shown earlier in the""" start="00:12:57.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""presentation.""" start="00:13:00.200" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Each source is put in its own capture group to allow""" start="00:13:00.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""the replacement function to determine which one matched""" start="00:13:03.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""and return the appropriate target.""" start="00:13:06.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""However, we now take care to support arbitrary""" start="00:13:08.980" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""regular expressions as sources.""" start="00:13:11.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We achieve this by converting each source regex into""" start="00:13:13.480" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""an equivalent one for which we can guarantee that its""" start="00:13:17.080" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""capture groups will not clash with our matcher regex.""" start="00:13:19.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Information about this conversion is stored, and""" start="00:13:22.920" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""once the replacement function is called it has""" start="00:13:26.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""enough data to apply the replacement from the""" start="00:13:28.320" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""viewpoint of the original regex.""" start="00:13:30.360" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""The regex transformation is reliable because it""" start="00:13:32.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""uses the rx library, allowing us to treat regexes""" start="00:13:35.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""as s-expressions and avoid any nasty manual parsing.""" start="00:13:38.520" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""In fact, rx itself is based on one of Olin Shivers'""" start="00:13:42.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""100% solutions:""" start="00:13:46.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""SRE, or the S-expression regex notation.""" start="00:13:48.436" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""We all stand on the shoulders of many giants, so""" start="00:13:51.320" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""let's strive to design good solutions that we can""" start="00:13:54.440" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""all benefit from, many years into the future!""" start="00:13:56.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Finally, because query-replace's core is not completely""" start="00:13:59.240" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""customizable, we did have to sprinkle in some advice""" start="00:14:03.000" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""to get certain things working.""" start="00:14:06.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""This concerns only minor cosmetic fixes and not the""" start="00:14:07.600" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""core replacement functionality, but we have nontheless""" start="00:14:11.160" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""tried to do it in the simplest and least intrusive way""" start="00:14:14.040" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""possible.""" start="00:14:16.680" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template new="1" text="""End""" start="00:14:18.740" video="mainVideo-parallel" id="subtitle"]]
+
+[[!template text="""In conclusion, go download and play with the package.""" start="00:14:18.740" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Even if you're not performing overlapping replacements,""" start="00:14:21.680" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""you can still use query-replace-parallel for the""" start="00:14:24.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""peace of mind knowing that things won't go wrong if""" start="00:14:26.880" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""you perform more than one replacement at a time.""" start="00:14:29.720" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Feel free to let us know about any interesting or""" start="00:14:32.460" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""crazy use cases you might come up with, as well as""" start="00:14:34.640" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""improvements or bugs that make it only a 99% solution.""" start="00:14:37.560" video="mainVideo-parallel" id="subtitle"]]
+[[!template text="""Thanks for listening and have a great EmacsConf!""" start="00:14:40.640" video="mainVideo-parallel" id="subtitle"]]
+
+<a name="parallel-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: And I think we are live.""" start="00:00:08.620" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Hello again, everyone.""" start="00:00:09.620" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And hi, Lovro. How are you doing?""" start="00:00:10.940" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Just a second. Should I join the other room?""" start="00:00:15.339" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, no, no, you can stay here.""" start="00:00:18.460" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: I can stay in the backstage.""" start="00:00:20.860" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Everything is fine. I don't think you are""" start="00:00:24.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""technically in the backstage right now you're""" start="00:00:25.520" video="qanda-parallel" id="subtitle"]]
+[[!template text="""just in Big Blue Button with us.""" start="00:00:26.750" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh thanks. Oh because I have 2 of them open I""" start="00:00:30.040" video="qanda-parallel" id="subtitle"]]
+[[!template text="""thought there were 2 different rooms.""" start="00:00:30.920" video="qanda-parallel" id="subtitle"]]
+[[!template text="""1 is the backstage and the other,""" start="00:00:32.720" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: whichever, I can hear you and so can the""" start="00:00:38.239" video="qanda-parallel" id="subtitle"]]
+[[!template text="""stream, so don't worry too much about which""" start="00:00:39.840" video="qanda-parallel" id="subtitle"]]
+[[!template text="""is the backstage and which is the front page.""" start="00:00:41.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: I have no idea. Well, great,""" start="00:00:41.540" video="qanda-parallel" id="subtitle"]]
+[[!template text="""great. Okay, yeah. Yeah,""" start="00:00:43.660" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I'm doing great, just to answer your""" start="00:00:45.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""question.""" start="00:00:45.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, great, great, Okay,""" start="00:00:47.379" video="qanda-parallel" id="subtitle"]]
+[[!template text="""well splendid. So, I've pasted a link again""" start="00:00:49.900" video="qanda-parallel" id="subtitle"]]
+[[!template text="""on IRC if you want to ask your questions,""" start="00:00:51.520" video="qanda-parallel" id="subtitle"]]
+[[!template text="""and I'd invite you to do so,""" start="00:00:53.000" video="qanda-parallel" id="subtitle"]]
+[[!template text="""because we have about 9 minutes of laborious""" start="00:00:54.620" video="qanda-parallel" id="subtitle"]]
+[[!template text="""time to answer as many of them as possible.""" start="00:00:56.580" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And I'm going to start with the first 1.""" start="00:00:58.360" video="qanda-parallel" id="subtitle"]]
+[[!template text="""This looks great and was very well-presented.""" start="00:01:01.100" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Do you have plans to upstream this""" start="00:01:03.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""functionality into Emacs?""" start="00:01:04.239" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's a good idea. That's something we""" start="00:01:08.000" video="qanda-parallel" id="subtitle"]]
+[[!template text="""thought about as well.""" start="00:01:08.860" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Currently, we haven't really contacted anyone""" start="00:01:11.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""to do this. Also, the current implementation,""" start="00:01:16.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""so as I mentioned in the presentation towards""" start="00:01:19.760" video="qanda-parallel" id="subtitle"]]
+[[!template text="""the end, so we use a little bit of advice to""" start="00:01:22.120" video="qanda-parallel" id="subtitle"]]
+[[!template text="""sort of patch some functionality of query""" start="00:01:24.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""replace because not everything was easy to""" start="00:01:26.479" video="qanda-parallel" id="subtitle"]]
+[[!template text="""implement. The core functionality luckily""" start="00:01:28.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""was, But there's a couple of fixes we need to""" start="00:01:32.220" video="qanda-parallel" id="subtitle"]]
+[[!template text="""apply to the message function in order to""" start="00:01:34.200" video="qanda-parallel" id="subtitle"]]
+[[!template text="""display a nice message in the echo buffer""" start="00:01:36.380" video="qanda-parallel" id="subtitle"]]
+[[!template text="""because this doesn't happen on its own when""" start="00:01:39.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""we're using this trick with this big regex""" start="00:01:41.100" video="qanda-parallel" id="subtitle"]]
+[[!template text="""and whatnot. So I don't think that the code""" start="00:01:45.360" video="qanda-parallel" id="subtitle"]]
+[[!template text="""as it is would be upstreamable.""" start="00:01:47.080" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I think probably if we wanted to upstream it,""" start="00:01:50.600" video="qanda-parallel" id="subtitle"]]
+[[!template text="""we would have to do some proper work on""" start="00:01:54.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""refactoring query place itself in order to""" start="00:01:57.180" video="qanda-parallel" id="subtitle"]]
+[[!template text="""integrate all of this functionality just""" start="00:01:58.780" video="qanda-parallel" id="subtitle"]]
+[[!template text="""directly without any patching left and right.""" start="00:02:01.880" video="qanda-parallel" id="subtitle"]]
+[[!template text="""But yeah, definitely something I've given""" start="00:02:05.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""some thought, but so far no progress on it.""" start="00:02:10.080" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I haven't actually started doing anything""" start="00:02:11.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""about it.""" start="00:02:12.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, So I'm curious now,""" start="00:02:17.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""you developed the feature and then you moved""" start="00:02:19.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""on to the presentation or did you want to do""" start="00:02:21.600" video="qanda-parallel" id="subtitle"]]
+[[!template text="""a presentation for EmacsConf and then you""" start="00:02:23.080" video="qanda-parallel" id="subtitle"]]
+[[!template text="""worked on something like this?""" start="00:02:24.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Which was it first, the chicken or the egg?""" start="00:02:26.360" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, it was the former.""" start="00:02:28.220" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So this is a problem I've been aware of for,""" start="00:02:31.320" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I mean, probably a couple of years.""" start="00:02:33.340" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And, you know, I talked to my friend""" start="00:02:35.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Valentino about it and we had like a little""" start="00:02:37.600" video="qanda-parallel" id="subtitle"]]
+[[!template text="""discussion, you know, how would we do this?""" start="00:02:39.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And then I remember back when I was""" start="00:02:41.880" video="qanda-parallel" id="subtitle"]]
+[[!template text="""researching about this problem and the""" start="00:02:44.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""various Emacs Lisp solutions,""" start="00:02:45.100" video="qanda-parallel" id="subtitle"]]
+[[!template text="""all I could find were these solutions that""" start="00:02:47.780" video="qanda-parallel" id="subtitle"]]
+[[!template text="""would, you know, just shy away from""" start="00:02:49.400" video="qanda-parallel" id="subtitle"]]
+[[!template text="""implementing the RegEx case,""" start="00:02:50.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""which is a really complicated 1.""" start="00:02:52.340" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And, after some discussion,""" start="00:02:54.720" video="qanda-parallel" id="subtitle"]]
+[[!template text="""my friend and I decided,""" start="00:02:56.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""okay, what the hell? Let's,""" start="00:02:58.080" video="qanda-parallel" id="subtitle"]]
+[[!template text="""let's try and implement this.""" start="00:02:59.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""How hard can it be? And yeah,""" start="00:03:01.800" video="qanda-parallel" id="subtitle"]]
+[[!template text="""basically in 1 afternoon,""" start="00:03:03.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""the idea, our little trick and the whole""" start="00:03:06.300" video="qanda-parallel" id="subtitle"]]
+[[!template text="""implementation was born.""" start="00:03:07.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And then I think that was maybe around a year""" start="00:03:11.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""ago, maybe a bit less.""" start="00:03:12.540" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And then through the months,""" start="00:03:14.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""we just thought, oh yeah,""" start="00:03:15.920" video="qanda-parallel" id="subtitle"]]
+[[!template text="""maybe we could present this,""" start="00:03:17.420" video="qanda-parallel" id="subtitle"]]
+[[!template text="""maybe it would be interesting for people to""" start="00:03:18.960" video="qanda-parallel" id="subtitle"]]
+[[!template text="""see and that's how we came up with the idea""" start="00:03:20.660" video="qanda-parallel" id="subtitle"]]
+[[!template text="""to present at EmacsConf.""" start="00:03:22.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, great. I don't see other people asking""" start="00:03:27.900" video="qanda-parallel" id="subtitle"]]
+[[!template text="""questions. So people, it's nice if I ask""" start="00:03:30.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""questions but you know,""" start="00:03:31.100" video="qanda-parallel" id="subtitle"]]
+[[!template text="""the point is kind of for you to ask the""" start="00:03:33.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""questions. I see someone who's joined us on""" start="00:03:35.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""BBB. Peter, would you like to ask a question""" start="00:03:36.780" video="qanda-parallel" id="subtitle"]]
+[[!template text="""maybe? Otherwise I see another person writing""" start="00:03:41.720" video="qanda-parallel" id="subtitle"]]
+[[!template text="""a question on the pad,""" start="00:03:43.040" video="qanda-parallel" id="subtitle"]]
+[[!template text="""so we can either move for this 1.""" start="00:03:44.540" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So I'll leave Peter to figure out if they""" start="00:03:46.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""want to ask a question.""" start="00:03:47.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So I'm moving on to the next question.""" start="00:03:49.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 2]: I can jump in. That's a really well done talk""" start="00:03:57.900" video="qanda-parallel" id="subtitle"]]
+[[!template text="""and you really clearly laid out the problem""" start="00:04:01.780" video="qanda-parallel" id="subtitle"]]
+[[!template text="""and the solution there.""" start="00:04:03.000" video="qanda-parallel" id="subtitle"]]
+[[!template text="""While I was watching it,""" start="00:04:05.600" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I was thinking maybe the nice way to name it""" start="00:04:10.740" video="qanda-parallel" id="subtitle"]]
+[[!template text="""is just to name it query replace and query""" start="00:04:13.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""replace regext, you know,""" start="00:04:15.700" video="qanda-parallel" id="subtitle"]]
+[[!template text="""overloading the original functions and then""" start="00:04:18.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""using a prefix number,""" start="00:04:23.000" video="qanda-parallel" id="subtitle"]]
+[[!template text="""like control number to indicate how many""" start="00:04:26.880" video="qanda-parallel" id="subtitle"]]
+[[!template text="""replacements you're going to do.""" start="00:04:29.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""But maybe that doesn't work with the""" start="00:04:31.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""recursive editing stuff,""" start="00:04:36.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""which I don't use much.""" start="00:04:37.960" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So I don't have a good method.""" start="00:04:40.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think it would definitely work.""" start="00:04:43.260" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Well, the question is,""" start="00:04:46.260" video="qanda-parallel" id="subtitle"]]
+[[!template text="""if we just overwrite the definitions,""" start="00:04:47.880" video="qanda-parallel" id="subtitle"]]
+[[!template text="""then, oh, well, I guess we could do that.""" start="00:04:51.700" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Nothing stops us. I mean,""" start="00:04:53.410" video="qanda-parallel" id="subtitle"]]
+[[!template text="""we're in Emacs. We could definitely do that.""" start="00:04:54.800" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And then if you give, like,""" start="00:04:55.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""a prefix argument, maybe it just drops you""" start="00:04:57.540" video="qanda-parallel" id="subtitle"]]
+[[!template text="""back to the original query replace.""" start="00:04:59.060" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Yeah, that's an idea. For now,""" start="00:05:01.000" video="qanda-parallel" id="subtitle"]]
+[[!template text="""we decided, OK, let's just keep everything""" start="00:05:02.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""explicitly separate just to avoid any""" start="00:05:05.000" video="qanda-parallel" id="subtitle"]]
+[[!template text="""confusion.""" start="00:05:05.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, I think that's the right thing to do""" start="00:05:09.220" video="qanda-parallel" id="subtitle"]]
+[[!template text="""for now. What I'm actually thinking is that""" start="00:05:11.820" video="qanda-parallel" id="subtitle"]]
+[[!template text="""when you do query replace,""" start="00:05:13.620" video="qanda-parallel" id="subtitle"]]
+[[!template text="""it just does the regular query replace.""" start="00:05:15.600" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And if you're going to do,""" start="00:05:17.220" video="qanda-parallel" id="subtitle"]]
+[[!template text="""say, 3 parallel replacements,""" start="00:05:20.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""then you do Control-U,""" start="00:05:21.340" video="qanda-parallel" id="subtitle"]]
+[[!template text="""query replace. Sorry. Control-3,""" start="00:05:25.580" video="qanda-parallel" id="subtitle"]]
+[[!template text="""query replace. And then that way you don't""" start="00:05:28.580" video="qanda-parallel" id="subtitle"]]
+[[!template text="""have The final prompt that you give nothing""" start="00:05:33.400" video="qanda-parallel" id="subtitle"]]
+[[!template text="""to.""" start="00:05:33.760" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Exactly, that's actually not a bad idea.""" start="00:05:36.880" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I think I like that. Yeah,""" start="00:05:39.720" video="qanda-parallel" id="subtitle"]]
+[[!template text="""that's not a bad idea.""" start="00:05:40.800" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: It's always a quagmire whether to ask for an""" start="00:05:44.760" video="qanda-parallel" id="subtitle"]]
+[[!template text="""argument or to use the universal argument.""" start="00:05:47.080" video="qanda-parallel" id="subtitle"]]
+[[!template text="""When you're working with Emacs and especially""" start="00:05:51.060" video="qanda-parallel" id="subtitle"]]
+[[!template text="""the UX side of things in the package,""" start="00:05:52.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""it's so complicated to figure out which 1 you""" start="00:05:54.900" video="qanda-parallel" id="subtitle"]]
+[[!template text="""want to do. In this particular case,""" start="00:05:56.880" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I think it's the better option to use the""" start="00:06:00.340" video="qanda-parallel" id="subtitle"]]
+[[!template text="""universal argument or any kind of argument""" start="00:06:02.800" video="qanda-parallel" id="subtitle"]]
+[[!template text="""with a control number before.""" start="00:06:04.040" video="qanda-parallel" id="subtitle"]]
+[[!template text="""All right, we have about 3 more minutes of""" start="00:06:10.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""questions. Peter, if you don't mind,""" start="00:06:12.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I'll keep reading the questions in the chat.""" start="00:06:14.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Did you use pair programming while developing""" start="00:06:19.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""it, it being a package,""" start="00:06:21.100" video="qanda-parallel" id="subtitle"]]
+[[!template text="""or did you work independently,""" start="00:06:22.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""alternating and reviewing with Valentino?""" start="00:06:24.840" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: It was definitely a pair programming kind of""" start="00:06:28.320" video="qanda-parallel" id="subtitle"]]
+[[!template text="""thing. So if I remember correctly,""" start="00:06:29.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I was sitting at the computer and Valentino""" start="00:06:32.760" video="qanda-parallel" id="subtitle"]]
+[[!template text="""was in front of a whiteboard and we were just""" start="00:06:36.020" video="qanda-parallel" id="subtitle"]]
+[[!template text="""dissecting this regex and a bunch of examples""" start="00:06:38.400" video="qanda-parallel" id="subtitle"]]
+[[!template text="""and trying to get these capture groups and""" start="00:06:41.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""stuff that we have to remap internally to get""" start="00:06:44.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""these offsets right and avoid off by 1 error""" start="00:06:46.560" video="qanda-parallel" id="subtitle"]]
+[[!template text="""and stuff like that. So yeah,""" start="00:06:48.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""definitely a team effort.""" start="00:06:49.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, great. Moving on to the next question.""" start="00:06:53.660" video="qanda-parallel" id="subtitle"]]
+[[!template text="""What is your background in programming?""" start="00:06:55.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Was it difficult to implement following the""" start="00:06:57.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""same API and architecture as what is already""" start="00:06:59.700" video="qanda-parallel" id="subtitle"]]
+[[!template text="""in Emacs?""" start="00:07:00.200" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: So maybe just a quick back story.""" start="00:07:05.400" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Both Valentino and I are actually PhD""" start="00:07:06.960" video="qanda-parallel" id="subtitle"]]
+[[!template text="""students in computer science,""" start="00:07:08.300" video="qanda-parallel" id="subtitle"]]
+[[!template text="""and we literally share an office.""" start="00:07:09.960" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So that's how we even started talking about""" start="00:07:12.960" video="qanda-parallel" id="subtitle"]]
+[[!template text="""this whole thing. And we both use Emacs,""" start="00:07:14.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""of course. But I don't think this was too""" start="00:07:18.380" video="qanda-parallel" id="subtitle"]]
+[[!template text="""hard to implement because luckily all of the""" start="00:07:20.740" video="qanda-parallel" id="subtitle"]]
+[[!template text="""interactive functionality like this""" start="00:07:22.300" video="qanda-parallel" id="subtitle"]]
+[[!template text="""complicated undo, skipping,""" start="00:07:23.600" video="qanda-parallel" id="subtitle"]]
+[[!template text="""execute until the end and so on,""" start="00:07:25.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""all of this is really just already provided""" start="00:07:27.980" video="qanda-parallel" id="subtitle"]]
+[[!template text="""by the Emacs queer replace implementation.""" start="00:07:29.860" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So sort of what we do is we just invoke it as""" start="00:07:34.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""a function and delegate to it.""" start="00:07:36.080" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And we came up with this clever trick to""" start="00:07:37.800" video="qanda-parallel" id="subtitle"]]
+[[!template text="""basically delegate this multi-replacement to""" start="00:07:42.380" video="qanda-parallel" id="subtitle"]]
+[[!template text="""this 1 single function that's already there.""" start="00:07:45.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So it wasn't too complicated.""" start="00:07:47.980" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Alright. And we have about 2 minutes of time""" start="00:07:54.780" video="qanda-parallel" id="subtitle"]]
+[[!template text="""for the last question.""" start="00:07:55.560" video="qanda-parallel" id="subtitle"]]
+[[!template text="""What did you learn about Emacs programming or""" start="00:07:58.040" video="qanda-parallel" id="subtitle"]]
+[[!template text="""programming in general while working on this""" start="00:08:00.020" video="qanda-parallel" id="subtitle"]]
+[[!template text="""project? A very wide question for me.""" start="00:08:02.320" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Maybe 1 thing I would like to add to the""" start="00:08:05.840" video="qanda-parallel" id="subtitle"]]
+[[!template text="""previous just answer is I don't want to say""" start="00:08:09.220" video="qanda-parallel" id="subtitle"]]
+[[!template text="""like you know we're PhDs,""" start="00:08:10.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""a PhD is required for this or anything,""" start="00:08:12.780" video="qanda-parallel" id="subtitle"]]
+[[!template text="""not at all. It's mostly just for a little bit""" start="00:08:15.800" video="qanda-parallel" id="subtitle"]]
+[[!template text="""of context, but I think obviously,""" start="00:08:19.220" video="qanda-parallel" id="subtitle"]]
+[[!template text="""even if you're not a PhD,""" start="00:08:20.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I mean, you don't even require like""" start="00:08:22.360" video="qanda-parallel" id="subtitle"]]
+[[!template text="""university, you know, education or anything.""" start="00:08:24.960" video="qanda-parallel" id="subtitle"]]
+[[!template text="""It wasn't overly difficult to implement,""" start="00:08:27.540" video="qanda-parallel" id="subtitle"]]
+[[!template text="""sort of just read some code that's already""" start="00:08:30.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""there and you know follow what you see and""" start="00:08:33.539" video="qanda-parallel" id="subtitle"]]
+[[!template text="""poke Emacs a little bit and do a little bit""" start="00:08:35.860" video="qanda-parallel" id="subtitle"]]
+[[!template text="""of debugging on the internals and you can""" start="00:08:38.140" video="qanda-parallel" id="subtitle"]]
+[[!template text="""definitely get it. So definitely not a""" start="00:08:40.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""prerequisite to have a degree or anything to""" start="00:08:42.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""do any of this stuff. Okay so Coming back to""" start="00:08:45.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I'm going to amend a little bit the""" start="00:08:48.420" video="qanda-parallel" id="subtitle"]]
+[[!template text="""question because we only have 1 minute.""" start="00:08:49.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So just 1 thing in 10 seconds,""" start="00:08:51.600" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 2]: what did you""" start="00:08:52.490" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: learn about this?""" start="00:08:53.040" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: your last question. What did I learn about""" start="00:08:54.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Emacs programming? That Emacs is so flexible""" start="00:08:56.420" video="qanda-parallel" id="subtitle"]]
+[[!template text="""that I can go and I can patch literally its""" start="00:08:59.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""message function. And that is how we achieve""" start="00:09:01.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""the nice message function in the echo buffer.""" start="00:09:03.680" video="qanda-parallel" id="subtitle"]]
+[[!template text="""So I can literally go and patch something as""" start="00:09:06.720" video="qanda-parallel" id="subtitle"]]
+[[!template text="""crucial as message.""" start="00:09:07.560" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: It's great. That's a lovely 1.""" start="00:09:09.920" video="qanda-parallel" id="subtitle"]]
+[[!template text="""And I think, again, we're going back to the""" start="00:09:12.260" video="qanda-parallel" id="subtitle"]]
+[[!template text="""philosophy of Emacs. Everything is""" start="00:09:13.660" video="qanda-parallel" id="subtitle"]]
+[[!template text="""programmable and even changing the message""" start="00:09:15.200" video="qanda-parallel" id="subtitle"]]
+[[!template text="""function is great. All right,""" start="00:09:16.640" video="qanda-parallel" id="subtitle"]]
+[[!template text="""well, thank you so much,""" start="00:09:17.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Lovro, and thanks to Valentino as well,""" start="00:09:19.540" video="qanda-parallel" id="subtitle"]]
+[[!template text="""who's not here, but who's contributed to this""" start="00:09:21.820" video="qanda-parallel" id="subtitle"]]
+[[!template text="""talk. Any last word?""" start="00:09:23.900" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, just if you're gonna build any""" start="00:09:29.540" video="qanda-parallel" id="subtitle"]]
+[[!template text="""solutions, try to make them as foolproof and""" start="00:09:31.980" video="qanda-parallel" id="subtitle"]]
+[[!template text="""as 100% as possible so we get more of these""" start="00:09:34.360" video="qanda-parallel" id="subtitle"]]
+[[!template text="""goodies that are nice and robust for""" start="00:09:36.280" video="qanda-parallel" id="subtitle"]]
+[[!template text="""everybody to use.""" start="00:09:37.000" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right, lovely. Well,""" start="00:09:39.400" video="qanda-parallel" id="subtitle"]]
+[[!template text="""thank you so much, Lover,""" start="00:09:40.240" video="qanda-parallel" id="subtitle"]]
+[[!template text="""for your presentation and your answer.""" start="00:09:41.940" video="qanda-parallel" id="subtitle"]]
+[[!template text="""We'll be moving on to the next talk in just""" start="00:09:44.340" video="qanda-parallel" id="subtitle"]]
+[[!template text="""about 5 seconds, and I'll see you after.""" start="00:09:47.260" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Bye, Lovro!""" start="00:09:47.900" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yep, bye bye!""" start="00:09:49.760" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I'm just waiting to make sure my VNC is a""" start="00:10:01.440" video="qanda-parallel" id="subtitle"]]
+[[!template text="""little slow. Okay, we switch to the next""" start="00:10:02.840" video="qanda-parallel" id="subtitle"]]
+[[!template text="""talk. All right, Lover,""" start="00:10:03.480" video="qanda-parallel" id="subtitle"]]
+[[!template text="""I'm gonna need to go get ready now.""" start="00:10:04.960" video="qanda-parallel" id="subtitle"]]
+[[!template text="""Yep. Bye-bye, and thanks for your talk.""" start="00:10:09.060" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 1]: Bye, thank you, see you.""" start="00:10:11.160" video="qanda-parallel" id="subtitle"]]
+[[!template text="""[Speaker 2]: You""" start="00:10:15.060" video="qanda-parallel" id="subtitle"]]
+
+Questions or comments? Please e-mail [hokomo@disroot.org](mailto:hokomo@disroot.org?subject=Comment%20for%20EmacsConf%202023%20parallel%3A%20Parallel%20text%20replacement)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/parallel-before.md b/2023/info/parallel-before.md
new file mode 100644
index 00000000..54bb132d
--- /dev/null
+++ b/2023/info/parallel-before.md
@@ -0,0 +1,36 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 15-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="parallel-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="parallel-mainVideo" data="""
+00:00.000 Introduction
+00:23.440 Problem: Goal
+01:12.360 Problem: Naive Multi-pass
+01:34.200 Problem: Clever Multi-pass
+01:57.720 Problem: Terminology
+03:04.440 Problem: Scaling Multi-pass
+03:55.920 Solution: Single-pass
+04:18.240 Solution: Existing
+06:29.080 Solution: query-replace-parallel
+06:55.240 Demonstration: Swap
+07:53.970 Demonstration: LaTeX
+08:48.700 Demonstration: Regex
+09:36.320 Demonstration: Order
+10:54.440 Demonstration: Fun
+12:29.120 Implementation
+14:18.740 End
+
+"""]]<div></div>Duration: 14:46 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main-vp8.webm">Download --main-vp8.webm (95MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main.opus">Download --main.opus</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--main.webm">Download --main.webm (29MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/t3G5zo35epS6HvVot9MdZv">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="parallel-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="parallel-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--answers.opus"></audio></div><div></div>Duration: 10:16 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--answers.opus">Download --answers.opus (6.8MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-parallel--parallel-text-replacement--lovro-valentino-picotti--answers.webm">Download --answers.webm (10MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/parallel-nav.md b/2023/info/parallel-nav.md
new file mode 100644
index 00000000..5d255eff
--- /dev/null
+++ b/2023/info/parallel-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/koutline">Using Koutline for stream of thought journaling</a>
+Next by track: <a href="/2023/talks/eat">Eat and Eat powered Eshell, fast featureful terminal inside Emacs</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/poltys-after.md b/2023/info/poltys-after.md
new file mode 100644
index 00000000..7adf9ca7
--- /dev/null
+++ b/2023/info/poltys-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [perma-curious@posteo.de](mailto:perma-curious@posteo.de?subject=Comment%20for%20EmacsConf%202023%20poltys%3A%20The%20browser%20in%20a%20buffer)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/poltys-before.md b/2023/info/poltys-before.md
new file mode 100644
index 00000000..b5eb7ada
--- /dev/null
+++ b/2023/info/poltys-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 35-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="poltys-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--main.webm" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 34:30 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--main.webm">Download --main.webm (185MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-poltys--the-browser-in-a-buffer--michael-bauer--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/1quXfJqC9bh9VxkA9UC21x">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/poltys-nav.md b/2023/info/poltys-nav.md
new file mode 100644
index 00000000..dd2be68d
--- /dev/null
+++ b/2023/info/poltys-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/eat">Eat and Eat powered Eshell, fast featureful terminal inside Emacs</a>
+Next by track: <a href="/2023/talks/cubing">Speedcubing in Emacs</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/ref-after.md b/2023/info/ref-after.md
new file mode 100644
index 00000000..9af1f6ff
--- /dev/null
+++ b/2023/info/ref-after.md
@@ -0,0 +1,298 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="ref-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-ref" id="subtitle"]]
+
+[[!template text="""Hello, this is Christopher Howard,""" start="00:00:00.000" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and welcome to my talk,""" start="00:00:04.940" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""&quot;Informal Reference Tracking.&quot;""" start="00:00:06.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""This is a workflow talk,""" start="00:00:08.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""so I need to explain a little bit about""" start="00:00:10.574" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""what my needs were.""" start="00:00:12.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I am not a professional scholar or academic,""" start="00:00:14.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""but there are a number of subjects""" start="00:00:18.760" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that I'm interested in,""" start="00:00:20.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and I occasionally like to write""" start="00:00:21.607" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""gemlog posts about them.""" start="00:00:23.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So I needed some way to keep track of references.""" start="00:00:25.600" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""References to webpage articles, references to books,""" start="00:00:28.680" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""pages in books, and notes about them.""" start="00:00:32.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Something that was searchable,""" start="00:00:37.280" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""but also something that was quick and easy to use,""" start="00:00:39.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and something that I could set up quickly.""" start="00:00:42.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And the approach I took, it only took me""" start="00:00:45.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""about an hour or two to figure out""" start="00:00:47.360" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""how to put it together.""" start="00:00:49.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I do want to emphasize""" start="00:00:52.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that there are better ways to do this.""" start="00:00:53.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I'm not recommending you use my code""" start="00:00:56.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""or follow my exact approach.""" start="00:00:58.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""In particular, what I'm doing was meant to be done""" start="00:01:02.120" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""with Org's built-in capture""" start="00:01:05.940" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and templates functionality,""" start="00:01:09.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""so that's something that's more flexible,""" start="00:01:11.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""programmable, and there's also a lot of add-ins""" start="00:01:14.907" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that can be tied into that.""" start="00:01:21.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""For example, tools that allow you to search for,""" start="00:01:23.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""you know, feed in a URL, and it automatically""" start="00:01:31.320" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""pulls all the reference data for you.""" start="00:01:34.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And there's tools out there""" start="00:01:38.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that are really meant for scientific writing,""" start="00:01:39.760" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""so if you do this professionally,""" start="00:01:43.120" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""you may need to keep track of dozens of details""" start="00:01:46.760" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""for each reference""" start="00:01:49.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and then have some fancy system to generate that""" start="00:01:51.080" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""into your, or output that into your paper.""" start="00:01:55.320" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So there are better systems,""" start="00:02:00.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""but this is what worked for me and what was easy.""" start="00:02:02.440" video="mainVideo-ref" id="subtitle"]]
+
+[[!template new="1" text="""Tip about completion frameworks""" start="00:02:06.040" video="mainVideo-ref" id="subtitle"]]
+
+[[!template text="""I do want to emphasize that if you haven't,""" start="00:02:06.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""you really want to learn how to use helm-mode""" start="00:02:11.320" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""H-E-L-M, or one of the similar systems in Emacs""" start="00:02:14.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that does fuzzy search on Emacs commands.""" start="00:02:20.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""For example, in Helm here,""" start="00:02:26.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I input one keychord, and then I just have to remember""" start="00:02:29.340" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""a few characters of some command,""" start="00:02:39.007" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and they don't even have to be right next to each other,""" start="00:02:40.720" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""like H-O-C will bring up `helm-occur`.""" start="00:02:43.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""That's based on its algorithms""" start="00:02:47.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""of what I most likely meant""" start="00:02:51.360" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and the ones that I've used in the past.""" start="00:02:53.000" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So it usually brings up the command that I want,""" start="00:02:55.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""or the one that I want""" start="00:02:57.920" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""is one or two spots away in the entry.""" start="00:02:59.580" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""That just saves me a lot of time""" start="00:03:03.080" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""[and] a lot of memorization.""" start="00:03:05.074" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So if you haven't learned Helm""" start="00:03:06.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""or a similar system for Emacs, you really want to.""" start="00:03:09.120" video="mainVideo-ref" id="subtitle"]]
+
+[[!template new="1" text="""References file overview""" start="00:03:14.920" video="mainVideo-ref" id="subtitle"]]
+
+[[!template text="""So what is my approach?""" start="00:03:14.920" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Well, basically, what it comes down to is really""" start="00:03:18.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""fundamentally nothing more than just a list""" start="00:03:24.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""of Org entries in a file.""" start="00:03:27.307" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And there's one entry per reference.""" start="00:03:30.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Fundamentally, that's all it is.""" start="00:03:35.580" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""But I'll go over the parts.""" start="00:03:37.207" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""You can see there's the title for the entry,""" start="00:03:39.207" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and that's not necessarily""" start="00:03:43.080" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the title of the book or the article,""" start="00:03:44.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""but that's my perspective on it,""" start="00:03:47.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that's what I want to remember about it,""" start="00:03:50.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and what I'll be looking for later""" start="00:03:52.720" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""when I do a search on my references.""" start="00:03:54.560" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""There's also in here the use of Org's tags""" start="00:03:56.560" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""here to the right of the title,""" start="00:04:06.660" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""very handy for searching for entries later.""" start="00:04:08.274" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I use some Org properties attached to each entry.""" start="00:04:12.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I automatically add in here an ID""" start="00:04:18.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that can be useful if you want to""" start="00:04:21.740" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""link entries together later.""" start="00:04:24.074" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I automatically add in here the date""" start="00:04:27.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that the entry was created,""" start="00:04:30.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""which can be useful to me if things""" start="00:04:31.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""got sorted in a different order at some point,""" start="00:04:35.700" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I could still look through""" start="00:04:38.360" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the most recent entries that I had made""" start="00:04:39.940" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""if I wanted to do that for some reason.""" start="00:04:42.507" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And sometimes I add in this publication year field""" start="00:04:45.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""with the idea that one day I might want to do""" start="00:04:48.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""a search for entries based on the publication year""" start="00:04:52.720" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""of the book or the article,""" start="00:04:55.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""say, only to use recent references""" start="00:04:57.360" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""or something like that.""" start="00:05:00.774" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And then down here below the properties""" start="00:05:03.080" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""is where I paste in the URL to the webpage, or""" start="00:05:05.360" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""type in the title and author of the book""" start="00:05:10.080" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""on the pages, maybe the pages that were relevant,""" start="00:05:13.007" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the pages of the periodical, or something like that.""" start="00:05:16.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And I could put anything that I want down here,""" start="00:05:21.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""some other notes about what's important""" start="00:05:23.920" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""about this article to me.""" start="00:05:25.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So fundamentally, that's all it is.""" start="00:05:29.940" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Of course, I've added in a bit of convenience code""" start="00:05:32.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""to make this go a lot faster""" start="00:05:35.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""rather than typing all this out.""" start="00:05:37.080" video="mainVideo-ref" id="subtitle"]]
+
+[[!template new="1" text="""The Emacs Lisp code""" start="00:05:39.320" video="mainVideo-ref" id="subtitle"]]
+
+[[!template text="""For that, I'll switch back to my init.el file.""" start="00:05:39.320" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""There's really just five functions.""" start="00:05:45.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""The first two here are ones""" start="00:05:49.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that I've adapted off the Internet.""" start="00:05:52.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Honestly, I can't remember""" start="00:05:54.560" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""exactly where that I got them from,""" start="00:05:56.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""but basically, they're just some functions""" start="00:05:58.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""for making a block of text writable or readable.""" start="00:06:00.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Writable or not writable, I should say.""" start="00:06:04.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""The idea there is that""" start="00:06:09.300" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""when I'm creating a new entry,""" start="00:06:12.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I don't want to accidentally delete""" start="00:06:13.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""or write over some earlier entries that I've made.""" start="00:06:16.307" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So I use a little bit of Emacs functionality for that.""" start="00:06:18.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And then here are the three reference functions""" start="00:06:24.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that I've actually written.""" start="00:06:29.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Really trivial, basic stuff here.""" start="00:06:32.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""The core of it is the `new-reference` function.""" start="00:06:35.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Basically, what that does is""" start="00:06:41.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""it opens up the references file,""" start="00:06:44.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""jumps to the end of the reference file,""" start="00:06:47.560" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""starts a new entry, inserts the asterisk.""" start="00:06:52.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""It jumps back to the previous text,""" start="00:06:57.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and whatever previous text there is,""" start="00:07:01.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""it makes that read-only.""" start="00:07:03.474" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Again, so that I don't accidentally delete that,""" start="00:07:04.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""or cut, or type over it, or something""" start="00:07:08.120" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""when I'm making a new reference.""" start="00:07:10.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Then it goes back to the new reference,""" start="00:07:14.580" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""automatically adds in a unique ID for that,""" start="00:07:17.680" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and then automatically stamps it with""" start="00:07:21.340" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the date the entry was created — today's date.""" start="00:07:25.360" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Now, I've got two other functions here.""" start="00:07:29.000" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""One is `view-references`,""" start="00:07:32.760" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""which does nothing but open up the reference file""" start="00:07:34.540" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and switch to that buffer""" start="00:07:37.807" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""if you're not already on it.""" start="00:07:39.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And then there's one other here, `edit-references`,""" start="00:07:42.540" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""which does the exact same thing except for""" start="00:07:45.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""it also goes over all the text in the buffer""" start="00:07:50.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and makes it writable.""" start="00:07:53.560" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So if I really do want to edit those other references,""" start="00:07:55.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I've got a function to quickly make that possible.""" start="00:07:58.120" video="mainVideo-ref" id="subtitle"]]
+
+[[!template new="1" text="""Example reference to Elfeed article""" start="00:08:02.720" video="mainVideo-ref" id="subtitle"]]
+
+[[!template text="""Let me give an example of this.""" start="00:08:02.720" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I type in here, new reference.""" start="00:08:07.500" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Now I've jumped to the end of my references file.""" start="00:08:13.980" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""See, it's ready to take the title.""" start="00:08:16.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Well, I guess I need to have something,""" start="00:08:19.080" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""some content, to put in here.""" start="00:08:21.720" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Let's say I was looking through Elfeed,""" start="00:08:23.660" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and let's say I found this interesting article""" start="00:08:28.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""about Mars earthquakes.""" start="00:08:31.600" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Let's say I open it up [and]""" start="00:08:38.220" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I read through the article.""" start="00:08:40.007" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""First, I'd figure out what it is""" start="00:08:41.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that I find interesting about this, what it is that""" start="00:08:43.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I'm going to want to remember and look up later.""" start="00:08:47.260" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So I come up with a quick title based on that.""" start="00:08:51.580" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Let's go back to the references with `view-reference`.""" start="00:08:57.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And, let's just call it""" start="00:09:01.900" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""&quot;Study of Mars Earthquake.&quot;""" start="00:09:05.674" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Now I'm going to also want to put in some tags.""" start="00:09:13.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""On my system, that's done with""" start="00:09:18.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Control C, Control Q (`C-c C-q`).""" start="00:09:21.107" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And I can put in some tags.""" start="00:09:23.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I like to go ahead and insert the colons.""" start="00:09:25.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""You can leave those out,""" start="00:09:29.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""but they're going to get added anyway,""" start="00:09:30.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""so I'm in the habit of using them.""" start="00:09:32.560" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Let's say we'll call this 'Astronomy' as one tag,""" start="00:09:36.780" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and the next tag could be 'Planets'.""" start="00:09:41.120" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""If I wanted to use a tag""" start="00:09:47.060" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that was more than one word in the tag,""" start="00:09:48.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I'd need to use underscores or something like that.""" start="00:09:50.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""If I wanted a tag that was 'Mars Earthquakes',""" start="00:09:53.540" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I could do it like that, but that's kind of silly.""" start="00:10:00.500" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Now I try not to be too clever with the tags.""" start="00:10:05.060" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I don't spend a lot of time thinking about them.""" start="00:10:08.660" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I just come up with some general buckets""" start="00:10:10.600" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""to throw things in.""" start="00:10:13.107" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""You can see the tags were added there,""" start="00:10:15.020" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""to the right of the title.""" start="00:10:16.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Now you can see down here under PROPERTIES,""" start="00:10:19.380" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the ID has already been added,""" start="00:10:23.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the Date_Created has been added.""" start="00:10:25.320" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Sometimes, I'll like to put in the publication year,""" start="00:10:27.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and for that, I use the `org-set-property` command.""" start="00:10:30.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Publication_Year, this year in this case.""" start="00:10:38.140" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And then I just need to paste in the URL.""" start="00:10:43.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I do that manually.""" start="00:10:46.680" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I use Org's bracket format for that.""" start="00:10:48.080" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So I start that, go back to the article,""" start="00:10:53.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""copy the URL, paste that in.""" start="00:10:57.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""If I want, I can add it in the title""" start="00:11:02.100" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""with the second pair of brackets here.""" start="00:11:04.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Don't have to, but often like to.""" start="00:11:07.460" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Close that off, and there it is.""" start="00:11:14.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""That was really it.""" start="00:11:18.560" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I add a return on the end here,""" start="00:11:20.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""just so the next entry comes out with the right spacing.""" start="00:11:22.120" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""But really, that's it,""" start="00:11:26.620" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and typically, when I'm not explaining it,""" start="00:11:28.307" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that only takes 20 seconds or so, or 30 seconds.""" start="00:11:31.000" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Pretty quick. Pretty easy.""" start="00:11:37.500" video="mainVideo-ref" id="subtitle"]]
+
+[[!template new="1" text="""Searching the references""" start="00:11:41.540" video="mainVideo-ref" id="subtitle"]]
+
+[[!template text="""What about searching later?""" start="00:11:41.540" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Well, often the easiest thing is just do a simple,""" start="00:11:45.540" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""boring incremental search.""" start="00:11:50.474" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I usually know roughly""" start="00:11:54.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""what it is that I'm looking for already.""" start="00:11:55.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""If I was looking for that wildflower article,""" start="00:11:58.500" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I could just do an incremental search for wildflowers""" start="00:12:02.380" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and jump through that. It's pretty simple.""" start="00:12:06.000" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Not very impressive, but honestly, most of the time""" start="00:12:07.920" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that gets me there pretty quick.""" start="00:12:13.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Sometimes I find it useful to do an Occur search,""" start="00:12:16.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""more specifically a Helm Occur search.""" start="00:12:20.360" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""If I use the `helm-occur` command,""" start="00:12:23.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""then I like to use this to search by tag.""" start="00:12:31.260" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""That's where it really becomes handy.""" start="00:12:34.680" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Let's say I want to narrow it down""" start="00:12:36.760" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""to all my astronomy references""" start="00:12:39.207" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and then narrow it down a little bit more to planets.""" start="00:12:42.640" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I can put spaces in between and it still works.""" start="00:12:50.040" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""You can see here in one window,""" start="00:12:54.120" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""it gives me the bottom window there.""" start="00:12:57.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""It's giving…, just because of the way""" start="00:13:00.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the tags are formatted with the title, it gives me""" start="00:13:03.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""a list of all the titles that have those tags.""" start="00:13:06.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""And I usually find what I want pretty quick""" start="00:13:09.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""by just tapping through here.""" start="00:13:11.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Once I find the one that I think I want,""" start="00:13:13.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I press enter, and now I'm focused on just that entry.""" start="00:13:16.500" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""There is some advanced functionality, I believe,""" start="00:13:24.140" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that I used in the past where you could search""" start="00:13:26.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""based on the property fields.""" start="00:13:29.960" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So do something like search for publication —""" start="00:13:33.120" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""the most recent publications in the last 10 years.""" start="00:13:37.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""There's some kind of advanced syntax for that,""" start="00:13:42.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""which I used once or twice.""" start="00:13:46.200" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Honestly, I use that so infrequently""" start="00:13:48.220" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""that I have to go back to the Emacs manual""" start="00:13:51.400" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and figure it out each time, and figure out again""" start="00:13:54.840" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""how I did that the last time.""" start="00:13:57.740" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""But since I do it only once""" start="00:13:59.880" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""every three or four months, it's not a problem.""" start="00:14:02.000" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So I'm not going to go over that today.""" start="00:14:06.680" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""That's pretty much it in a nutshell.""" start="00:14:11.520" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Again, the code that I wrote, this specific approach""" start="00:14:16.480" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""is not really what I'm recommending.""" start="00:14:19.974" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""But here it is if you really do want to use it.""" start="00:14:24.280" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Maybe I can make a link to the URL""" start="00:14:31.160" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""and share that in the chat room or something.""" start="00:14:36.240" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""But I consider this to be trivial code.""" start="00:14:40.060" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""So just use that if you want to use it.""" start="00:14:46.760" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I should be signing off here now.""" start="00:14:49.800" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""I should be in the chat room, in the IRC chat room,""" start="00:14:53.440" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""or you can reach out to me by email if you'd like.""" start="00:14:58.260" video="mainVideo-ref" id="subtitle"]]
+[[!template text="""Thank you very much.""" start="00:15:01.920" video="mainVideo-ref" id="subtitle"]]
+
+
+
+Captioner: bhavin192
+
+Questions or comments? Please e-mail [christopher@librehacker.com](mailto:christopher@librehacker.com?subject=Comment%20for%20EmacsConf%202023%20ref%3A%20Org-Mode%20workflow%3A%20informal%20reference%20tracking)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/ref-before.md b/2023/info/ref-before.md
new file mode 100644
index 00000000..165a4e1b
--- /dev/null
+++ b/2023/info/ref-before.md
@@ -0,0 +1,20 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 16-min talk; Q&A: IRC
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="ref-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="ref-mainVideo" data="""
+00:00.000 Introduction
+02:06.040 Tip about completion frameworks
+03:14.920 References file overview
+05:39.320 The Emacs Lisp code
+08:02.720 Example reference to Elfeed article
+11:41.540 Searching the references
+
+"""]]<div></div>Duration: 15:04 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.ogg">Download --main.ogg (7.9MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.opus">Download --main.opus (7.8MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.webm">Download --main.webm (38MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/cYpEatASFWXLzDfKH4Fhec">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/ref-nav.md b/2023/info/ref-nav.md
new file mode 100644
index 00000000..a370300e
--- /dev/null
+++ b/2023/info/ref-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/solo">How I play TTRPGs in Emacs</a>
+Next by track: <a href="/2023/talks/unentangling">(Un)entangling projects and repos</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/repl-after.md b/2023/info/repl-after.md
new file mode 100644
index 00000000..d0a895ad
--- /dev/null
+++ b/2023/info/repl-after.md
@@ -0,0 +1,1146 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="repl-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Intro""" start="00:00:00.000" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""Hi! My name is Eduardo Ochs""" start="00:00:00.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and the title of this talk is: REPLs""" start="00:00:03.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in strange places - Lua, LateX, LPeg, LPegRex,""" start="00:00:05.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and TikZ. I'm the author of an Emacs""" start="00:00:09.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""package called eev, and this is a talk""" start="00:00:12.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""at the EmacsConf 2023, that is happening in""" start="00:00:14.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""December 2023, at the internets.""" start="00:00:18.480" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""Diagrams""" start="00:00:22.520" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""This is one of the""" start="00:00:22.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples of diagrams that we are""" start="00:00:23.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""going to see - let me show how I generate""" start="00:00:24.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it... one second,""" start="00:00:27.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I have to use a smaller font here...""" start="00:00:30.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this is a file called ParseTree2.lua...""" start="00:00:35.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""let me go back to this block of tests again...""" start="00:00:39.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and now if I run""" start="00:00:42.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this...""" start="00:00:43.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""we get these outputs here at the""" start="00:00:47.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""right, and then in this line here it""" start="00:00:50.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""generates a PDF, and if I type f8 here it""" start="00:00:53.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""shows the PDF in the lower right window.""" start="00:00:58.120" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""eev""" start="00:01:03.920" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""Let me start by explaining""" start="00:01:03.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""briefly what is eev.""" start="00:01:06.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""First: it is something that""" start="00:01:09.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""appeared by accident in the mid-90s - I""" start="00:01:12.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""explained this story in my""" start="00:01:14.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""presentation at the EmacsConf 2019...""" start="00:01:16.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's a package... it's an Emacs""" start="00:01:20.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""package that is part of ELPA... it has at""" start="00:01:23.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""least 10 users - those are the ones""" start="00:01:26.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that I know by name...""" start="00:01:29.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""eev means `emacs-execute-verbosely'...""" start="00:01:32.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""eev is something that treats eval-last-sexp""" start="00:01:38.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""as the central feature of Emacs...""" start="00:01:40.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""eev blurs the distinction between""" start="00:01:44.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""programmers and users, and it replaces""" start="00:01:45.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the slogan &quot;users should not be forced to""" start="00:01:48.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""see Lisp&quot;, that is something that Richard""" start="00:01:51.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Stallman told me once, by &quot;users should see""" start="00:01:53.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Lisp instead of buttons&quot; and &quot;new users""" start="00:01:57.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""should see Lisp in the first 5 minutes&quot;...""" start="00:02:00.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I'm going to show""" start="00:02:04.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""some examples of that soon.""" start="00:02:05.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Eev uses code in comments a lot,""" start="00:02:08.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and also tests in comments...""" start="00:02:11.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I changed my way of presenting it""" start="00:02:15.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it became very REPL-centric""" start="00:02:17.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in the last few years, in the""" start="00:02:19.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sense that I start by explaining its""" start="00:02:22.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""main features by its support for REPLs...""" start="00:02:24.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""eev supposes""" start="00:02:28.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that we want to keep""" start="00:02:31.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""executable notes of everything - I'm also""" start="00:02:32.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""going to show examples of this in a""" start="00:02:35.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""second... eev has lots of &quot;videos for""" start="00:02:37.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""people who hate videos&quot;, and it tries to""" start="00:02:40.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""do everything with very little magic and""" start="00:02:43.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""without black boxes - I'm going to explain""" start="00:02:46.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""many of these things very soon.""" start="00:02:48.840" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""Another figure""" start="00:02:50.320" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""This is a figure that that I'm going""" start="00:02:50.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to show in details soon, that is""" start="00:02:52.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""about something important about Lua...""" start="00:02:57.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the font is very bad now, so let me""" start="00:02:59.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""change the font... the figure is this one...""" start="00:03:03.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and...""" start="00:03:07.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""what most people do when they""" start="00:03:08.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""visit a file with something""" start="00:03:12.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""interesting on it is that they just go""" start="00:03:14.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""there and they set a bookmark there, or""" start="00:03:16.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""they put the position in a register...""" start="00:03:18.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but I prefer to keep""" start="00:03:21.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""links to everything that is interesting""" start="00:03:26.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""as elisp hyperlinks. So, for example, this is""" start="00:03:29.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""an elisp hyperlink to a file, that goes""" start="00:03:32.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to this anchor here, and to this string""" start="00:03:35.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""after this anchor... this is a variant""" start="00:03:37.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that opens that file in the window""" start="00:03:41.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""at the right -""" start="00:03:44.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here... and this is""" start="00:03:45.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a sexp that changes the font. I""" start="00:03:48.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""have a command with a very short name""" start="00:03:53.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that does that, but I""" start="00:03:56.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""prefer to keep that as a one-liner.""" start="00:03:59.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""About the videos... we can see""" start="00:04:02.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the list of first-class videos of eev""" start="00:04:06.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""by executing this, M-x find-1stclassvideos,""" start="00:04:10.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""or by running this alias here, M-x 1c...""" start="00:04:14.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and then what we see is this...""" start="00:04:18.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the first sexp here""" start="00:04:20.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""regenerates this buffer - so we can make a""" start="00:04:24.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""mess here and then run this and the""" start="00:04:26.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""original buffer is regenerated again in""" start="00:04:29.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a clean way...""" start="00:04:33.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""each of these things here""" start="00:04:34.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""opens a buffer with information about""" start="00:04:36.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a video... let me take a specific""" start="00:04:40.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""example here... this video here is about""" start="00:04:44.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""one of the ancestors of this talk, that""" start="00:04:49.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is a library that I wrote""" start="00:04:51.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""for creating diagrams in LaTeX using""" start="00:04:53.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a package called Pict2e using REPLs...""" start="00:04:58.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""anyway...""" start="00:05:03.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the thing is that if we""" start="00:05:03.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""run a sexp like this one and we don't""" start="00:05:06.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""have a local copy of the video eev""" start="00:05:11.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""will try to download to the local copy -""" start="00:05:14.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and instead of doing that by asking""" start="00:05:17.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""something like &quot;do you want me""" start="00:05:20.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to download the local copy? Blah""" start="00:05:21.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""blah blah blah blah...&quot; it simply opens a""" start="00:05:24.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""buffer like this, I mean, if we don't""" start="00:05:28.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""have a local copy yet it will open a""" start="00:05:30.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""buffer like this one, in which these""" start="00:05:33.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""things here in comments are links to the""" start="00:05:36.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""documentation... I mean, this thing here""" start="00:05:39.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""explains the idea of local copies""" start="00:05:43.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of files from the internet...""" start="00:05:46.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""there are more details here, and here...""" start="00:05:48.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this is a script that we""" start="00:05:54.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""can execute line by line, so instead of""" start="00:05:57.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this script being hidden behind the""" start="00:06:00.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""button that we just press after a""" start="00:06:02.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""question like &quot;Do you want me to do""" start="00:06:06.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""something blah blah blah? Yes or no?&quot;""" start="00:06:08.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the script is visible here and we can""" start="00:06:10.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""execute it step by step... it creates a""" start="00:06:13.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""terminal with a shell here in the""" start="00:06:17.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""right window, and when we type f8 in""" start="00:06:20.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""one of these lines here the lines are""" start="00:06:24.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sent... (...) so this is going""" start="00:06:26.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to download a copy of the video... the""" start="00:06:29.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""wget says that I already have a copy of""" start="00:06:31.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the video and its subtitles... and so on.""" start="00:06:36.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And after getting a copy of the video""" start="00:06:39.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""we can run this sexp here and it displays""" start="00:06:43.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the video.""" start="00:06:48.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I said that eev has lots of""" start="00:06:49.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;videos for people who hate videos&quot;, and""" start="00:06:55.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the idea is that very few""" start="00:06:58.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""people are going to watch the videos in""" start="00:06:59.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""real time... and most of the people that""" start="00:07:02.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I know - or: most of the people that""" start="00:07:06.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""are interested in eev in some""" start="00:07:08.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""way... they are going to watch just""" start="00:07:10.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""small sections of the video, and most of""" start="00:07:13.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the time they're just going to read the""" start="00:07:16.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""subtitles of the video. So, for each""" start="00:07:17.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""one of the videos we have a page""" start="00:07:20.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""about the video... let me see if I""" start="00:07:23.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""have internet here... yes. This is a""" start="00:07:27.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""page...""" start="00:07:30.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and usually these pages have a link""" start="00:07:32.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to another page that""" start="00:07:39.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""has all the subtitles of the""" start="00:07:40.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""video... uh, wherever... in this one""" start="00:07:43.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's not so visible...""" start="00:07:46.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but anyway, there are several""" start="00:07:48.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""ways of accessing the subtitles of the""" start="00:07:50.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""video, and one of the ways is by running""" start="00:07:52.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this sexp here,""" start="00:07:56.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that opens a file in Lua that is""" start="00:07:57.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""what I use to generate the""" start="00:08:01.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""subtitles.""" start="00:08:03.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Anyway... by the way, these things... each""" start="00:08:04.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""one of these things here is a hyperlink""" start="00:08:08.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to a position of the video, so if I type""" start="00:08:12.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this the right way it goes to that""" start="00:08:15.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""position. Anyway, let me go back...""" start="00:08:18.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""also, the tutorials of eev... the""" start="00:08:24.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;intros&quot; of eev, that start with &quot;find-&quot; and""" start="00:08:27.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""end with &quot;-intro&quot;, they have lots of blocks""" start="00:08:31.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that say &quot;[Video links:]&quot;, like this one, and""" start="00:08:34.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""these blocks have links to positions""" start="00:08:39.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in videos, and if we don't have a local""" start="00:08:41.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""copy of the video yet the thing shows""" start="00:08:43.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""us a script that lets us download the""" start="00:08:47.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""local copy.""" start="00:08:49.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Anyway, I said that I was going""" start="00:08:50.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to explain what I mean by &quot;magic&quot; and""" start="00:08:54.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;black boxes&quot;.""" start="00:08:58.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this is something that I've been""" start="00:08:59.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""trying to explain for a long time, and I""" start="00:09:03.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""think that I got a very good explanation""" start="00:09:05.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""about that in a video that I made""" start="00:09:07.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""about something called eev-wconfig, that""" start="00:09:09.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is a tool for configuring eev on""" start="00:09:13.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Windows without &quot;magic&quot; - without buttons""" start="00:09:15.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that do things without explaining what""" start="00:09:19.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""they're doing.""" start="00:09:22.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""This is a part of the subtitles""" start="00:09:22.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of the video, let me read that...""" start="00:09:25.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""eev-wconfig is an attempt to solve the""" start="00:09:28.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""problem of how to install these things""" start="00:09:32.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""on Windows both without magic and with""" start="00:09:35.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""very little""" start="00:09:37.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""magic. Remember this slogan: &quot;any""" start="00:09:37.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sufficiently advanced technology is""" start="00:09:41.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""indistinguishable from""" start="00:09:44.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""magic&quot;. Here in this video I'm going to""" start="00:09:45.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""use the term magic as a shorthand""" start="00:09:49.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""for sufficiently advanced technology,""" start="00:09:52.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that is something that is complex and""" start="00:09:55.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""non-obvious and that is""" start="00:09:57.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""indistinguishable from magic in the""" start="00:10:00.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sense of being almost impossible to""" start="00:10:02.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understand. And I'm also going to use a""" start="00:10:04.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the term &quot;black box&quot; as a near-synonym for""" start="00:10:07.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""magic, and sometimes the term""" start="00:10:10.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;black box&quot; is more convenient even though""" start="00:10:13.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's a bit longer - it has more""" start="00:10:16.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""letters - because when I use the term""" start="00:10:17.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""black box it invites us to use""" start="00:10:20.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""expressions like &quot;opening the black box&quot;,""" start="00:10:22.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I'm going to use that""" start="00:10:25.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""expression a lot.""" start="00:10:26.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Now let me try to explain what is...""" start="00:10:28.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sorry, let me change the font...""" start="00:10:37.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""what is Lua. Lua is a minimalistic""" start="00:10:41.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""language, in the sense of""" start="00:10:45.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;batteries not included&quot;... it uses""" start="00:10:50.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""associative tables for most of its data""" start="00:10:53.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""structures...""" start="00:10:56.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it is so minimalistic""" start="00:10:56.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that its default print function, when""" start="00:11:00.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""we tell... when we create an associative""" start="00:11:04.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""table and we ask it to print...""" start="00:11:06.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""when we ask &quot;print&quot; to print an""" start="00:11:09.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""associative table it just prints the""" start="00:11:13.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""address of the table. Here are some""" start="00:11:15.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples... here is a table, and when we""" start="00:11:17.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""ask &quot;print&quot; to print it it just says""" start="00:11:21.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that it's the table at this address here.""" start="00:11:24.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""So, one of things that that most""" start="00:11:26.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""people do when they start using Lua is""" start="00:11:30.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that either they download a package with""" start="00:11:32.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a pretty-printing function or they write""" start="00:11:35.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""their own pretty-printing functions. My""" start="00:11:37.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""own pretty-printing function is called""" start="00:11:39.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""PP, with upper case letters, and it works""" start="00:11:41.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""like this...""" start="00:11:46.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it prints associative tables""" start="00:11:47.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in a way like this. It says that for""" start="00:11:50.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the key 1 the the value associated to""" start="00:11:53.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it is 2, for the key 2 the value is""" start="00:11:57.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""3, and for the key 3 the value is 5.""" start="00:12:00.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""When I started using Lua one of my""" start="00:12:04.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""favorite languages was also a language""" start="00:12:11.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that used associative tables a lot -""" start="00:12:13.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it was called Icon...""" start="00:12:15.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I had to write my own""" start="00:12:16.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""pretty-printing functions for Icon, so""" start="00:12:21.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I just had to port my pretty-printing""" start="00:12:23.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""functions to Lua... and my first""" start="00:12:27.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""version looked at something like this... it""" start="00:12:29.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""just had some some global functions... lots""" start="00:12:32.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of them, actually...""" start="00:12:36.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and after a while I rewrote it, and I""" start="00:12:39.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""rewrote it again, and again, and again, and""" start="00:12:42.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this is one of the versions of that,""" start="00:12:44.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is not even the default at this""" start="00:12:47.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""point...""" start="00:12:49.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;Tos&quot; is for &quot;to string&quot;...""" start="00:12:51.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this is a demo...""" start="00:12:54.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's very modular, so it's easy to replace""" start="00:12:58.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""parts of it, or to toggle flags... and this""" start="00:13:01.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is an example. If I try to print the""" start="00:13:05.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""table of methods for a certain""" start="00:13:08.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""class... I will need a smaller font...""" start="00:13:10.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it prints the table like this, with the""" start="00:13:14.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""names of the methods and then links to""" start="00:13:16.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the source code of the functions...""" start="00:13:20.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""these links only make sense in Emacs and""" start="00:13:21.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in eev...""" start="00:13:25.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and when we run a link like this one...""" start="00:13:25.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it shows the source code in the""" start="00:13:30.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""window at the right. So, for some""" start="00:13:32.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""functions the source code is three lines,""" start="00:13:35.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""for other ones it's one line... and""" start="00:13:37.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""whatever. Anyway, let me go""" start="00:13:40.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""back... Lua can be used in many different""" start="00:13:44.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""styles... most people hate other people's""" start="00:13:47.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""styles... when I started using it in the""" start="00:13:50.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""year 2000 I learned most of the basic""" start="00:13:53.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""language in a single day - it was very""" start="00:13:57.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""similar to things that I was already""" start="00:13:59.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""using... and then I rewrote the the mini-""" start="00:14:02.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""language that I was using to""" start="00:14:05.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""generate the HTML for my pages""" start="00:14:10.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in Lua... actually I had to rewrite it""" start="00:14:13.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""many times, but the first version I""" start="00:14:16.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""certainly did in my first weeks or first""" start="00:14:18.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""months using Lua...""" start="00:14:21.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""In the beginning I was just using""" start="00:14:22.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it for writing programs that either""" start="00:14:27.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""didn't take any input at all - because""" start="00:14:30.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the input was already in the source file -""" start="00:14:32.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""or that worked as Unix programs,""" start="00:14:35.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that would read files""" start="00:14:40.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and process these files in some way""" start="00:14:43.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and output something.""" start="00:14:45.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I mentioned the &quot;basic language&quot; here...""" start="00:14:49.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I only learned how to use closures,""" start="00:14:52.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""metatables, and coroutines many years later...""" start="00:14:54.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in the beginning, when I started using Lua,""" start="00:14:58.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it didn't have a package manager...""" start="00:15:02.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it appeared later, it is called""" start="00:15:04.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Luarocks... it has had this package""" start="00:15:06.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""manager for several years, most""" start="00:15:10.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of the rocks for Luarocks are poorly""" start="00:15:13.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""documented and hacker-unfriendly,""" start="00:15:15.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so you can't rely just on the""" start="00:15:18.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""documentation and you can't rely just on the""" start="00:15:21.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""source code, because, I mean... if you are""" start="00:15:23.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a genius of course you can, but for""" start="00:15:26.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""people who are either lazy, or dumb, or""" start="00:15:29.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""whatever, like me, or unfocused...""" start="00:15:31.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the source code is hard to""" start="00:15:34.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understand and hard to tinker with.""" start="00:15:36.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Some rocks are excellent. The""" start="00:15:38.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""best rocks are well documented""" start="00:15:43.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but they are hacker-unfriendly""" start="00:15:46.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in a sense that I hope that""" start="00:15:48.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I'll be able to explain soon.""" start="00:15:51.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""The best rocks use local""" start="00:15:52.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""variables and metatables a lot -""" start="00:15:55.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so if you are beginner""" start="00:15:58.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""learning Lua you're not going to""" start="00:16:02.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understand what their source code do...""" start="00:16:03.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""they use lots of dirty tricks.""" start="00:16:06.160" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""Object orientation in Lua""" start="00:16:08.520" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""Let me talk a bit about object""" start="00:16:08.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""orientation in Lua. It can be done in""" start="00:16:12.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""many ways...""" start="00:16:14.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the main book about Lua, called""" start="00:16:15.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;Programming in Lua&quot;, by one of the authors""" start="00:16:19.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of the language, Roberto Ierusalimschy,""" start="00:16:21.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""presents several ways of doing""" start="00:16:23.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""object orientation in Lua... I hated all""" start="00:16:26.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of these ways - and also the ways that I""" start="00:16:29.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""tried from the rocks.""" start="00:16:33.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And then I wrote my own way""" start="00:16:34.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of doing object orientation in Lua... it's""" start="00:16:38.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""very minimalistic, it's in this file here,""" start="00:16:40.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""eoo.lua... the main code is just this five""" start="00:16:43.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lines here...""" start="00:16:48.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and here's an example of how it works.""" start="00:16:49.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Here we define the class Vector,""" start="00:16:53.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""with some metamethods...""" start="00:16:58.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this metamethod here will tell Lua""" start="00:17:02.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""what to do when the""" start="00:17:05.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""user asks to add two vectors, this one""" start="00:17:08.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here tells Lua what to do when the user""" start="00:17:12.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""asks Lua to convert a vector to a string,""" start="00:17:15.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and... whatever, this one is""" start="00:17:18.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""something that I'm going to explain in a""" start="00:17:21.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""second. So, here we create a vector with""" start="00:17:24.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""these coordinates, 3 and 4... here we create""" start="00:17:27.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""another Vector... if we &quot;print&quot; here then Lua""" start="00:17:30.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""uses this function here, in the __tostring...""" start="00:17:33.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""if we add the two vectors it uses this""" start="00:17:36.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""function here, in the __add metamethod, and""" start="00:17:39.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""if we run the method :norm...""" start="00:17:43.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it is defined here, in the table __index.""" start="00:17:45.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Anyway...""" start="00:17:49.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Even this thing being so small I used""" start="00:17:58.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to forget how its innards worked all""" start="00:18:02.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the time. Actually I always forget how""" start="00:18:04.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""things work and I have to remember them""" start="00:18:08.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""somehow... and I have to have""" start="00:18:09.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""tricks for remembering, and tricks for""" start="00:18:12.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""summarizing things, and diagrams, and so""" start="00:18:15.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""on. And every time that I forgot how this""" start="00:18:18.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing worked I went back to the""" start="00:18:22.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""source code, and then I looked at the""" start="00:18:24.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagrams... or, of course, in the""" start="00:18:26.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""first times I had to draw the diagrams...""" start="00:18:29.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I run the examples, and of course in""" start="00:18:31.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in the beginning I thought that the code""" start="00:18:35.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""was clear and my examples were very""" start="00:18:36.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""brief, and so I had to rewrite the""" start="00:18:39.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples many times until they became,""" start="00:18:41.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""let's say...""" start="00:18:44.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""perfect.""" start="00:18:45.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I was saying that Lua can be used in""" start="00:18:47.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""many ways, and in my way of using Lua - in""" start="00:18:52.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""my favorite way - everything can be""" start="00:18:56.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""inspected and modified from REPLs,""" start="00:18:59.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""like we can do in Emacs and in SmallTalk,""" start="00:19:02.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""or sort of. So, in my""" start="00:19:06.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""favorite way of using Lua there's no""" start="00:19:08.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""security at all, everything can be""" start="00:19:10.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""changed at all times.""" start="00:19:12.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Of course most people hate that...""" start="00:19:14.920" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""My init file""" start="00:19:19.120" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""My init file has lots of classes... by the""" start="00:19:19.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""way, instead of keeping many small files""" start="00:19:22.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""with many things I put lots of stuff""" start="00:19:26.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in just one big init file.""" start="00:19:29.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""My init file has lots of classes,""" start="00:19:31.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and lots of global functions, and""" start="00:19:34.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lots of cruft - and people hate that,""" start="00:19:37.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of course. This is an example...""" start="00:19:41.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this is the index at the top""" start="00:19:44.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of my init file,""" start="00:19:46.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the classes start here, and then""" start="00:19:48.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""we have some functions, and""" start="00:19:53.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""then we have functions that load""" start="00:19:59.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""certain packages, and then we have... cruft.""" start="00:20:01.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Whatever.""" start="00:20:03.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Most people think that my style""" start="00:20:04.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of using Lua is dirty, and dangerous...""" start="00:20:08.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and they wouldn't touch my Lua code""" start="00:20:10.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""with a 10 feet pole... but most of the""" start="00:20:12.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""things that I'm going to present here in""" start="00:20:15.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this presentation are ideas that should""" start="00:20:18.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""be easy to port to other environments""" start="00:20:23.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and other languages, especially the""" start="00:20:28.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagrams... so the code is not so important.""" start="00:20:32.280" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""LaTeX and LuaLaTeX""" start="00:20:35.280" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""Now let me talk a bit about LuaLaTeX,""" start="00:20:35.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that is LaTeX with a Lua interpreter""" start="00:20:39.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""embedded inside, and two ways""" start="00:20:41.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of generating pictures in LaTeX: TikZ,""" start="00:20:44.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that is very famous, and Pict2e, that is not""" start="00:20:48.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""very famous and that is very low level...""" start="00:20:54.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I think that not many people use it.""" start="00:20:57.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I said before that when I""" start="00:21:02.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""learned Lua I realized that it was""" start="00:21:04.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""very good for writing little""" start="00:21:06.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""languages. I was doing my PhD at the""" start="00:21:09.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""time and typesetting the diagrams for""" start="00:21:14.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""my PhD thesis was very boring, so""" start="00:21:19.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""one of the things that I did was that I""" start="00:21:24.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""created a little language for typesetting""" start="00:21:29.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the diagrams for me. it was""" start="00:21:34.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""called Dednat because initially""" start="00:21:36.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it only generated diagrams for""" start="00:21:38.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Natural Deduction, and then it had""" start="00:21:41.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""several versions...""" start="00:21:43.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""these are the slides for my""" start="00:21:45.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""presentation about Dednat6... &quot;Dednat6 is""" start="00:21:46.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""an extensible semi-preprocessor for""" start="00:21:52.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""LuaLaTeX that understands diagrams in""" start="00:21:56.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""ASCII art&quot;... in the sense that when I have""" start="00:22:01.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a .tex file that has this, and when""" start="00:22:05.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Dednat6 is loaded,""" start="00:22:11.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""when I give the right commands""" start="00:22:13.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Dednat6 interprets this block here as""" start="00:22:15.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""something that defines this""" start="00:22:19.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagram... oops, sorry, it interprets this""" start="00:22:22.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagram here, this diagram in""" start="00:22:28.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""comments here, as something that defines""" start="00:22:30.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a diagram called foo... a deduction called""" start="00:22:34.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""foo, and it generates this code here...""" start="00:22:39.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so that we can just invoke""" start="00:22:41.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the definition of the""" start="00:22:44.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""deduction by typing \ded{foo}.""" start="00:22:45.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And Dednat6 also""" start="00:22:47.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""supports another language for typesetting""" start="00:22:50.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""bidimensional diagrams with""" start="00:22:57.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""arrows and stuff for category Theory and""" start="00:22:59.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""blah blah blah... the specifications of""" start="00:23:05.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""these diagrams look like this...""" start="00:23:08.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here is a... sorry, here is a very good""" start="00:23:12.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""example, this is a huge diagram...""" start="00:23:14.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sorry, one second...""" start="00:23:16.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so, the source code that generates""" start="00:23:18.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this diagram here is just this thing at""" start="00:23:20.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the left, so it's very visual... we can""" start="00:23:25.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""typeset the diagram in ASCII art here and""" start="00:23:32.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""then in this part here we tell how""" start="00:23:35.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the nodes are to be joined, which""" start="00:23:38.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""arrows have to to have annotations, and""" start="00:23:41.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so on...""" start="00:23:43.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this language is extensible in""" start="00:23:45.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the sense that... uh, where's that...""" start="00:23:46.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here: comments that start with &quot;%:&quot;""" start="00:23:48.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""are interpreted as""" start="00:23:52.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""definitions for tree diagrams,""" start="00:23:54.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lines that start with &quot;%D&quot;""" start="00:23:56.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""define 2D diagrams with arrows and""" start="00:23:58.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""stuff, and lines that start with &quot;%L&quot;""" start="00:24:00.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""contain blocks of Lua code""" start="00:24:04.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that we can use to extend the interpreter""" start="00:24:06.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""on-the-fly...""" start="00:24:09.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""anyway, here are some recent""" start="00:24:10.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples of diagrams that I used""" start="00:24:12.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Dednat6 to typeset... this diagram""" start="00:24:15.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here was generated by this""" start="00:24:19.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""specification here...""" start="00:24:21.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this diagram here with the""" start="00:24:22.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""curved arrows was generated by this""" start="00:24:27.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""specification here.""" start="00:24:30.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""So, Dednat6 was very easy to extend,""" start="00:24:32.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and at some point I started to use it""" start="00:24:39.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to generate diagrams using Pict2e -""" start="00:24:41.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""mainly for the classes that I give""" start="00:24:44.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""at the University... I teach mathematics and""" start="00:24:47.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""whatever... in a bad place. Whatever...""" start="00:24:50.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Let me show an animation... here is a""" start="00:24:57.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagram that I generated with Dednat6,""" start="00:25:00.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it is a flip book animation, like... we""" start="00:25:02.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""type PgUp and PgDn and we go""" start="00:25:06.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to the next page of the book and to the""" start="00:25:09.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""previous page of the book...""" start="00:25:11.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and here is the source code that generates""" start="00:25:12.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that. This source code is not very visual,""" start="00:25:16.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so it's quite clumsy to edit that""" start="00:25:19.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagram directly in the .tex file like""" start="00:25:22.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that...""" start="00:25:27.520" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""Manim""" start="00:25:28.080" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""These diagrams were inspired""" start="00:25:28.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""by something called my Manim, that...""" start="00:25:30.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I forgot the name of the guy, but""" start="00:25:33.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's a guy that makes many videos about""" start="00:25:37.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Mathematics, and he created this library""" start="00:25:41.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""called Manim for generating his""" start="00:25:44.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""animations, and other people adapted""" start="00:25:48.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""his library to make it more accessible...""" start="00:25:51.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I tried to learn it, but""" start="00:25:55.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""each animation, even an animation""" start="00:25:59.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that has very few frames... each""" start="00:26:01.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""animation took ages to render, so it""" start="00:26:03.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""wasn't fun... and animations in PDFs can""" start="00:26:07.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""be rendered in seconds. So these""" start="00:26:11.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""things were fun for me, because my laptop""" start="00:26:13.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is very very slow, and my Manim was not fun.""" start="00:26:18.680" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""Generating diagrams from REPLs""" start="00:26:24.360" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""Anyway, writing code like this""" start="00:26:24.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""inside a .tex file was not very""" start="00:26:27.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""fun because it was hard to""" start="00:26:32.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""debug... so in 2022 I started to play""" start="00:26:35.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""with ways of generating these""" start="00:26:38.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagrams from REPLs, and I found a""" start="00:26:41.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""way for Pict2e and a way for TikZ...""" start="00:26:43.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""each one of these ways became a video...""" start="00:26:47.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""if you go to the list of first-class""" start="00:26:50.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""videos of eev you're going to see""" start="00:26:53.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that there's a video about Pict2e here""" start="00:26:57.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here and a video about TikZ...""" start="00:26:59.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here you have some some information""" start="00:27:03.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""like length, an explanation, etc...""" start="00:27:05.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and here are the pages for these videos.""" start="00:27:09.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""My page about the video about Pict2e""" start="00:27:11.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""looks like this, it has some diagrams...""" start="00:27:16.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""whatever... and this one is much""" start="00:27:20.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""nicer, and a lot of people""" start="00:27:23.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""watched that video... I mean, I think""" start="00:27:26.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that 250 people watched it - for me that's""" start="00:27:30.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a million of people...""" start="00:27:33.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this video is about how to""" start="00:27:35.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""extract diagrams from the manual... from""" start="00:27:39.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the TikZ manual and how to run those""" start="00:27:44.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples in a REPL and modify""" start="00:27:46.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""them bit by bit... this is a a""" start="00:27:49.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""screenshot... but let me go back.""" start="00:27:53.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""At that point these things were just""" start="00:27:57.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""prototypes, the code was not very nice...""" start="00:28:00.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and in this year I wrote... I was able""" start="00:28:03.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to unify those two ways of generating PDFs,""" start="00:28:07.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the one for TikZ and the one for Pict2e,""" start="00:28:12.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I unified them with many other""" start="00:28:16.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""things that generated diagrams.""" start="00:28:18.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""The basis of these things is""" start="00:28:20.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""something called Show2.lua... I'm not going""" start="00:28:24.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to show its details now, but its""" start="00:28:29.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""extension that generates TikZ code""" start="00:28:35.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is just this, so we can specify a""" start="00:28:39.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagram with just a block like this,""" start="00:28:43.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and then uh if we""" start="00:28:45.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""run :show00() it returns a string""" start="00:28:49.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that is just the body... the inner""" start="00:28:54.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""body of the .tex file, if we run this we""" start="00:28:56.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""see the whole .tex file, and if we run""" start="00:29:00.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this we save the .tex file and we""" start="00:29:03.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""compile the .tex file to generate a PDF...""" start="00:29:05.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and if we run this we show the PDF in""" start="00:29:08.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the lower right window.""" start="00:29:10.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And that's the same thing for all""" start="00:29:14.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""my recent programs that generate""" start="00:29:17.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""PDFs - they are all""" start="00:29:20.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""integrated... here is the one that...""" start="00:29:22.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the basis for all my modules that generate""" start="00:29:26.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagrams with Pict2e...""" start="00:29:29.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""its demos are not very interesting,""" start="00:29:30.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so let me show some demos of""" start="00:29:34.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""extensions that do interesting things...""" start="00:29:36.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so, this is a diagram that I created""" start="00:29:39.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""by editing it in a REPL...""" start="00:29:45.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I create several Pict objects here...""" start="00:29:47.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and if I execute this it""" start="00:29:51.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""compiles an object, generates a PDF, and""" start="00:29:54.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""if I tap this... here is the PDF.""" start="00:29:59.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And if I just ask Lua to""" start="00:30:04.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""display what is &quot;pux&quot;, here,""" start="00:30:07.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it shows the source code in Pict2e""" start="00:30:10.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of the diagram... and the""" start="00:30:15.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""nice thing is that it is indented, so""" start="00:30:18.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's easy to debug the Pict2e code.""" start="00:30:20.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""If anyone is interested the""" start="00:30:23.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""module that does the tricks for""" start="00:30:25.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""indentation is very easy to understand...""" start="00:30:28.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it has lots of tests and test blocks,""" start="00:30:31.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I think that its data""" start="00:30:35.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""structures are easy to understand.""" start="00:30:38.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Anyway... here is another""" start="00:30:42.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""example. The :show() is""" start="00:30:44.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here... it generates a 3D diagram.""" start="00:30:51.360" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""Parsers""" start="00:30:56.440" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""Now let me talk about parsers and""" start="00:30:56.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""REPLs in VERY strange places... I mean,""" start="00:31:06.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""using REPLs to build parsers step by step""" start="00:31:09.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and&quot; replacing parts by more complex""" start="00:31:13.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""parts. So, I said that Lua is very""" start="00:31:17.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""minimalistic, and everybody knows that""" start="00:31:23.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""implementations of regular expressions""" start="00:31:28.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""are big and complex..""" start="00:31:30.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so, instead of coming with""" start="00:31:32.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""full regular expressions Lua comes with""" start="00:31:34.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""something called &quot;patterns&quot; and a""" start="00:31:37.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""library function called &quot;string.match&quot;.""" start="00:31:39.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Here is""" start="00:31:43.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a copy of the part of the manual that""" start="00:31:44.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""explains the syntax... a part of the""" start="00:31:50.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""syntax of of patterns... here's how""" start="00:31:53.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""string.match is described in the""" start="00:31:57.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""manual - it's just this... &quot;looks for""" start="00:31:59.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the first match of pattern in the string""" start="00:32:03.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""as blah blah blah&quot;... and then we have to""" start="00:32:05.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""go to the other section of the menual""" start="00:32:08.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that explains patterns.""" start="00:32:10.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Lua patterns are so simple,""" start="00:32:11.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so limited, that they don't even""" start="00:32:20.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""have the the alternation operator...""" start="00:32:23.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here is how it is described in the""" start="00:32:26.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""elisp manual -""" start="00:32:29.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""backslash-pipe specifies""" start="00:32:31.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""an alternative, blah blah blah.""" start="00:32:36.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""When we want to to build more""" start="00:32:40.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""complex... regular expressions,""" start="00:32:42.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""patterns, grammars, etc... we have to use""" start="00:32:45.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""an external library for that... no,""" start="00:32:49.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sorry, a library that is external""" start="00:32:52.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but that was written by one of the""" start="00:32:56.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""authors of Lua itself. This library""" start="00:32:58.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is called Lpeg, and its manual says...""" start="00:33:00.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;Lpeg is a new pattern matching library for""" start="00:33:05.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Lua based on Parsing Expression Grammars""" start="00:33:09.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""(PEGs)&quot;. The manual is very terse, I""" start="00:33:12.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""found it incredibly hard to read... it""" start="00:33:18.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""doesn't have any diagrams - it has some""" start="00:33:21.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples, though... and the Lua Wiki""" start="00:33:25.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""has a big page called Lpeg Tutorial""" start="00:33:29.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""with lots of examples...""" start="00:33:33.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but it it also doesn't have""" start="00:33:35.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagrams and I found some things""" start="00:33:38.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""incredibly hard to understand.""" start="00:33:41.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""For example, this is something that is in""" start="00:33:42.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the the manual of Lpeg that I saw and I""" start="00:33:45.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thought: &quot;Wow, great! This makes all sense""" start="00:33:48.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and is going to be very useful!&quot;...""" start="00:33:51.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's a way to to build""" start="00:33:53.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""grammars that can be recursive,""" start="00:33:54.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and they sort of can encode BNF""" start="00:33:57.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""grammars... we just have to translate the""" start="00:34:01.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""BNF a bit to get rid of some""" start="00:34:03.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""recursions and to translate them to""" start="00:34:06.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""something else.""" start="00:34:08.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And the manual also has some things""" start="00:34:09.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that I thought: &quot;Oh, no! I don't have any""" start="00:34:11.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""idea of what this thing does&quot;... and in fact""" start="00:34:15.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I saw these things for the first""" start="00:34:18.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""time more than 10 years ago and they""" start="00:34:20.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""only started to make sense one year ago.""" start="00:34:22.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""One example is group captures.""" start="00:34:26.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Lpeg also comes with a""" start="00:34:30.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""module called the Re module... let me""" start="00:34:36.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""pronounce as it in Portuguese - the Re""" start="00:34:38.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""module... its manual says: &quot;The Re""" start="00:34:41.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""module (provided by the file re.lua in the""" start="00:34:45.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""distribution) supports a somewhat conventional""" start="00:34:48.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""regular expression syntax for pattern usage""" start="00:34:51.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""within lpeg&quot;... and""" start="00:34:56.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this is a quick reference... this""" start="00:34:58.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing is very brief, it has some nice""" start="00:35:03.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples but it's hard to understand anyway...""" start="00:35:06.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and here are some comments about""" start="00:35:08.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""my attempts to learn Re.lua. This is""" start="00:35:13.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a class... in this case it's a very small""" start="00:35:17.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""class... this file implements a :pm()""" start="00:35:20.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""method - I'm going to show examples of""" start="00:35:24.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""other :pm() methods very soon - so, this is""" start="00:35:28.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a :pm() method for Re.lua that lets us""" start="00:35:32.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""compare the syntax of Lua patterns, Lpeg,""" start="00:35:35.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and Re... let's see this example here... so,""" start="00:35:38.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""if we run this it loads my version of""" start="00:35:44.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpeg... no, sorry, my version of lpegrex...""" start="00:35:47.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it shows that when we apply""" start="00:35:52.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the :pm() method to this Lua pattern, this""" start="00:35:57.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpeg pattern, and this Re pattern""" start="00:36:01.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""they all give the same results. So we can""" start="00:36:04.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""use this thing... this kind of thing here""" start="00:36:08.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to show how to translate from Lua""" start="00:36:10.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""patterns, that are familiar because""" start="00:36:14.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""they're similar to regular expressions,""" start="00:36:16.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""only weaker...""" start="00:36:18.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to lpeg, that is super weird""" start="00:36:20.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and to Re, that is not so weird.""" start="00:36:24.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Anyway, the comment says that in 2012""" start="00:36:27.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I had a project that needed a""" start="00:36:35.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""precedence passer that could parse""" start="00:36:37.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""arithmetical expressions with the right""" start="00:36:40.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""precedences... and at that point I was""" start="00:36:43.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""still struggling with pure lpeg, and I""" start="00:36:46.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""couldn't do much with it, so I tried to""" start="00:36:49.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""learn Re.lua instead, and I wrote this old""" start="00:36:52.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""class here...""" start="00:36:55.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that allowed me to use a preprocessor""" start="00:36:56.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""on patterns for Lua. And the thing is that""" start="00:37:01.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""with this preprocessor I could""" start="00:37:03.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""specify precedence grammars using this""" start="00:37:04.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing here, that worked, but was super""" start="00:37:07.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""clumsy... and I gave up after a few attempts.""" start="00:37:11.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and in 2022 I heard about something""" start="00:37:16.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""called lpegrex,""" start="00:37:21.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that was a... a kind of extension or Re,""" start="00:37:23.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it was much more powerful than re.lua,""" start="00:37:29.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but after a while I realized that it""" start="00:37:32.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""had the same defects as re.lua...""" start="00:37:34.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and let me explain that, because""" start="00:37:37.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it has all to do with the things about""" start="00:37:40.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""black boxes and magic that I told in the""" start="00:37:44.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""beginning. Both... I mean, sorry, neither""" start="00:37:48.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""re.lua or lpegrex had some features that""" start="00:37:52.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I needed... they didn't let us explore...""" start="00:37:57.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sorry, they received a pattern that was""" start="00:38:00.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""specified as a string, and it converted""" start="00:38:03.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that into an lpeg pattern, but it didn't""" start="00:38:06.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""let us explore the the lpeg patterns""" start="00:38:09.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that it generated...""" start="00:38:12.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""their code was written in a way""" start="00:38:15.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that was REPL-unfriendly - I""" start="00:38:18.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""couldn't modify parts of the code""" start="00:38:21.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""bit by bit in a REPL and try to change""" start="00:38:24.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the code without changing the""" start="00:38:28.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""original file... the code was very""" start="00:38:31.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""hard to explore, to hack, and to extend -""" start="00:38:34.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in my opinion... the documentation was not""" start="00:38:36.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""very clear... and I sent one or two messages""" start="00:38:39.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to the the developer of lpegrex and...""" start="00:38:43.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""he was too busy to help me. He""" start="00:38:47.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""answered it very briefly, and, uh, to be""" start="00:38:50.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""honest I felt... rejected. I felt that I""" start="00:38:53.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""wasn't doing anything interesting...""" start="00:38:56.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""whatever, whatever...""" start="00:38:58.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""So, in 2022 I was trying to learn lpegrex""" start="00:39:03.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""because I was thinking that it would""" start="00:39:09.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""solve my problems - but it didn't...""" start="00:39:11.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it didn't have the features that I needed,""" start="00:39:13.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it was hard to extend, hard to explore,""" start="00:39:16.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and hard to debug, and I""" start="00:39:20.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""decided to rewrite it in a more""" start="00:39:23.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""hacker-friendly way - in the sense that...""" start="00:39:25.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""was modular, and I could replace any""" start="00:39:30.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""part of the module from a REPL...""" start="00:39:33.760" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""ELpeg1.lua""" start="00:39:35.400" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""My version of it was called ELpeg1.lua...""" start="00:39:35.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I decided that in my version I""" start="00:39:43.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""wouldn't have the part that""" start="00:39:47.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""receives a grammar specified as a string""" start="00:39:49.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and converts that to lpeg... I would""" start="00:39:54.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""just have the backend part, that are the""" start="00:39:57.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""functions in lpeg that let us specify""" start="00:40:00.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""powerful grammars.""" start="00:40:04.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Let me go back. Let me explain a""" start="00:40:05.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""bit about lpeg... Lua has""" start="00:40:11.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""coercions: the + expects to receive""" start="00:40:15.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""true numbers, and if one of its arguments,""" start="00:40:21.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""or both of them, are strings, it converts""" start="00:40:24.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the string... the strings to numbers so in""" start="00:40:27.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this case here, 2+&quot;3&quot;,""" start="00:40:29.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it returns the number 5,""" start="00:40:33.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this is the concatenation""" start="00:40:36.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""operator... it expects to receive""" start="00:40:39.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""strings, so in this case it will""" start="00:40:42.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""convert the number 2 to the string &quot;2&quot;,""" start="00:40:45.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and the concatenation of thes two""" start="00:40:47.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""things will be 23... oops, sorry, &quot;23&quot;""" start="00:40:50.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""as a string.""" start="00:40:54.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Lpeg also has some coercions.""" start="00:40:56.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I usually set these""" start="00:40:58.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""globals to let me write my grammars""" start="00:41:01.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in a very compact way, so instead""" start="00:41:05.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of lpeg.B, lpeg.C, etc I use these globals,""" start="00:41:09.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""like uppercase B, uppercase C, and so on...""" start="00:41:14.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and with these globals I can write""" start="00:41:18.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""things like this: C(1)*&quot;_&quot;...""" start="00:41:21.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and lpeg knows that lpeg.C...""" start="00:41:26.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it sort of expands this to lpeg.C,""" start="00:41:33.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but lpeg.C expects to receive""" start="00:41:38.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""an lpeg pattern, and 1 is not yet an""" start="00:41:42.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpeg pattern, so it is coerced into an""" start="00:41:44.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpeg pattern by calling lpeg.P,""" start="00:41:47.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so this short thing here becomes""" start="00:41:51.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""equivalent to lpeg.C(lpeg.P(1)), and the""" start="00:41:55.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""multiplication, when at least one of its""" start="00:42:03.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""arguments is an lpeg pattern... it expects""" start="00:42:07.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to receive two lpeg patterns, and in""" start="00:42:10.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this case the one at the right is""" start="00:42:13.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""just a string, so it is coerced to an lpeg""" start="00:42:15.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""pattern by using lpeg.P.""" start="00:42:18.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""With this idea we can sort of""" start="00:42:20.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understand the comparison here. I mean,""" start="00:42:25.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""let me run it again... this first part is""" start="00:42:28.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""very similar to a regular expression""" start="00:42:31.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here at the left...""" start="00:42:34.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and when we apply this... Lua pattern""" start="00:42:35.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to this subject here the result""" start="00:42:39.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is this thing here, this thing, this""" start="00:42:43.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing and this thing... I'm going to""" start="00:42:47.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""call each one of these results""" start="00:42:54.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;captures&quot;, so each of these things""" start="00:42:56.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""between parentheses &quot;captures&quot; a substring""" start="00:42:59.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of the original string and these""" start="00:43:03.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""captured substrings are returned in a""" start="00:43:06.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""certain order. Here is how to express the""" start="00:43:08.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""same thing in lpeg...""" start="00:43:11.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's very cryptic but it's a""" start="00:43:12.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""good way to understand the some basic""" start="00:43:15.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""operators of lpeg, I mean we can look at""" start="00:43:20.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the manual and understand and""" start="00:43:23.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""what C, S and R do, and also""" start="00:43:26.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""exponentiation... and this strange thing""" start="00:43:30.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here receives this string here, runs""" start="00:43:37.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a function that I have defined, that""" start="00:43:41.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""converts it to an object of a certain""" start="00:43:43.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""class, and that class""" start="00:43:46.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""represents Re patterns, so this thing""" start="00:43:47.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is treated as a pattern for re.lua,""" start="00:43:52.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it is matched against the string,""" start="00:43:54.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and it returns the same thing as the""" start="00:43:56.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""other one.""" start="00:43:59.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Also, this thing here also has a""" start="00:44:02.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""comparison with lpegrex, but these""" start="00:44:05.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""patterns are very trivial, they""" start="00:44:08.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""don't do anything very strange...""" start="00:44:11.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so let's go back and see what""" start="00:44:13.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""kinds of very strange things there are.""" start="00:44:15.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Here is the page of lpegrex at github,""" start="00:44:18.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here's the documentation...""" start="00:44:26.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it's relatively brief,""" start="00:44:29.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it explains lpegrex as being an""" start="00:44:32.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""extension of Re.lua, so it explains""" start="00:44:35.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""mainly the additional features... here is a""" start="00:44:39.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""quick reference that explains only the""" start="00:44:42.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""additional features...""" start="00:44:45.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""some of the these things""" start="00:44:46.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I was able to understand""" start="00:44:49.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""by struggling a lot, and some I wasn't""" start="00:44:50.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""able to even by spending several evenings""" start="00:44:57.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""try to to build examples...""" start="00:45:02.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this is something very nice. Lpegrex""" start="00:45:04.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""comes with some example parsers... and""" start="00:45:12.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here is a parser that parses the Lua""" start="00:45:15.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""grammar - I mean, this is the the grammar""" start="00:45:18.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""for Lua 5.4 at the end of the""" start="00:45:22.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""reference manual... it's just this... this""" start="00:45:25.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is in a kind of BNF, and this is the BNF""" start="00:45:31.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""translated""" start="00:45:34.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to the language of lpegrex, so this""" start="00:45:35.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing uses many constructions that are""" start="00:45:39.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in re.lua and some extra constructions that""" start="00:45:43.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""are described here... and with these""" start="00:45:48.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""examples I was able to to understand""" start="00:45:50.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""some of the...""" start="00:45:54.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of these things here that are""" start="00:45:55.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""described here in the quick""" start="00:45:58.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""reference - but not all.""" start="00:46:00.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""So, I wasn't able to use lpegrex""" start="00:46:04.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""by itself, because some things didn't""" start="00:46:11.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""make much sense, and I decided to""" start="00:46:14.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""reimplement it in my own style,""" start="00:46:16.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""because that would be a way to map...""" start="00:46:18.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to at the very least map what I had""" start="00:46:23.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understood and what I didn't, learn""" start="00:46:26.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""one feature at a time, do comparisons, and""" start="00:46:29.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so on.""" start="00:46:33.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Here I pointed to two features of lpeg...""" start="00:46:35.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in one I said &quot;Oh, great! This thing can""" start="00:46:38.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""be used to to define grammars, even""" start="00:46:41.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""recursive grammars&quot;, and so on...""" start="00:46:44.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and this is an &quot;Oh, no!&quot; feature - one""" start="00:46:45.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing that didn't make any sense at all...""" start="00:46:49.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""group captures. One thing that I did to""" start="00:46:51.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understand group captures was to""" start="00:46:56.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""represent them as diagrams. Of course in""" start="00:46:59.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the beginning I was drawing these""" start="00:47:02.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagrams by hand, but then I realized""" start="00:47:05.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that I could use the bits of lpeg""" start="00:47:08.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that I already knew to build a grammar""" start="00:47:11.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that would parse a little language and""" start="00:47:14.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""generate these diagrams in LaTeX, and I was""" start="00:47:17.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""able to make this.""" start="00:47:21.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""In this diagram here""" start="00:47:21.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this thing above the arrow is Lua code...""" start="00:47:25.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""a piece of Lua code that""" start="00:47:30.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""specifies an lpeg pattern... this""" start="00:47:33.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing here at the top is the string that""" start="00:47:37.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""is being matched, and the things below""" start="00:47:39.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the underbraces are the captures that""" start="00:47:43.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""each thing... sorry, that each thing""" start="00:47:46.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""captures.""" start="00:47:50.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""For example, this underbrace here""" start="00:47:51.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""corresponds to this pattern here,""" start="00:47:58.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that parses a single character but""" start="00:48:00.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""doesn't return any captures, this thing""" start="00:48:02.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here parses a single &quot;b&quot; and doesn't""" start="00:48:05.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""return any captures, this thing here""" start="00:48:08.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""parses a single character and captures""" start="00:48:11.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it, and this thing here parses the""" start="00:48:14.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""character &quot;d&quot; and captures it... and this""" start="00:48:16.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""other thing here transforms this""" start="00:48:21.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""pattern into another pattern...""" start="00:48:24.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""returns first a capture with all""" start="00:48:27.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the string that was parsed by this""" start="00:48:33.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""pattern here, and then all the captures""" start="00:48:35.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""returned by this thing here before""" start="00:48:37.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the &quot;:&quot;.""" start="00:48:41.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""So, this was a way to build""" start="00:48:42.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""concrete examples for things that the""" start="00:48:45.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpag manual was explaining in a very terse""" start="00:48:48.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""way, and it worked for me - some things""" start="00:48:52.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that were very""" start="00:48:55.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""mysterious started to make sense, and I""" start="00:48:57.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""started to have intelligent questions""" start="00:48:59.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to ask in the mailing list.""" start="00:49:03.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And with that I was able to""" start="00:49:06.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understand what are group captures,""" start="00:49:10.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and group captures that receive a name...""" start="00:49:12.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Well, let me explain what this does.""" start="00:49:17.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""This thing here captures... sorry, parses""" start="00:49:22.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the empty string and returns this as a""" start="00:49:27.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""constant... so, this is something that""" start="00:49:29.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""doesn't exist in regular expressions...""" start="00:49:32.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""it parses nothing and""" start="00:49:35.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""returns this as a capture... then this""" start="00:49:38.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""thing here returns these two""" start="00:49:41.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""constants here, and parses the empty""" start="00:49:44.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""string, and this thing here converts""" start="00:49:47.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the results of this thing here into a""" start="00:49:51.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""group capture, and stores it in the label""" start="00:49:54.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;d&quot;... and then here's another constant""" start="00:49:57.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""capture.""" start="00:50:03.280" video="mainVideo-repl" id="subtitle"]]
+
+[[!template new="1" text="""Building lists""" start="00:50:03.720" video="mainVideo-repl" id="subtitle"]]
+
+[[!template text="""And I realized that these things""" start="00:50:03.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here were similar to how Lua""" start="00:50:05.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""specifies building lists...""" start="00:50:08.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""when we build... sorry, tables. When""" start="00:50:09.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""we build a table, and we say that the""" start="00:50:16.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""first element of the table is here, this""" start="00:50:18.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""element is put at the end of the table...""" start="00:50:21.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""when after the that would say d=42...""" start="00:50:23.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""we are putting the 42""" start="00:50:29.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in the the slot whose key is &quot;d&quot;.""" start="00:50:31.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""This was happening with lpeg captures,""" start="00:50:34.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but there was something very strange...""" start="00:50:39.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""these group captures could hold""" start="00:50:43.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""more than one capture - more than one""" start="00:50:46.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""value... so there was something between""" start="00:50:49.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lists and tables. I started to use this""" start="00:50:51.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""notation to...""" start="00:50:58.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""explain in my notation what they""" start="00:51:00.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""were doing... many things started""" start="00:51:04.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to make sense, many mysterious""" start="00:51:08.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""sentences in the manual started to""" start="00:51:10.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""make sense... but some didn't...""" start="00:51:12.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but at least I was able to send""" start="00:51:14.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""some intelligent questions to the""" start="00:51:19.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""mailing lis,t and the author of Lua and""" start="00:51:22.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpeg answered some of them...""" start="00:51:25.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""he was not very happy about my""" start="00:51:27.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""questions - he... told me that those""" start="00:51:31.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""diagrams were a waste of time, the""" start="00:51:34.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""manual was perfectly clear, and so on...""" start="00:51:37.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""whatever - but I was able to...""" start="00:51:40.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so, it was weird, but I was able to""" start="00:51:44.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""understand lots of things from his""" start="00:51:48.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""answers. This is a copy of one of""" start="00:51:51.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""my messages, then there's another one,""" start="00:51:56.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""another one, some of them had diagrams...""" start="00:51:58.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""then he complained about these diagrams,""" start="00:52:01.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""he said that these things here, that look""" start="00:52:04.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""like table constructors, &quot;do not exist&quot;...""" start="00:52:08.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""whatever... anyway, once I understood""" start="00:52:11.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""group captures many features""" start="00:52:17.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""were very easy to understand""" start="00:52:20.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I started to be able to use lpeg to""" start="00:52:23.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""to build some very interesting things...""" start="00:52:26.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I was able to reproduce some""" start="00:52:28.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of the features that I saw in lpegrex -""" start="00:52:33.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""remember that this... where is that?""" start="00:52:36.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this is the syntax of Lua... here -""" start="00:52:41.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I was able to understand""" start="00:52:46.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""how these things here were translated to""" start="00:52:48.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpeg code... to lpeg patterns""" start="00:52:52.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""by using group captures in a certain""" start="00:52:55.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""way... I was able to implement them""" start="00:52:58.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in ELpeg1.lua...""" start="00:53:03.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and after some time I was able to use""" start="00:53:04.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""ELpeg1.lua to build grammars that""" start="00:53:08.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""were able to parse""" start="00:53:12.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""arithmetical expressions with the""" start="00:53:14.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""right precedence... and here's an example""" start="00:53:18.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in which I built the grammar step by step...""" start="00:53:20.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I test the current grammar, and I""" start="00:53:23.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""replace a bit, and then I test the new""" start="00:53:29.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""grammar and so on...""" start="00:53:35.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and you can see that the result is""" start="00:53:36.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""always a tree that is drawn in a""" start="00:53:39.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""nice two dimensional way...""" start="00:53:43.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""At this point these powers here""" start="00:53:44.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""are returned as a list,""" start="00:53:48.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""as an operation &quot;pow&quot;""" start="00:53:50.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""with several arguments, here... and then""" start="00:53:53.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I apply a kind of parsing combinator,""" start="00:53:57.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here... that transforms these trees into""" start="00:54:00.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""other trees and with these combinators""" start="00:54:03.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here I can specify that the &quot;^&quot; is""" start="00:54:08.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""associative in a certain direction...""" start="00:54:12.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that the &quot;/&quot; is associative in""" start="00:54:14.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""another direction... the &quot;-&quot; uses""" start="00:54:17.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the same direction as a the &quot;/&quot;,""" start="00:54:20.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and so on... and they have the""" start="00:54:23.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""right precedences.""" start="00:54:26.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""So, here are the tests...""" start="00:54:29.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here is my file ELpeg1.lua... it has""" start="00:54:34.560" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""several classes, each class has tests""" start="00:54:38.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""after it...""" start="00:54:41.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I was able to implement something""" start="00:54:42.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that lpegrex has, that is called""" start="00:54:46.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""&quot;keywords&quot;, that is very useful for parsing""" start="00:54:50.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""programs in programming languages...""" start="00:54:53.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I was able to implement something""" start="00:54:56.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""similar to the debugger... to the""" start="00:54:59.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""lpeg debugger lpeg uses... I was""" start="00:55:02.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""frustrated by some limitations of""" start="00:55:08.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the lpeg debugger, and I implemented""" start="00:55:11.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""my own that is, uh... much better!...""" start="00:55:16.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Let me show something else... I was""" start="00:55:23.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""able to translate a good part of the""" start="00:55:24.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Lua parser, here, to ELpeg1.lua... I haven't""" start="00:55:27.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""finished yet, but I have most of the""" start="00:55:33.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the translation here...""" start="00:55:38.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and after having all that I was able to""" start="00:55:39.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""build other grammars very quickly...""" start="00:55:47.280" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""writing new parsers finally became fun.""" start="00:55:50.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""And here's one example that I showed in the""" start="00:55:55.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""beginning.""" start="00:55:58.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""If I remember correctly...""" start="00:56:00.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I took a figure from the Wikipedia...""" start="00:56:05.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I don't have its link now...""" start="00:56:10.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""but I specified a grammar that parses""" start="00:56:12.440" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""exactly the example that appears""" start="00:56:17.080" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""in the Wikipedia...""" start="00:56:20.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""so, with my grammar, considering that""" start="00:56:20.840" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the top level entry is &quot;Stmt&quot;, when I""" start="00:56:24.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""parse this string here""" start="00:56:28.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the result is this tree...""" start="00:56:30.680" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and I can do some operations on that,""" start="00:56:36.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I can define how this thing is to be""" start="00:56:41.120" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""converted into LaTeX,""" start="00:56:44.040" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I can define other operations""" start="00:56:45.640" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that convert trees into other trees, and""" start="00:56:49.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""here are some tests of these operations...""" start="00:56:53.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""This is what I showed in the beginning...""" start="00:56:54.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I'm not going to explain all the details""" start="00:57:00.360" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""of this thing now...""" start="00:57:02.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this :show() converts this thing""" start="00:57:04.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""into LaTeX in the way specified by these""" start="00:57:09.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""instructions here, that says that...""" start="00:57:11.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""well, whatever...""" start="00:57:16.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and here's the result - the LaTeXed result...""" start="00:57:25.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and these diagrams here are generated by""" start="00:57:32.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this file here, that defines a simple""" start="00:57:41.760" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""grammar that parses this thing here,""" start="00:57:46.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and then LaTeXes it in a certain way, and""" start="00:57:48.480" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""and also tests to check if this code here...""" start="00:57:52.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""this Lua code that generates an lpeg grammar...""" start="00:57:56.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""parses this subject here and""" start="00:58:02.000" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""returns the expected result...""" start="00:58:05.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""So: this is the code that I""" start="00:58:08.600" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""wanted to show. I wanted to show many""" start="00:58:12.240" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""more things but I wasn't able to prepare""" start="00:58:16.720" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""them before the conference... and I hope""" start="00:58:19.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""that soon - for some value of &quot;soon&quot; -""" start="00:58:23.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I'll be able to create REPL-based""" start="00:58:27.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""tutorials for lpeg, Re, and ELpeg1.lua...""" start="00:58:30.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""where lpeg is something very famous,""" start="00:58:33.920" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Re is a module of lpeg...""" start="00:58:36.320" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""I could also do something like this""" start="00:58:39.200" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""for lpegrex... and ELpeg1.lua is""" start="00:58:42.400" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""the thing that I wrote, the one that""" start="00:58:47.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""has test in comments, and the tests""" start="00:58:51.160" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""usually generate trees, and sometimes""" start="00:58:56.800" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""they generate TeX code.""" start="00:58:59.520" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""Yeah, so that's it! I wanted to""" start="00:59:00.880" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""present much more but I wasn't able to""" start="00:59:04.960" video="mainVideo-repl" id="subtitle"]]
+[[!template text="""prepare it... so: sorry, thanks, bye! =)""" start="00:59:07.160" video="mainVideo-repl" id="subtitle"]]
+
+Questions or comments? Please e-mail [eduardoochs@gmail.com](mailto:eduardoochs@gmail.com?subject=Comment%20for%20EmacsConf%202023%20repl%3A%20REPLs%20in%20strange%20places%3A%20Lua%2C%20LaTeX%2C%20LPeg%2C%20LPegRex%2C%20TikZ)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/repl-before.md b/2023/info/repl-before.md
new file mode 100644
index 00000000..0266527b
--- /dev/null
+++ b/2023/info/repl-before.md
@@ -0,0 +1,28 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 60-min talk; Q&A: IRC
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="repl-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="repl-mainVideo" data="""
+00:00.000 Intro
+00:21.560 Diagrams
+01:03.320 eev
+02:51.360 Another figure
+08:52.560 eev-wconfig, magic, and black boxes
+10:44.240 Lua
+16:10.960 Object orientation in Lua
+19:19.823 My init file
+20:31.000 LaTeX and LuaLaTeX
+25:28.280 Manim
+26:30.880 Generating diagrams from REPLs
+31:03.240 Parsers
+39:03.200 ELpeg1.lua
+50:04.160 Building lists
+
+"""]]<div></div>Duration: 59:10 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--main.opus">Download --main.opus (29MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--main.webm">Download --main.webm (187MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-repl--repls-in-strange-places-lua-latex-lpeg-lpegrex-tikz--eduardo-ochs--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/oAjqkLNfo9B63EE1G6cJJV">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/repl-nav.md b/2023/info/repl-nav.md
new file mode 100644
index 00000000..7ef1a2a2
--- /dev/null
+++ b/2023/info/repl-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/eval">Editor Integrated REPL Driven Development for all languages</a>
+Next by track: <a href="/2023/talks/doc">Literate Documentation with Emacs and Org Mode</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/sat-close-after.md b/2023/info/sat-close-after.md
new file mode 100644
index 00000000..a40a2ed3
--- /dev/null
+++ b/2023/info/sat-close-after.md
@@ -0,0 +1,178 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="sat-close-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""[Speaker 0]: Session is being recorded.""" start="00:00:05.200" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Just waiting for Corwin and Leo.""" start="00:00:06.819" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Great. Corwin, would you like to share your""" start="00:00:16.359" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""screen?""" start="00:00:17.960" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Let's see the audio through BBB so we don't""" start="00:00:37.620" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""have to splice it in afterwards because it's""" start="00:00:39.840" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""annoying to splice things.""" start="00:00:41.720" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I mean, Leo will be taking care of it,""" start="00:00:43.680" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""not me, so. Okay, he's going to finish up.""" start="00:00:47.020" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: So, in the meantime, it's been a long day,""" start="00:00:52.720" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""people. Thanks for sticking around.""" start="00:00:55.320" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""And we're going to do a little bit of jazz""" start="00:00:57.180" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""handing until Corwin comes back.""" start="00:00:58.739" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Smack. I""" start="00:01:00.060" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 2]: can't imagine an Emacs con without getting to""" start="00:01:14.240" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""enjoy Leo's famous jazz hands.""" start="00:01:16.020" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: I can tell you it's a lot easier...""" start="00:01:21.420" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Hello? I can tell you it's a lot easier to do""" start="00:01:23.160" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""jazz hands at 9am EST than it is at 5pm EST,""" start="00:01:25.760" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""because for me it's 11 and I've barely seen""" start="00:01:30.860" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""this 1 today. Okay Corwin,""" start="00:01:34.160" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""do you have a presentation right now?""" start="00:01:39.720" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""We do not seem to be able to hear you,""" start="00:01:45.480" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Corwin. Okay, just bear with us,""" start="00:01:47.440" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""folks. We're gonna figure out this 1.""" start="00:01:55.240" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""This is the last bug of the day,""" start="00:01:57.380" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""and then we're clear until tomorrow.""" start="00:01:58.660" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 2]: I just heard you, but I don't know if it was""" start="00:02:05.820" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""here or via mumble. Okay.""" start="00:02:07.700" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: Can we figure out? Whenever there's a problem""" start="00:02:14.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""like this, like Sash and myself are furiously""" start="00:02:17.360" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""typing in the background,""" start="00:02:19.460" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""we say, oh, can we fix this slide?""" start="00:02:20.640" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""But here, I'm stumped.""" start="00:02:22.740" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 2]: I think Corbin is in the GenTrack on Mumble.""" start="00:02:33.180" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay, so let's all switch to GenTrack and""" start="00:02:40.520" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""we'll be able to figure out the way.""" start="00:02:43.780" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, well, while Corwin figures out how to""" start="00:03:18.420" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""get started, we might as well maybe do a""" start="00:03:21.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""little bit of closing remarks,""" start="00:03:23.940" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""and then you can jump in whenever you want.""" start="00:03:25.380" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sounds good to me.""" start="00:03:29.440" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. Thank you, everyone,""" start="00:03:31.980" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""for coming to Emacs Conf 2023.""" start="00:03:34.459" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""We made it to the end of the first day!""" start="00:03:37.120" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Hooray! We're going to keep these closing""" start="00:03:39.140" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""remarks short because it's a long day.""" start="00:03:40.440" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""It's almost midnight and Leah will turn into""" start="00:03:42.880" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""a pumpkin very soon. So before that happens,""" start="00:03:44.920" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""we just want to say hello and thanks.""" start="00:03:48.580" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""And pre-recorded talks are already up.""" start="00:03:50.640" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""They're on the talk pages,""" start="00:03:55.260" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""they're on media.emaxcontent.org.""" start="00:03:56.520" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""We'll work on extracting the live talks,""" start="00:03:58.860" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""but it'll take a few weeks.""" start="00:04:00.620" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 3]: Maybe, you""" start="00:04:01.920" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 0]: know, we'll see how it goes.""" start="00:04:02.220" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Please feel free to spread the word,""" start="00:04:04.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""because you know some people didn't actually""" start="00:04:06.100" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""know there was EmacsConf this weekend,""" start="00:04:07.720" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""so let them know, because it's a lot of fun.""" start="00:04:09.380" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""More talks tomorrow. And if you've got ideas""" start="00:04:11.400" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""for making things better,""" start="00:04:15.020" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""or If you'd like to tell us what's working""" start="00:04:15.900" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""well and what you'd like,""" start="00:04:17.500" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""please put them in the conference pad at""" start="00:04:18.940" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""pad.emaxconf.org. Anything anyone want to""" start="00:04:21.180" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""add?""" start="00:04:26.580" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm all good.""" start="00:04:30.060" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 2]: Let's see if Corwin can get his mic to work.""" start="00:04:32.900" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""No, it's not.""" start="00:04:37.740" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, I mean, did you want to say something""" start="00:04:43.520" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""as well? Because people have heard you talk""" start="00:04:45.140" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""all day long on the Dev track,""" start="00:04:47.220" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""but not on the general track,""" start="00:04:49.120" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""actually. It's the first time they hear you""" start="00:04:50.240" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""today.""" start="00:04:51.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 2]: Right. Oh, well, way to put me on the spot,""" start="00:04:52.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""but more seriously, thanks.""" start="00:04:56.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""So yeah, it's a lot of fun.""" start="00:04:58.040" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""You know, it's, we sort of keep coming back""" start="00:05:00.340" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""every year and doing this conference.""" start="00:05:03.760" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""It's always been fun. And we keep doing it""" start="00:05:06.300" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""thanks to, you know, all the people who""" start="00:05:08.720" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""submit all these amazing talks with these""" start="00:05:11.320" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""amazing sessions. And of course the audience""" start="00:05:14.600" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""as well. I don't have a lot to say I guess""" start="00:05:16.560" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""for today because I think we're hoping to""" start="00:05:19.940" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""keep it kind of short and sweet.""" start="00:05:21.500" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""So yeah, I think that's about it for me.""" start="00:05:24.400" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I guess we'll maybe wait another minute or so""" start="00:05:25.920" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""to see if Cormen can make it.""" start="00:05:28.380" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""But yeah, that's all for me.""" start="00:05:30.580" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right, great. Speaking of putting people""" start="00:05:34.820" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""on the spot, you might see a face in the room""" start="00:05:37.920" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""that you might have seen last year,""" start="00:05:41.600" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""but we've got Flobby Koda in the room as""" start="00:05:43.840" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""well, who you might not have heard of him but""" start="00:05:45.700" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""he's been doing a lot of the check-ins today""" start="00:05:49.400" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""for most of the speakers and he's been doing""" start="00:05:51.140" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""a wonderful job at it.""" start="00:05:53.360" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Florian, do you want to say a word if only to""" start="00:05:54.520" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""say you're being put on the spot?""" start="00:05:56.560" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 4]: I have nothing prepared really but I just""" start="00:06:00.620" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""want to thank everybody who could,""" start="00:06:02.840" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""with who I could talk in between.""" start="00:06:05.380" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""So I had like wonderful 20 to 30 minute talks""" start="00:06:07.360" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""with every speaker before they get into the""" start="00:06:10.580" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""live Q&A or the live presentation.""" start="00:06:12.900" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Thanks a lot for everybody,""" start="00:06:15.780" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I learned quite a lot and also thank you for""" start="00:06:16.920" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""all of you guys and everyone for having such""" start="00:06:19.640" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""a beautiful experience here.""" start="00:06:22.360" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, thank you. We're glad to have you.""" start="00:06:25.960" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Okay, Sasha, Unless you've got anything else""" start="00:06:29.180" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""to add, and Corwin, have you fixed your""" start="00:06:31.120" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""microphone? Yes, we can hear you Corwin.""" start="00:06:33.880" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Okay, well let's start again.""" start="00:06:38.400" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Let's forget everything you've heard for the""" start="00:06:39.160" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""last 20 minutes. We'll start again.""" start="00:06:40.440" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I'm just kidding.""" start="00:06:41.640" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 3]: You tell me. No, I mean,""" start="00:06:35.280" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I don't know what I could possibly add to all""" start="00:06:45.560" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""that. I think we absolutely should get some""" start="00:06:47.760" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""rest, save it for tomorrow.""" start="00:06:50.200" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I was just looking through these notes in the""" start="00:06:52.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""couple of minutes that I had between my own""" start="00:06:55.240" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""talk. Thank you for your help with that.""" start="00:06:57.480" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""But also, especially you,""" start="00:07:00.720" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Sasha, and Leo, and everybody in the IRC over""" start="00:07:02.420" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""the months here, just encouraging me to keep""" start="00:07:08.040" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""going when it was just seemed futile.""" start="00:07:10.440" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Even though it just really turned into a""" start="00:07:13.580" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""brain dump, I appreciate getting the chance""" start="00:07:15.780" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""of feeling like that process is more""" start="00:07:18.120" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""documented now than it was before I did it.""" start="00:07:20.320" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Hey, that's not nothing,""" start="00:07:22.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""right? And that's why we all do this.""" start="00:07:23.440" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""And I don't know, Floey really said it""" start="00:07:25.440" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""perfect. Like, I appreciate the chance to get""" start="00:07:28.360" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""to work on this with you.""" start="00:07:30.520" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I learned so much.""" start="00:07:31.560" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: Amazing. Well, you know what?""" start="00:07:36.400" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Without further ado, I believe it's time for""" start="00:07:39.020" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""us to say goodbye for day 1.""" start="00:07:41.380" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""We will obviously be seeing you tomorrow at 9""" start="00:07:42.840" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""a.m. I think the schedule is actually stating""" start="00:07:45.340" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""we're starting at 8.59am.""" start="00:07:48.740" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Is it correct?""" start="00:07:50.500" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, I think the chrono tab will kick in.""" start="00:07:51.220" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""The video is like 6 minutes long.""" start="00:07:54.020" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Actually, maybe I should,""" start="00:07:57.620" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I'll give it an extra minute for safety,""" start="00:07:58.660" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""I think. Yeah, yeah. I'll tweak the timing.""" start="00:08:00.660" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think that'd be wise for people we do not""" start="00:08:04.340" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""know basically 8.59 is when I brush my teeth""" start="00:08:06.420" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""before going live so we might be in a very""" start="00:08:08.460" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""awkward spot for me to introduce the talk if""" start="00:08:10.680" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""it happens. Well anyway folks thank you very""" start="00:08:12.740" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""much for watching and we'll see you tomorrow.""" start="00:08:15.420" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""Bye-bye! All right, I have closed the bbb oh""" start="00:08:19.360" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""it's restarting apparently oh it's we're back""" start="00:08:31.320" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""on the q and a between stephan and let's""" start="00:08:34.780" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""close this hey we are off""" start="00:08:37.480" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""[Speaker 3]: we are clear I am pausing the recording I""" start="00:08:44.700" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""don't have permission to do that in this""" start="00:08:52.540" video="mainVideo-sat-close" id="subtitle"]]
+[[!template text="""room.""" start="00:08:54.280" video="mainVideo-sat-close" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20sat-close%3A%20Saturday%20closing%20remarks)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/sat-close-before.md b/2023/info/sat-close-before.md
new file mode 100644
index 00000000..d44b5b4b
--- /dev/null
+++ b/2023/info/sat-close-before.md
@@ -0,0 +1,18 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 9-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
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="sat-close-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-sat-close--saturday-closing-remarks--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 09:00 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.opus">Download --main.opus (4.7MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.webm">Download --main.webm (32MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--pad.md">Download --pad.md</a></li><li><a href="https://www.youtube.com/playlist?list=PLomc4HLgvuCUdrW3JkugtKv8xPelUoOyP">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><div></div><div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.opus">Download --main.opus (4.7MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--main.webm">Download --main.webm (32MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-close--saturday-closing-remarks--pad.md">Download --pad.md</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/sat-close-nav.md b/2023/info/sat-close-nav.md
new file mode 100644
index 00000000..219f76fc
--- /dev/null
+++ b/2023/info/sat-close-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/sat-open">Saturday opening remarks</a>
+Next by track: <a href="/2023/talks/sun-open">Sunday opening remarks</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/sat-open-after.md b/2023/info/sat-open-after.md
new file mode 100644
index 00000000..aee69d2e
--- /dev/null
+++ b/2023/info/sat-open-after.md
@@ -0,0 +1,132 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="sat-open-mainVideo-transcript"></a>
+# Transcript
+
+[[!template text="""Welcome to EmacsConf 2023, where we get to find out""" start="00:00:00.000" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""just how much we can do with a text editor.""" start="00:00:04.559" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Just like last year, we have two tracks.""" start="00:00:07.698" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""There's a General track and a Development track,""" start="00:00:10.317" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""but really, you'll probably find""" start="00:00:12.656" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""interesting things on both tracks""" start="00:00:14.235" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""no matter what your level of experience is,""" start="00:00:15.954" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so don't feel limited to one or the other.""" start="00:00:18.493" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""For Saturday, it's mostly Org Mode talks on the General track.""" start="00:00:21.152" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The doc talk on the development track""" start="00:00:24.711" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""is about literate documentation with Emacs and Org Mode,""" start="00:00:26.870" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and it's a general-audience talk""" start="00:00:30.129" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""even though it's in the Development track.""" start="00:00:31.688" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""I just ran out of space in the schedule.""" start="00:00:33.607" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The best parts of EmacsConf are the conversations.""" start="00:00:35.266" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The wiki has a page on how to watch and participate,""" start="00:00:38.505" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and I'll give you a quick overview as well.""" start="00:00:41.264" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can watch both streams at live.emacsconf.org""" start="00:00:44.043" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""using free and open source software.""" start="00:00:47.522" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Using a streaming media player like mpv""" start="00:00:50.401" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""seems to be the best way to watch in terms of performance""" start="00:00:52.820" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""but there are also web-based players""" start="00:00:56.219" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""just in case that's all you've got.""" start="00:00:57.818" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The schedule shows the General track on top""" start="00:01:00.297" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and the Development track on the bottom,""" start="00:01:02.296" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so you can see what else is going on.""" start="00:01:03.975" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""As you're watching the talks,""" start="00:01:06.594" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""you can refer to the schedule in another window.""" start="00:01:07.793" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Hover over the boxes to see the times and titles,""" start="00:01:10.692" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and click on the boxes in the schedule""" start="00:01:13.711" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""to jump to the talk's page for more details.""" start="00:01:15.610" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can also get the schedule as an iCalendar file""" start="00:01:18.389" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""or as an Org file in different time zones.""" start="00:01:20.928" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Many talks will be followed by""" start="00:01:23.187" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""live Q&A web conferences with the speaker,""" start="00:01:24.686" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""which will be done in BigBlueButton or BBB.""" start="00:01:27.345" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""These are indicated with a solid border on the schedule""" start="00:01:30.424" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and by Q&A: BBB on the schedule page.""" start="00:01:33.423" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can join the web conference room""" start="00:01:36.582" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""by clicking on the BBB link""" start="00:01:38.281" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""on the schedule page or the talk's webpage.""" start="00:01:39.900" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Then you can ask your questions yourself when the Q&A starts.""" start="00:01:42.839" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""To improve performance, please keep your webcam off""" start="00:01:45.758" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and stay muted until it's your turn to talk.""" start="00:01:48.217" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""This year we're experimenting with automatically switching""" start="00:01:50.956" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""between talks and Q&A sessions,""" start="00:01:53.575" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so the transitions on the stream might be a little sudden,""" start="00:01:55.934" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""but people in the BigBlueButton room""" start="00:01:59.133" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""can continue the conversation""" start="00:02:00.892" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""even after the talk moves off-stream.""" start="00:02:02.571" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Other talks will have Q&A via Etherpad or IRC,""" start="00:02:05.410" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""depending on what the speakers prefer.""" start="00:02:08.769" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""This is indicated in the schedule with a dashed border""" start="00:02:11.088" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and on the schedule page as well.""" start="00:02:14.107" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Please ask your questions in the recommended places""" start="00:02:16.826" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so that the speakers can easily see them.""" start="00:02:19.265" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Some talks will have the Q&A after the event,""" start="00:02:21.784" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so you can add your questions to their Etherpad.""" start="00:02:24.503" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""We'll e-mail the speakers afterwards""" start="00:02:27.362" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and update the talk pages when they answer.""" start="00:02:29.461" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The schedule pages and track pages have quick shortcuts""" start="00:02:32.360" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so that you can find out more about talks, open the Etherpads,""" start="00:02:35.499" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and join the Q&A sessions. The watch page has more tips""" start="00:02:38.978" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""on how to make the most of Q&A.""" start="00:02:42.537" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you can, please add notes and ask questions""" start="00:02:45.236" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""in the Etherpad for the talk. That makes it easier""" start="00:02:48.015" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""for everyone to share their notes,""" start="00:02:51.174" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and speakers and hosts can read the questions from there.""" start="00:02:52.833" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""We'll copy the notes to the talk pages afterwards.""" start="00:02:55.772" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""We have one pad for each talk,""" start="00:02:59.791" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so you can follow the links to get to the next one""" start="00:03:01.850" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""or go back to the schedule and get the link from there.""" start="00:03:03.969" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you have general feedback about""" start="00:03:07.128" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""the conference itself, please put it in""" start="00:03:08.767" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""pad.emacsconf.org/2023 , which is linked on each pad.""" start="00:03:10.926" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can also use this as a general community message board""" start="00:03:16.385" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""for things like Help Wanted.""" start="00:03:19.044" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Internet Relay Chat or IRC can be another great way""" start="00:03:22.183" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""to be part of lots of conversations.""" start="00:03:25.320" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can use chat.emacsconf.org to join the IRC channels""" start="00:03:27.961" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""through your web browser. The tabs on the left can help you""" start="00:03:31.680" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""switch between the different channels.""" start="00:03:34.519" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""There's #emacsconf-gen for the General track""" start="00:03:37.078" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and #emacsconf-dev for the Development track.""" start="00:03:40.340" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you need to reach us, you can join #emacsconf-org""" start="00:03:43.696" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""or e-mail emacsconf-org-private@gnu.org.""" start="00:03:47.415" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can use #emacsconf for hallway conversations.""" start="00:03:52.394" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Of course, you can join any of these channels""" start="00:03:55.673" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""with your favourite IRC client.""" start="00:03:57.792" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""We're on the libera.chat network.""" start="00:04:00.071" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Once again, we're going to be streaming with open captions""" start="00:04:03.910" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""for most of the talks this year, thanks to our speakers and""" start="00:04:06.549" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""captioning volunteers. The captioned talks are indicated""" start="00:04:09.628" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""on the schedule, and with any luck, we'll be posting""" start="00:04:12.987" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""transcripts on talk pages shortly after the talks start.""" start="00:04:15.706" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you need additional accommodations,""" start="00:04:19.205" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""please let us know in #emacsconf-org""" start="00:04:21.024" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and we'll see if we can make things happen.""" start="00:04:23.784" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If something goes down, we'll update status.emacsconf.org.""" start="00:04:25.683" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If it doesn't look like we've noticed yet,""" start="00:04:29.922" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""please let us know in the #emacsconf-org IRC channel,""" start="00:04:31.781" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""where we will be quietly panicking.""" start="00:04:35.220" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""In all of these conversations, please keep in mind""" start="00:04:37.379" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""our guidelines for conduct. You can find them on the wiki,""" start="00:04:40.078" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""They basically boil down to: please be nice.""" start="00:04:43.077" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If all goes well, the prerecorded talks and transcripts""" start="00:04:46.557" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""should be available from the talk pages""" start="00:04:48.996" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""shortly after they start playing,""" start="00:04:50.995" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and we'll post the recordings of live talks""" start="00:04:52.734" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and Q&A sessions within the next month or so.""" start="00:04:54.633" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you'd like to get an update, you can subscribe to""" start="00:04:57.752" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""the emacsconf-discuss mailing list.""" start="00:05:00.271" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""All right, let's get going.""" start="00:05:03.570" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Leo Vivier is hosting the general track,""" start="00:05:05.129" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and Amin Bandali hosting the development track.""" start="00:05:07.529" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The other volunteers and I will run around mostly backstage,""" start="00:05:10.648" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and you'll probably meet us in the closing remarks.""" start="00:05:13.367" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""That's also where we get to thank""" start="00:05:15.446" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""all the people and organizations""" start="00:05:17.085" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""who make EmacsConf even possible.""" start="00:05:18.724" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Thanks for coming to EmacsConf 2023.""" start="00:05:21.763" video="mainVideo-sat-open" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20sat-open%3A%20Saturday%20opening%20remarks)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/sat-open-before.md b/2023/info/sat-open-before.md
new file mode 100644
index 00000000..c812c4c6
--- /dev/null
+++ b/2023/info/sat-open-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 6-min talk; Q&A: Etherpad
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="sat-open-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-sat-open--saturday-opening-remarks--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 05:25 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--main.webm">Download --main.webm (18MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sat-open--saturday-opening-remarks--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/wEZX2JkDFpFqNFXnYeQTyb">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/sat-open-nav.md b/2023/info/sat-open-nav.md
new file mode 100644
index 00000000..c1355bfc
--- /dev/null
+++ b/2023/info/sat-open-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/emacsconf">EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</a>
+Next by track: <a href="/2023/talks/sat-close">Saturday closing remarks</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/scheme-after.md b/2023/info/scheme-after.md
new file mode 100644
index 00000000..17b95b51
--- /dev/null
+++ b/2023/info/scheme-after.md
@@ -0,0 +1,544 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="scheme-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:02.120" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Hello and welcome everyone on EmacsConf 2023.""" start="00:00:02.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I'm Andrew Tropin.""" start="00:00:07.400" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I work on operating systems and programming languages.""" start="00:00:08.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Today, we discuss Lisps, Schemes, REPLs,""" start="00:00:11.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""interactive development,""" start="00:00:16.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and how to make your own cozy development environment.""" start="00:00:18.140" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Interactive development""" start="00:00:23.280" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Let's start from interactive development.""" start="00:00:23.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Lisps are famous for a nice""" start="00:00:26.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Interactive Development Experience.""" start="00:00:29.520" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""They have REPLs.""" start="00:00:32.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Emacs Lisp has its own Lisp machine,""" start="00:00:34.000" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and a lot of cool IDE with different functionality""" start="00:00:40.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""is already here and providing""" start="00:00:44.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""a nice and pleasant experience.""" start="00:00:47.880" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""The question is, is it enough?""" start="00:00:51.620" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""In most cases, yes, but for some languages,""" start="00:00:56.840" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""we have some white spaces, some missing pieces.""" start="00:00:59.921" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And for example, in Scheme world,""" start="00:01:04.840" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""we already have a few tools.""" start="00:01:08.300" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""We have REPL, we have integration for REPL in Emacs,""" start="00:01:10.880" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""but is it enough?""" start="00:01:14.600" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Let's see.""" start="00:01:16.680" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""REPL: Read Eval Print Loop""" start="00:01:18.180" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""We know that Emacs is very good for Lisps and REPL.""" start="00:01:18.180" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Lisp and Emacs should be a perfect setup.""" start="00:01:22.840" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But let's see how REPL basically works.""" start="00:01:26.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It's an event loop which does three things.""" start="00:01:30.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It reads an expression, it evaluates the expression,""" start="00:01:34.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and it prints the result.""" start="00:01:37.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""We can take a simple expression, input it into REPL,""" start="00:01:40.740" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and evaluate it and see the result.""" start="00:01:47.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Very nice, very convenient.""" start="00:01:48.960" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You can experiment and see immediately what is happening.""" start="00:01:50.820" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You can even run a long-running process""" start="00:01:55.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which does something.""" start="00:01:57.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You can interrupt it and everything will be okay.""" start="00:01:58.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But the problem appears""" start="00:02:07.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""when you start to develop a bigger project.""" start="00:02:08.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And in most cases, you don't do""" start="00:02:11.660" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""your whole development in REPL.""" start="00:02:14.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You do only a small part of it.""" start="00:02:16.400" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""In most cases, you just write""" start="00:02:18.461" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the source code in text files,""" start="00:02:20.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and after that, you run those snippets of code""" start="00:02:22.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""from those text files, or run the whole project.""" start="00:02:26.400" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It's not very convenient to copy and paste""" start="00:02:30.721" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""every time the snippets of code to the REPL,""" start="00:02:33.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""see the result, modify the snippet of code,""" start="00:02:36.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""copy it again, and so on.""" start="00:02:38.880" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""So people invented some integration""" start="00:02:41.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""between REPL and your text editor.""" start="00:02:44.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""So you can evaluate expressions inside your text editor""" start="00:02:46.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and see the result here.""" start="00:02:51.600" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Long-lasting loops""" start="00:02:53.720" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Works good so far, but what happens""" start="00:02:53.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""if we run a long-lasting loop,""" start="00:02:56.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which does a lot of operations.""" start="00:03:02.300" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""As you can see here with a simple example,""" start="00:03:05.000" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the output of the function,""" start="00:03:07.840" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""stdout of the function is presented here,""" start="00:03:13.600" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and the resulting value is here.""" start="00:03:16.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""If you run a long-running process,""" start="00:03:18.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you don't see anything happening.""" start="00:03:22.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And you see there's a watch instead of my cursor.""" start="00:03:24.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Maybe you don't see it, but nothing actually happens,""" start="00:03:29.260" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""at least from the point of view of the user.""" start="00:03:33.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But if we interrupt the evaluation,""" start="00:03:36.380" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""we will see that some process in the background""" start="00:03:38.400" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""was launched, but we didn't see anything.""" start="00:03:41.440" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Because the REPL is a single-threaded blocking process,""" start="00:03:44.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which reads stdin and prints stdout,""" start="00:03:51.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""make the integration""" start="00:03:54.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""between the REPL and your text editor""" start="00:03:55.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""is not an easy task.""" start="00:03:58.541" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And even if you do it,""" start="00:04:02.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you have a lot of downsides, usually.""" start="00:04:04.321" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Not interruptible""" start="00:04:07.600" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""First of all, the process is not interruptible.""" start="00:04:07.600" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""If you have a remote process which listens on the socket""" start="00:04:13.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to which you connect from your development environment,""" start="00:04:18.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you run some infinite loop, for example,""" start="00:04:21.940" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you can't interrupt it.""" start="00:04:25.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Because interruption is done via signals,""" start="00:04:28.300" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and signals to remote processes are not usually""" start="00:04:31.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the thing in such integrations.""" start="00:04:35.040" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Output is not interactive""" start="00:04:38.760" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Output is also not interactive.""" start="00:04:38.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Usually, for example, here you can see""" start="00:04:41.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""when I evaluate the expression,""" start="00:04:45.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the output is captured on the evaluation side,""" start="00:04:47.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and after that, after the whole evaluation""" start="00:04:51.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""of the whole expression finished,""" start="00:04:53.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I get the result, all the stdout at once.""" start="00:04:56.180" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And if I run the process which evaluates for 5 seconds,""" start="00:05:06.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I will see the first signs of the life""" start="00:05:09.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""only after 5 seconds of evaluation.""" start="00:05:13.781" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Okay, what else?""" start="00:05:17.040" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""No protocol""" start="00:05:23.160" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""When you do such integrations, you have no protocol,""" start="00:05:23.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you have just stdin and stdout.""" start="00:05:26.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You print to stdin from your text editor.""" start="00:05:29.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You read from stdout of the process.""" start="00:05:32.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It's hard to tell if evaluation is finished,""" start="00:05:36.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""if it requires stdin, and how to extend the REPL""" start="00:05:40.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to make it more featureful, and so on.""" start="00:05:47.320" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Not scalable""" start="00:05:51.480" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""And also, such integrations are usually not very scalable.""" start="00:05:51.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""For example, if you want to have a completion,""" start="00:05:57.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you type something, you have the completion. Cool.""" start="00:06:14.700" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But if you run the process and at the same time""" start="00:06:17.461" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""try to have a completion, you don't have it,""" start="00:06:22.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""because the evaluation is in progress,""" start="00:06:24.621" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you can't calculate the completion candidates""" start="00:06:29.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""at the same time. To make it more obvious,""" start="00:06:33.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I will start a completion here.""" start="00:06:35.520" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You see the completion pop-ups.""" start="00:06:41.020" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I start the evaluation process,""" start="00:06:43.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and when I try to complete something,""" start="00:06:46.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the evaluation freezes and there is no completion.""" start="00:06:49.860" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Not very convenient.""" start="00:06:53.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Usually, you have some long-running processes""" start="00:06:55.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you want them to continue while you have""" start="00:06:58.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""your go to definition, completion, and other things.""" start="00:07:01.400" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Overall, those issues make it quite inconvenient""" start="00:07:08.580" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to integrate REPL in text editors or development environments,""" start="00:07:13.660" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""so you need something else""" start="00:07:18.420" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to make the work comfortable.""" start="00:07:21.380" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""nREPL""" start="00:07:25.860" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""There is already a solution called nREPL.""" start="00:07:25.860" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It's a synchronous protocol which allows""" start="00:07:28.980" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to send operations to the server""" start="00:07:31.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and receive responses in a synchronous manner.""" start="00:07:34.020" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And here is a simple example of a few operations.""" start="00:07:37.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""First one is cloning the existing session,""" start="00:07:42.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and as a response you will get a new session.""" start="00:07:45.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Also you send the evaluation request with code""" start="00:07:49.241" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""that you want to evaluate, and you get two responses.""" start="00:07:52.100" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""First one says that output is captured""" start="00:07:55.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and it's equal to &quot;hi\n&quot;,""" start="00:08:00.601" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and after that, you receive an &quot;Evaluation completed&quot;,""" start="00:08:02.840" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the value of this expression.""" start="00:08:06.561" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""This protocol was developed""" start="00:08:12.440" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""for CIDER development environment.""" start="00:08:14.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It's a Clojure development environment for Emacs.""" start="00:08:15.880" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It's very cool, featureful, reliable,""" start="00:08:18.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and I would say production-ready.""" start="00:08:22.860" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""A lot of professional Clojure developers use it.""" start="00:08:26.900" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""The nREPL protocol is very simple.""" start="00:08:31.500" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It has a few operations out of the box,""" start="00:08:33.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you can extend it with any arbitrary operation you want.""" start="00:08:38.220" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I work a lot on Guix codebase and other Scheme projects,""" start="00:08:46.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""so the experience I had previously with nREPL""" start="00:08:53.820" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""was not satisfying. I decided""" start="00:08:57.300" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to just implement nREPL protocol.""" start="00:08:59.400" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Arei, Ares, and how to try""" start="00:09:01.740" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""First of all, I implemented nREPL server in Guile.""" start="00:09:01.740" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I called it `guile-ares-rs`, and used it""" start="00:09:05.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""with a generic nREPL client for Emacs.""" start="00:09:11.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It worked.""" start="00:09:13.960" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It had some rough edges, but overall it was okay.""" start="00:09:14.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And after that, to add more features""" start="00:09:18.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to make the implementation more complete,""" start="00:09:21.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I wrote my own nREPL client for Emacs and called it `arei`.""" start="00:09:25.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And I got almost complete Guile IDE in two months.""" start="00:09:33.220" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""So `ares-rs` is nREPL server implementation.""" start="00:09:40.180" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""`arei` is Emacs client, which uses the same nREPL protocol.""" start="00:09:45.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It utilizes `sesman` package for managing sessions,""" start="00:09:49.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the association of buffers with nREPL connection.""" start="00:09:54.440" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It has some roots.""" start="00:10:00.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""The implementation has some roots""" start="00:10:04.380" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""in Geiser, CIDER, Monroe, and Rail.""" start="00:10:06.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I took small snippets for some parts of functionality.""" start="00:10:09.980" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I used the CAPF and xref infrastructure""" start="00:10:15.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""for completion at point and cross-reference capabilities.""" start="00:10:19.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And by the time of conference, I hope""" start="00:10:23.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""that README will be complete enough""" start="00:10:27.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""so you will be able to try it yourself.""" start="00:10:30.200" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Demo""" start="00:10:34.180" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Let's see what is possible with it already.""" start="00:10:34.180" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Let's connect to nREPL server.""" start="00:10:42.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""After that, you can evaluate the expression.""" start="00:10:51.900" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And you see the stdout and the result.""" start="00:10:56.281" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Very nice, very convenient.""" start="00:11:02.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You have different expression, you evaluate it,""" start="00:11:04.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you get the value of the evaluation.""" start="00:11:08.660" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You can run an infinite loop""" start="00:11:10.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which prints to stderr and stdout""" start="00:11:12.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you see all necessary stuff.""" start="00:11:15.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Very cool.""" start="00:11:18.600" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But also, you can interrupt the evaluation,""" start="00:11:19.300" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which is very convenient if you accidentally""" start="00:11:21.960" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""run an infinite loop.""" start="00:11:25.160" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Continuations""" start="00:11:27.640" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Also, do you remember here we have a few more examples""" start="00:11:27.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""that we didn't try yet?""" start="00:11:32.940" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""For example, on usual REPL implementation,""" start="00:11:34.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""if I evaluate this expression, I get return value.""" start="00:11:39.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I make a continuation and save it to this variable""" start="00:11:47.600" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and I try to call this evaluation""" start="00:11:50.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and I get an exception,""" start="00:11:52.860" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""because the environment in which this continuation""" start="00:11:55.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""was created was different and it has redefined""" start="00:11:58.400" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""stdout and stderr to capture it.""" start="00:12:03.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But when I run it one more time,""" start="00:12:06.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""when I resume the continuation,""" start="00:12:08.980" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the environment changed and it doesn't work.""" start="00:12:12.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""What happens in `arei`?""" start="00:12:15.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I define continuation, I save the continuation""" start="00:12:17.420" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""for the simple expression""" start="00:12:21.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and I resume the continuation with a new argument,""" start="00:12:23.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you can see at the top of the screen""" start="00:12:27.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""that it works perfectly fine.""" start="00:12:30.140" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Reading from stdin""" start="00:12:32.460" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Also, with a usual REPL implementation,""" start="00:12:32.460" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""let's see what happens when we have a process""" start="00:12:35.560" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which reads from stdin.""" start="00:12:40.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I evaluate the expression and nothing visible happens.""" start="00:12:41.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I can try to type `C-g`, `C-c`,""" start="00:12:48.100" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and after some time it will say user interrupt.""" start="00:12:53.000" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""What actually I expect in such a case""" start="00:12:56.560" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to have a minibuffer which prompts me for the input.""" start="00:13:00.440" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""When I evaluate the same expression in the `arei`,""" start="00:13:04.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you see the prompt at the minibuffer""" start="00:13:10.020" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and here I can tell, &quot;Hello I'm a message from minibuffer&quot;.""" start="00:13:12.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Cool. You will see that this message is printed to stdout,""" start="00:13:21.900" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and unspecified was returned""" start="00:13:26.100" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""as a result of this expression.""" start="00:13:28.680" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Fancy example with continuations""" start="00:13:33.420" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Let's make some fancy example with continuations.""" start="00:13:33.420" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Continuations is a very cool mechanism""" start="00:13:37.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which is not the topic of today's talk,""" start="00:13:45.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""but you can find a lot of interesting information""" start="00:13:48.000" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""in Scheme documentation or in related books,""" start="00:13:51.000" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and I advise you to do it because it's really nice thing""" start="00:13:54.440" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""that is actually applicable""" start="00:13:58.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""in many different programming languages.""" start="00:14:00.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Here you can see the infinite loop""" start="00:14:03.520" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which just prints values increasing one by one.""" start="00:14:05.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And here we save a continuation on each iteration.""" start="00:14:09.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I can call the continuation""" start="00:14:13.300" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and it will resume from the previous saved step.""" start="00:14:18.060" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And you can see, it resumed from the same step""" start="00:14:21.940" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""we interrupted earlier, but we provided a new value for it.
+another value for it.""" start="00:14:27.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""We can provide another value""" start="00:14:31.641" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and it resumed from the same spot it was saved earlier.""" start="00:14:33.921" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But I also can provide a `read-i` value""" start="00:14:39.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and if I provide `read-i` value,""" start="00:14:42.580" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the infinite loop will read the input from stdin""" start="00:14:45.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and will continue the evaluation""" start="00:14:50.780" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""with a different `i` provided in this input.""" start="00:14:53.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""So let's try to type some arbitrary value""" start="00:14:56.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you see that the loop continued with this value.""" start="00:15:03.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Very nice.""" start="00:15:07.520" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And every time we could easily interrupt it.""" start="00:15:08.040" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Guix API""" start="00:15:13.160" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Okay, what most annoying thing that I had previously""" start="00:15:13.160" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""with the usual REPL implementation""" start="00:15:17.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""that I have a quite nice Guix API""" start="00:15:19.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""where I can build packages, systems and other stuff.""" start="00:15:22.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But if I evaluate this expression, I will get an error.""" start="00:15:27.580" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Okay. I will get an error""" start="00:15:35.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""because I don't have an appropriate environment.""" start="00:15:38.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""But what I can do, I can connect to the remote REPL""" start="00:15:44.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""by creating a server with `guix repl --listen` command""" start="00:15:51.580" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and connecting to it with `geiser-connect` command.""" start="00:15:55.060" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And now I can evaluate this expression.""" start="00:15:58.620" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Right?""" start="00:16:01.820" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Wow.""" start="00:16:03.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Okay.""" start="00:16:10.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""It actually doesn't matter for my example.""" start="00:16:14.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I will explain how it doesn't work easily.""" start="00:16:19.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""This is a long-running process which prints something""" start="00:16:22.880" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and it can take up to a few minutes.""" start="00:16:26.520" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And for the whole few minutes I don't see any results,""" start="00:16:29.580" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the same as with this infinite loop which prints to stdout""" start="00:16:33.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""but I don't see anything interactively.""" start="00:16:38.720" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""With `arei`, I can run""" start="00:16:42.200" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""the evaluation of the same expression,""" start="00:16:45.620" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you will see instantly""" start="00:16:51.440" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""that stdout is presented here in slightly yellowish color.""" start="00:16:54.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I can interrupt the evaluation""" start="00:17:00.201" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""if I don't want to wait until it's finished,""" start="00:17:02.921" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and just after that, I can evaluate another value.""" start="00:17:06.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""So that's cool.""" start="00:17:15.780" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And let's see one more thing.""" start="00:17:23.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""We have an infinite loop and we have some completion here.""" start="00:17:25.960" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And completion still works,""" start="00:17:30.340" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""very nice,""" start="00:17:32.580" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""while the infinite loop is running.""" start="00:17:33.660" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Okay.""" start="00:17:40.260" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Support""" start="00:17:42.060" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""Actually it took me around two months""" start="00:17:42.060" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""of full-time work funded by my own savings,""" start="00:17:44.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you can support and help to the project""" start="00:17:48.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""using OpenCollective or by contributing on SourceHut.""" start="00:17:51.600" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Future steps - Multiple simultaneous evaluations in different contexts""" start="00:17:57.020" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""The future steps for the project""" start="00:17:57.020" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""include an experimental workflow where you have""" start="00:17:58.700" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""multiple simultaneous evaluation in different contexts.""" start="00:18:03.675" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""For example, you have Fibers, you have Goblins,""" start="00:18:07.540" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""you have some HTTP server or some other thing,""" start="00:18:11.960" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you want to run all of them independently""" start="00:18:16.920" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""in slightly isolated sessions,""" start="00:18:22.120" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you want to have the ability""" start="00:18:25.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""to still interact with them.""" start="00:18:29.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""For example, if they require standard input""" start="00:18:30.960" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""or something else, you want to be able to provide it.""" start="00:18:33.980" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You want to see the stderr and stdout""" start="00:18:39.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""of those long-running processes and so on.""" start="00:18:42.520" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Tree-sitter integration""" start="00:18:46.220" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""The second thing is tree-sitter integration""" start="00:18:46.220" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""for better syntax highlighting, code navigation,""" start="00:18:50.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and other features.""" start="00:18:53.400" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Full-fledged debugger""" start="00:18:56.880" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""And after that, probably we will do a full-fledged debugger""" start="00:18:56.880" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""so you can jump expressions one by one""" start="00:19:01.400" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and see the results and see some intermediate values""" start="00:19:06.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""during the evaluation.""" start="00:19:10.780" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And it's very possible""" start="00:19:13.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""because nREPL is a very extensible protocol""" start="00:19:14.480" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you can implement""" start="00:19:17.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""whatever you want on top of it.""" start="00:19:18.200" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""FAQ - Does it support other Scheme implementations?""" start="00:19:22.760" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""I will answer two probably very frequent questions.""" start="00:19:22.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Does it support other Scheme implementations?""" start="00:19:27.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""At the moment, it doesn't,""" start="00:19:30.500" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""but the Scheme implementation is not restricted.""" start="00:19:32.280" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You have a server which is implemented in your language""" start="00:19:36.520" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you have a client--in our case, `arei`--""" start="00:19:40.640" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""which communicates with this protocol.""" start="00:19:43.975" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""So if you implement nREPL server in a different language,""" start="00:19:48.320" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""it should work with already implemented `arei` client.""" start="00:19:52.360" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Is it possible to use it with other text editors?""" start="00:19:58.380" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""And is it possible to use the same functionality""" start="00:19:58.380" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""in other text editors, for example in VS Code,""" start="00:20:04.080" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Vim, whatever?""" start="00:20:07.000" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""Yes, it's possible and the case is similar here.""" start="00:20:08.680" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""You have already implemented nREPL server""" start="00:20:13.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and you can write your own nREPL client""" start="00:20:16.600" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""in a different text editor and it will work.""" start="00:20:19.360" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:20:22.121" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""I would like to thank the authors and maintainers""" start="00:20:22.121" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and contributors of Guile, Geiser, CIDER, Clojure,""" start="00:20:26.760" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""and Emacs, and all other people""" start="00:20:30.440" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""who are somehow related to the work on those projects""" start="00:20:33.360" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""involved in this talk.""" start="00:20:38.780" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""And I hope the Scheme programming will be enjoyable.""" start="00:20:42.080" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template new="1" text="""Contacts""" start="00:20:45.880" video="mainVideo-scheme" id="subtitle"]]
+
+[[!template text="""If you want to contact me,""" start="00:20:45.880" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""join #tropin IRC channel at libera.chat,""" start="00:20:47.240" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""or drop me a message via email or feediverse""" start="00:20:49.800" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""using `andrew@trop.in` handle.""" start="00:20:53.040" video="mainVideo-scheme" id="subtitle"]]
+[[!template text="""I will see you in a bit in Q&A session.""" start="00:20:55.880" video="mainVideo-scheme" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="scheme-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: I see 2 questions on the panel already.""" start="00:00:16.200" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Let's see, 1 asking how much Andrew uses""" start="00:00:22.660" video="qanda-scheme" id="subtitle"]]
+[[!template text="""these ripples remotely or versus on their own""" start="00:00:26.320" video="qanda-scheme" id="subtitle"]]
+[[!template text="""desktop. And another asking if this can be""" start="00:00:29.240" video="qanda-scheme" id="subtitle"]]
+[[!template text="""integrated with EGLOT.""" start="00:00:31.160" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And I will note that it is very cool that""" start="00:00:34.840" video="qanda-scheme" id="subtitle"]]
+[[!template text="""this year we've had so many talks on Ripples.""" start="00:00:36.580" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Just goes to show how powerful Emacs is and""" start="00:00:40.920" video="qanda-scheme" id="subtitle"]]
+[[!template text="""just how much or how far you can push it and""" start="00:00:42.980" video="qanda-scheme" id="subtitle"]]
+[[!template text="""how much you can do with it.""" start="00:00:44.040" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And so see someone asking on IRC,""" start="00:00:53.460" video="qanda-scheme" id="subtitle"]]
+[[!template text="""if or how many people use GnuGeeks.""" start="00:00:57.780" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Since we are talking about Scheme,""" start="00:01:01.400" video="qanda-scheme" id="subtitle"]]
+[[!template text="""GnuGeeks is a great platform slash operating""" start="00:01:05.740" video="qanda-scheme" id="subtitle"]]
+[[!template text="""system or distro for your test house,""" start="00:01:10.380" video="qanda-scheme" id="subtitle"]]
+[[!template text="""but also for servers and such.""" start="00:01:11.920" video="qanda-scheme" id="subtitle"]]
+[[!template text="""They do some impressive,""" start="00:01:13.320" video="qanda-scheme" id="subtitle"]]
+[[!template text="""amazing work. And it's all,""" start="00:01:15.240" video="qanda-scheme" id="subtitle"]]
+[[!template text="""pretty much all done in Gindugal's scheme.""" start="00:01:19.400" video="qanda-scheme" id="subtitle"]]
+[[!template text="""So very cool stuff. Bye.""" start="00:01:30.260" video="qanda-scheme" id="subtitle"]]
+[[!template text="""You""" start="00:01:45.260" video="qanda-scheme" id="subtitle"]]
+[[!template text="""I see another interesting question on the""" start="00:03:19.940" video="qanda-scheme" id="subtitle"]]
+[[!template text="""pad. How hard is it to add support for""" start="00:03:23.440" video="qanda-scheme" id="subtitle"]]
+[[!template text="""something other than Guile?""" start="00:03:24.960" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And if it makes sense to contribute at this""" start="00:03:28.040" video="qanda-scheme" id="subtitle"]]
+[[!template text="""early stage of development?""" start="00:03:28.940" video="qanda-scheme" id="subtitle"]]
+[[!template text="""They said that they've written several""" start="00:03:31.960" video="qanda-scheme" id="subtitle"]]
+[[!template text="""packages for chicken skin before and they""" start="00:03:34.000" video="qanda-scheme" id="subtitle"]]
+[[!template text="""would like to try this 1 as well.""" start="00:03:35.400" video="qanda-scheme" id="subtitle"]]
+[[!template text="""I guess since Andrew isn't still here,""" start="00:05:26.380" video="qanda-scheme" id="subtitle"]]
+[[!template text="""and there was some chatter about GnuGeeks in""" start="00:05:29.480" video="qanda-scheme" id="subtitle"]]
+[[!template text="""the chat, maybe it might be nice for me to""" start="00:05:32.400" video="qanda-scheme" id="subtitle"]]
+[[!template text="""share my screen and plug Inukis for a little""" start="00:05:35.520" video="qanda-scheme" id="subtitle"]]
+[[!template text="""bit and introduce it or at least show its""" start="00:05:38.800" video="qanda-scheme" id="subtitle"]]
+[[!template text="""website to folks who may not have seen it yet""" start="00:05:41.720" video="qanda-scheme" id="subtitle"]]
+[[!template text="""so I'm going to try and do that now.""" start="00:05:43.380" video="qanda-scheme" id="subtitle"]]
+[[!template text="""You""" start="00:05:45.260" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Okay, let's see if this works.""" start="00:06:19.760" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Okay, so this is GNU Geeks' website.""" start="00:06:33.540" video="qanda-scheme" id="subtitle"]]
+[[!template text="""You can go to geeks.gnu.org.""" start="00:06:35.000" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And they introduced it at the top.""" start="00:06:38.820" video="qanda-scheme" id="subtitle"]]
+[[!template text="""So it's a wholly free operating system or""" start="00:06:43.480" video="qanda-scheme" id="subtitle"]]
+[[!template text="""distribution of GNU Linux.""" start="00:06:45.100" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Meaning that it only has free software""" start="00:06:48.600" video="qanda-scheme" id="subtitle"]]
+[[!template text="""packaged and no non-free packages,""" start="00:06:50.840" video="qanda-scheme" id="subtitle"]]
+[[!template text="""so it is endorsed by the FSF and the GNU""" start="00:06:53.560" video="qanda-scheme" id="subtitle"]]
+[[!template text="""project. As someone said in the chat,""" start="00:06:56.640" video="qanda-scheme" id="subtitle"]]
+[[!template text="""it's kind of like Nix,""" start="00:06:57.740" video="qanda-scheme" id="subtitle"]]
+[[!template text="""but instead built on GNU Gallop scheme.""" start="00:07:01.360" video="qanda-scheme" id="subtitle"]]
+[[!template text="""It has transactional upgrades and rollbacks.""" start="00:07:05.320" video="qanda-scheme" id="subtitle"]]
+[[!template text="""So if you do upgrade your system and let's""" start="00:07:10.160" video="qanda-scheme" id="subtitle"]]
+[[!template text="""say in the middle of it,""" start="00:07:11.180" video="qanda-scheme" id="subtitle"]]
+[[!template text="""your hardware fails or your power goes out,""" start="00:07:13.200" video="qanda-scheme" id="subtitle"]]
+[[!template text="""the likelihood of things being corrupted is""" start="00:07:16.560" video="qanda-scheme" id="subtitle"]]
+[[!template text="""very low because the upgrade is essentially""" start="00:07:18.840" video="qanda-scheme" id="subtitle"]]
+[[!template text="""prepared like in the background.""" start="00:07:21.560" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And then pretty much atomically,""" start="00:07:24.140" video="qanda-scheme" id="subtitle"]]
+[[!template text="""the system is switched to it.""" start="00:07:26.780" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And also if there is some kind of,""" start="00:07:30.400" video="qanda-scheme" id="subtitle"]]
+[[!template text="""sorry, I'm losing my voice here.""" start="00:07:32.400" video="qanda-scheme" id="subtitle"]]
+[[!template text="""If there is some kind of issue that makes""" start="00:07:34.840" video="qanda-scheme" id="subtitle"]]
+[[!template text="""your system unbootable,""" start="00:07:35.800" video="qanda-scheme" id="subtitle"]]
+[[!template text="""you could always go back to booting the""" start="00:07:41.480" video="qanda-scheme" id="subtitle"]]
+[[!template text="""previous revision of your system when you""" start="00:07:44.600" video="qanda-scheme" id="subtitle"]]
+[[!template text="""restart in the Grub bootloader.""" start="00:07:46.100" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Yeah, so they have a nice blog where they""" start="00:07:56.740" video="qanda-scheme" id="subtitle"]]
+[[!template text="""regularly post updates and what's new in the""" start="00:07:59.340" video="qanda-scheme" id="subtitle"]]
+[[!template text="""project. You can go check that out.""" start="00:08:01.000" video="qanda-scheme" id="subtitle"]]
+[[!template text="""We also have a packages archive where you can""" start="00:08:07.240" video="qanda-scheme" id="subtitle"]]
+[[!template text="""see a list of all the software that has been""" start="00:08:09.360" video="qanda-scheme" id="subtitle"]]
+[[!template text="""packaged for GNU Geeks.""" start="00:08:11.060" video="qanda-scheme" id="subtitle"]]
+[[!template text="""It is an impressive list.""" start="00:08:13.620" video="qanda-scheme" id="subtitle"]]
+[[!template text="""I don't know how many tens of thousands of""" start="00:08:16.440" video="qanda-scheme" id="subtitle"]]
+[[!template text="""packages there are. Geeks has been growing""" start="00:08:19.720" video="qanda-scheme" id="subtitle"]]
+[[!template text="""very well. And you can search the packages""" start="00:08:22.360" video="qanda-scheme" id="subtitle"]]
+[[!template text="""here. And yeah, all kinds of things are""" start="00:08:29.380" video="qanda-scheme" id="subtitle"]]
+[[!template text="""packaged. Of course, GNU Emacs is packaged,""" start="00:08:31.800" video="qanda-scheme" id="subtitle"]]
+[[!template text="""along with many extensions or packages,""" start="00:08:37.260" video="qanda-scheme" id="subtitle"]]
+[[!template text="""GNU Emacs packages that are packaged as""" start="00:08:41.039" video="qanda-scheme" id="subtitle"]]
+[[!template text="""system packages for Geeks.""" start="00:08:42.840" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Yeah, so definitely go check it out.""" start="00:08:46.960" video="qanda-scheme" id="subtitle"]]
+[[!template text="""You can use Geeks both as a standalone""" start="00:08:55.680" video="qanda-scheme" id="subtitle"]]
+[[!template text="""package manager, let's say on a Debian-based""" start="00:08:59.340" video="qanda-scheme" id="subtitle"]]
+[[!template text="""distribution like Triscale,""" start="00:09:00.780" video="qanda-scheme" id="subtitle"]]
+[[!template text="""for example, or you could install it like as""" start="00:09:06.180" video="qanda-scheme" id="subtitle"]]
+[[!template text="""a complete system distribution on its own.""" start="00:09:08.900" video="qanda-scheme" id="subtitle"]]
+[[!template text="""So the former is useful if you want to maybe""" start="00:09:15.560" video="qanda-scheme" id="subtitle"]]
+[[!template text="""get a taste for Geeks and try it out before""" start="00:09:18.080" video="qanda-scheme" id="subtitle"]]
+[[!template text="""fully committing to it and switching to it as""" start="00:09:21.140" video="qanda-scheme" id="subtitle"]]
+[[!template text="""your main distro. You can try it on top of""" start="00:09:24.620" video="qanda-scheme" id="subtitle"]]
+[[!template text="""any other distro pretty much and then you can""" start="00:09:27.720" video="qanda-scheme" id="subtitle"]]
+[[!template text="""of course install it on its own as well as a""" start="00:09:31.080" video="qanda-scheme" id="subtitle"]]
+[[!template text="""system distribution.""" start="00:09:31.560" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Yeah, there are a bunch of manuals and""" start="00:09:50.940" video="qanda-scheme" id="subtitle"]]
+[[!template text="""reference cards and videos that you're""" start="00:09:53.040" video="qanda-scheme" id="subtitle"]]
+[[!template text="""welcome to watch. They have several mailing""" start="00:09:55.920" video="qanda-scheme" id="subtitle"]]
+[[!template text="""lists. It sounds like they have a wiki now as""" start="00:09:59.240" video="qanda-scheme" id="subtitle"]]
+[[!template text="""well. And the development is done on Gnu""" start="00:10:04.020" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Savannah. If we go to savannah.gnu.org""" start="00:10:09.680" video="qanda-scheme" id="subtitle"]]
+[[!template text="""slash projects slash geeks,""" start="00:10:12.780" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Yeah, the project is developed here and they""" start="00:10:18.640" video="qanda-scheme" id="subtitle"]]
+[[!template text="""have a bunch of repositories including the""" start="00:10:21.300" video="qanda-scheme" id="subtitle"]]
+[[!template text="""main 1 which is geeks.git""" start="00:10:24.340" video="qanda-scheme" id="subtitle"]]
+[[!template text="""itself. So yeah, folks are welcome to go""" start="00:10:28.200" video="qanda-scheme" id="subtitle"]]
+[[!template text="""check it out. Let's see,""" start="00:10:32.380" video="qanda-scheme" id="subtitle"]]
+[[!template text="""maybe we can go have a look at some package""" start="00:10:35.860" video="qanda-scheme" id="subtitle"]]
+[[!template text="""definitions, although I think we're almost""" start="00:10:37.540" video="qanda-scheme" id="subtitle"]]
+[[!template text="""out of time on the live stream.""" start="00:10:38.940" video="qanda-scheme" id="subtitle"]]
+[[!template text="""So, yeah, just quickly.""" start="00:10:42.600" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Emacs to the CM has all the,""" start="00:10:45.280" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Emacs packages or Emacs itself.""" start="00:10:48.640" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And Emacs-xyz is where you'll find all the""" start="00:10:52.120" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Emacs like ELPA packages,""" start="00:10:54.480" video="qanda-scheme" id="subtitle"]]
+[[!template text="""but package for use on GNU Geeks system or""" start="00:10:57.980" video="qanda-scheme" id="subtitle"]]
+[[!template text="""with GNU Geeks. And I think that's all the""" start="00:11:01.220" video="qanda-scheme" id="subtitle"]]
+[[!template text="""time that we have. So yeah,""" start="00:11:04.080" video="qanda-scheme" id="subtitle"]]
+[[!template text="""thanks for tuning in, folks.""" start="00:11:06.000" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Please post your questions on the pad.""" start="00:11:07.800" video="qanda-scheme" id="subtitle"]]
+[[!template text="""We'll pass them on to Andrew.""" start="00:11:09.280" video="qanda-scheme" id="subtitle"]]
+[[!template text="""And yeah, hope you enjoy this.""" start="00:11:12.400" video="qanda-scheme" id="subtitle"]]
+[[!template text="""Definitely go check out Andrew's work and Gnu""" start="00:11:15.140" video="qanda-scheme" id="subtitle"]]
+[[!template text="""geeks as well. You are currently the only""" start="00:11:25.320" video="qanda-scheme" id="subtitle"]]
+[[!template text="""person in this conference.""" start="00:11:26.280" video="qanda-scheme" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20scheme%3A%20Bringing%20joy%20to%20Scheme%20programming)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/scheme-before.md b/2023/info/scheme-before.md
new file mode 100644
index 00000000..24969b28
--- /dev/null
+++ b/2023/info/scheme-before.md
@@ -0,0 +1,36 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 22-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="scheme-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="scheme-mainVideo" data="""
+00:02.120 Introduction
+00:23.280 Interactive development
+01:18.180 REPL: Read Eval Print Loop
+02:53.720 Long-lasting loops
+04:07.600 Not interruptible
+05:23.160 No protocol
+05:51.480 Not scalable
+07:25.860 nREPL
+09:01.740 Arei, Ares, and how to try
+10:34.180 Demo
+11:27.640 Continuations
+12:32.460 Reading from stdin
+13:33.420 Fancy example with continuations
+15:13.160 Guix API
+17:42.060 Support
+17:57.020 Future steps - Multiple simultaneous evaluations in different contexts
+18:46.220 Tree-sitter integration
+18:56.880 Full-fledged debugger
+19:22.760 FAQ - Does it support other Scheme implementations?
+19:58.380 Is it possible to use it with other text editors?
+20:22.121 Conclusion
+20:45.880 Contacts
+
+"""]]<div></div>Duration: 21:01 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--main.opus">Download --main.opus (14MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--main.webm">Download --main.webm (54MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-scheme--bringing-joy-to-scheme-programming--andrew-tropin--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/4moUfTEo2G8we5JuLGArWx">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/scheme-nav.md b/2023/info/scheme-nav.md
new file mode 100644
index 00000000..fa791c87
--- /dev/null
+++ b/2023/info/scheme-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/windows">Windows into Freedom</a>
+Next by track: <a href="/2023/talks/world">GNU Emacs: A World of Possibilities</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/sharing-after.md b/2023/info/sharing-after.md
new file mode 100644
index 00000000..2b5a7b58
--- /dev/null
+++ b/2023/info/sharing-after.md
@@ -0,0 +1,1071 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="sharing-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""Hello everyone, I'm Jacob Boxerman.""" start="00:00:00.000" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I'm a sophomore at Columbia University""" start="00:00:02.440" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""studying computer science.""" start="00:00:04.320" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I'm so excited to be here today""" start="00:00:06.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""right at the end of EmacsConf 2023.""" start="00:00:08.520" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So glad to be able to share with everyone today.""" start="00:00:11.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""EmacsConf is really the epitome for me""" start="00:00:13.720" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""of sharing and of learning about Emacs.""" start="00:00:16.747" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Today's talk""" start="00:00:20.100" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""And in my closing keynote""" start="00:00:20.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""titled &quot;Sharing Emacs is Caring Emacs,&quot;""" start="00:00:21.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I want to drive that home,""" start="00:00:24.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and I want to make every day""" start="00:00:25.820" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""a day for learning and for sharing in our community.""" start="00:00:27.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I'd like to share my own journey""" start="00:00:31.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""of sharing the joy of Emacs""" start="00:00:33.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and convince you that sharing the ways we share""" start="00:00:34.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and how we participate in our Emacs community,""" start="00:00:38.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""those are the most important things""" start="00:00:41.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to both grow our community""" start="00:00:42.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and to increase our own personal joy in Emacs.""" start="00:00:44.340" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""My history with Emacs""" start="00:00:48.900" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""My journey of sharing begins with my journey of learning.""" start="00:00:48.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So I'll start by spending a bit of time on that.""" start="00:00:52.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I use Emacs every day for personal organization""" start="00:00:55.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and to-dos -- you know, schoolwork, projects,""" start="00:00:57.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""exams, readings. I use Org Mode for that,""" start="00:01:00.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""write essays, make presentations like this one.""" start="00:01:03.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I also write in various programming languages""" start="00:01:05.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""including Java, C, Python,""" start="00:01:08.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""locally and also remotely for projects, classes,""" start="00:01:10.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""other responsibilities.""" start="00:01:13.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I really started with Emacs during the pandemic.""" start="00:01:14.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I had tried Emacs before, but at the time""" start="00:01:17.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""all I knew it for was `M-x tetris`.""" start="00:01:20.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""But then its power and its configurability even then""" start="00:01:22.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""especially spoke to me.""" start="00:01:25.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So from those little humble beginnings,""" start="00:01:27.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""trying different preconfigured distros,""" start="00:01:28.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I slowly made my way to building""" start="00:01:31.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""my own 2000+ line configuration,""" start="00:01:33.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""which actually surprisingly has about 70 stars,""" start="00:01:36.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""a few watchers, a few forks on GitHub.""" start="00:01:39.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Pretty straightforward.""" start="00:01:40.540" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Self-exploration vs learning from others""" start="00:01:42.380" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""But what exactly was that learning process like?""" start="00:01:42.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Now, Emacs was such a beast to me at first.""" start="00:01:46.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I was familiar with Python,""" start="00:01:49.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""with C, Java, languages like that.""" start="00:01:51.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I was no stranger to the shell configuration,""" start="00:01:52.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""anything like that.""" start="00:01:55.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""But the absolute infinity of possibility with Emacs""" start="00:01:56.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""was a bit overwhelming.""" start="00:02:01.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I find a sentiment in the community""" start="00:02:02.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""that exploring on one's own""" start="00:02:04.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""was greater than exploring and learning from others.""" start="00:02:06.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And now I see why people say that and it's true in a sense,""" start="00:02:11.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""but it might not be fully understood.""" start="00:02:14.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""At a certain point, we need to all create our own paths.""" start="00:02:17.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And I think that's just one of the ways Emacs is built.""" start="00:02:21.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""The minute possibilities of configurability are so vast,""" start="00:02:24.160" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""it's like a fingerprint or a snowflake --""" start="00:02:27.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""there are so many options to create""" start="00:02:29.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""a totally unique Emacs experience.""" start="00:02:32.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Of course that can't be found from somebody else --""" start="00:02:35.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It has to come from you.""" start="00:02:37.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Still, building a strong foundation""" start="00:02:38.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""is much, much better when we have others.""" start="00:02:42.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Expanding on that foundation is, too, actually.""" start="00:02:45.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""My own process started""" start="00:02:48.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""with a lot of Googling, blog posts, YouTube, and Reddit.""" start="00:02:50.300" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Learning process""" start="00:02:53.220" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""I actually found Emacs on YouTube.""" start="00:02:53.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Seeing how other people used it""" start="00:02:55.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""was what really convinced me to try it for myself.""" start="00:02:58.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""At a certain point when my confidence grew,""" start="00:03:01.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""my trial and error became less error and more success.""" start="00:03:03.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I was also able to take what I saw other people do,""" start="00:03:07.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""learn from it, and expand, making it my own.""" start="00:03:09.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And through that time, I learned Emacs.""" start="00:03:13.860" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Emacs learning (not just learning Emacs)""" start="00:03:17.020" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""But I also participated in Emacs learning.""" start="00:03:17.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""What's the difference?""" start="00:03:21.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We often discuss the former,""" start="00:03:22.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""grappling with key binds, commands.""" start="00:03:24.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""But Emacs learning goes beyond these technicalities.""" start="00:03:27.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's a mindset. It thrives on collaboration.""" start="00:03:31.620" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's not a solo endeavor;""" start="00:03:35.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""it flourishes best when we do it together.""" start="00:03:37.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""This involves collaborating together,""" start="00:03:41.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""creating a collaborative mindset,""" start="00:03:44.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""sharing effective strategies,""" start="00:03:46.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""lifting each other""" start="00:03:47.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""through our collective pool of knowledge.""" start="00:03:49.076" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Together, we contribute to the growth of each member""" start="00:03:51.640" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""within our vibrant community.""" start="00:03:55.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Emacs learning is much, much harder to do alone.""" start="00:03:56.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And I wanted to help with that.""" start="00:04:00.260" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""My YouTube journey""" start="00:04:03.300" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""So this brings me to the second part of my talk,""" start="00:04:03.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""my Emacs journey, how I got started""" start="00:04:05.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and where I am today with my YouTube channel,""" start="00:04:08.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""my Straightforward Emacs series with nearly 200,000 views.""" start="00:04:11.460" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Why not just read the manual?""" start="00:04:14.820" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""The Emacs Manual is often pushed""" start="00:04:14.820" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""as the best way to learn Emacs.""" start="00:04:18.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's an all-encompassing tome.""" start="00:04:20.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And as amazing as I think it is,""" start="00:04:21.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I don't think it's reasonable""" start="00:04:23.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to push the Emacs manual so hard,""" start="00:04:25.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""which is something I felt at first.""" start="00:04:27.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It can be really daunting. It's dense.""" start="00:04:29.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""There's a lot there.""" start="00:04:31.600" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's just a bit too much for a beginner,""" start="00:04:32.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""or even someone with a little bit of experience.""" start="00:04:34.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""These qualities, I feel,""" start="00:04:37.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""apply to many of the Emacs resources we can find out there.""" start="00:04:40.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""The best word for them is heavy.""" start="00:04:43.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""They look, they feel, they come across as heavy""" start="00:04:45.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""regardless of what they may actually be.""" start="00:04:48.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's not even that people are too lazy,""" start="00:04:50.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""or not capable enough (because that's never true).""" start="00:04:53.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's just a mental block that takes some getting over,""" start="00:04:56.520" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and that's okay -- so we need other things, too.""" start="00:05:00.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""For me, that was video.""" start="00:05:03.160" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I wanted someone to tell and show me""" start="00:05:04.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""what I wanted to know,""" start="00:05:07.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""as well as things I didn't even know were possible.""" start="00:05:08.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I realized this once I'd progressed a little further""" start="00:05:11.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""in my Emacs journey. I wanted to do my part.""" start="00:05:15.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I care about Emacs. I started to really care about Emacs.""" start="00:05:18.020" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Why video for Emacs""" start="00:05:20.980" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""So I wanted to share about Emacs.""" start="00:05:20.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So at that point, I refocused my work with Emacs""" start="00:05:24.320" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""beyond just myself. I wanted to help others""" start="00:05:27.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""feel the excitement that I did.""" start="00:05:30.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So where did I turn, and why?""" start="00:05:32.720" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's so trite, but they say that""" start="00:05:35.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""a picture is worth a thousand words.""" start="00:05:37.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So how much is a video worth?""" start="00:05:40.160" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Everyone learns differently, and that's okay.""" start="00:05:41.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""But it's absolutely certain to me""" start="00:05:44.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""that you need to see something to believe it.""" start="00:05:46.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So for that, I turned to video.""" start="00:05:48.320" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And it turns out that seeing is believing.""" start="00:05:50.500" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Straightforward Emacs""" start="00:05:54.420" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""I made a short video showing off Emacs Org Mode.""" start="00:05:54.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I didn't even have a voiceover.""" start="00:05:56.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""That video, less than five minutes long,""" start="00:05:58.960" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""but still incorporating some of my core principles,""" start="00:06:01.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""now has over 55,000 views and counting.""" start="00:06:04.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So, something must have been right.""" start="00:06:06.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And the positive reception to that video""" start="00:06:09.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""made me want to continue.""" start="00:06:11.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I decided to continue with the videos""" start="00:06:12.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""in a series I titled &quot;Straightforward Emacs.&quot;""" start="00:06:14.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And I'm asked: who is the target audience""" start="00:06:18.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""for Straightforward Emacs? It's me.""" start="00:06:20.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""They're the videos I wish I had existed""" start="00:06:23.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""when I was figuring out""" start="00:06:27.600" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Emacs' numerous and wonderful features.""" start="00:06:28.660" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Challenges and benefits of video""" start="00:06:32.700" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""Video does, I admit, come with its own set of challenges.""" start="00:06:32.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Complaints that video is less accessible, it's valid.""" start="00:06:36.620" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""They're more time consuming, it's valid too.""" start="00:06:40.400" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's harder to skim a video than a blog post,""" start="00:06:42.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and referring back can be a little annoying.""" start="00:06:45.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""To try and solve this,""" start="00:06:47.500" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I make video notes available as best I can though.""" start="00:06:48.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's not perfect. Despite these valid claims,""" start="00:06:50.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I believe video offers a sense of personality""" start="00:06:54.400" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""that written content just can't.""" start="00:06:57.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And that makes it well worth it.""" start="00:06:59.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""My first two videos in the series""" start="00:07:00.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""received a combined 35,000 views.""" start="00:07:03.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I still get kind comments today""" start="00:07:06.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""from viewers thanking me, asking questions.""" start="00:07:08.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So I must have done something right,""" start="00:07:10.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to outweigh those cons of video,""" start="00:07:12.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to outweigh those common complaints.""" start="00:07:14.500" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Crafting tutorials that work""" start="00:07:16.300" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""What was it? I covered topics that had been done before.""" start="00:07:16.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""But I wanted to present them in my way.""" start="00:07:21.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""In the way that I knew people would appreciate,""" start="00:07:24.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""because it's what I would have appreciated""" start="00:07:26.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""when I started my Emacs journey.""" start="00:07:28.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""In writing, I navigated towards clarity.""" start="00:07:30.920" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Crystal clear, step-by-step instructions.""" start="00:07:34.480" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Fully scripted, recorded in multiple parts and""" start="00:07:38.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""spliced together. That allowed me""" start="00:07:40.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to achieve my second goal: no wasted time, or word,""" start="00:07:43.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""or thought. I meticulously cut my videos""" start="00:07:48.600" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to create smooth dialogue.""" start="00:07:51.820" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I cut out large blocks of typing if not explained.""" start="00:07:54.080" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Though this does vary video to video.""" start="00:07:57.500" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Less scripted, more personal video receives less editing.""" start="00:07:59.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Like this talk itself, it's not edited at all.""" start="00:08:03.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And though prerecorded, I wanted to present""" start="00:08:05.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""my unfiltered, raw self.""" start="00:08:08.260" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""High-quality and accessible content""" start="00:08:11.720" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""Another goal of mine is high quality and accessible content.""" start="00:08:11.720" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I speak carefully and I tune my volume,""" start="00:08:15.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""making it easier to listen to,""" start="00:08:18.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and improving YouTube's auto-captioning.""" start="00:08:20.680" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Something I didn't consider at first,""" start="00:08:23.400" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""but was mentioned to me in a comment, was color scheme.""" start="00:08:24.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Now I try to select a scheme""" start="00:08:28.400" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""with good contrast and a readable font.""" start="00:08:29.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Content-wise, I design my tutorials""" start="00:08:33.280" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to ensure they cater to various skill levels,""" start="00:08:35.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""as well as learning preferences.""" start="00:08:38.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""My videos assume basic Emacs knowledge""" start="00:08:40.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""but not too much more.""" start="00:08:43.000" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Importantly, they're configuration agnostic.""" start="00:08:44.520" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""However you feel about Emacs' 'distributions',""" start="00:08:47.200" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Doom, Spacemacs, etc, they're out there,""" start="00:08:50.320" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and beginners often don't distinguish.""" start="00:08:53.120" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I admit it can be a bit frustrating to see a Reddit post""" start="00:08:57.920" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""asking a question about unexpected behavior,""" start="00:09:02.040" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""without mention of the fact that they have""" start="00:09:04.600" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""literally thousands of lines of non-standard configuration""" start="00:09:06.180" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""in the form of an Emacs distribution.""" start="00:09:09.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So I do my best to mention different possible keybindings""" start="00:09:12.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""a viewer might be using.""" start="00:09:14.900" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Most crucial aspect of my videos""" start="00:09:17.920" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""There was one thing, though, that turned out to be""" start="00:09:17.920" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""the most crucial part of my videos and series.""" start="00:09:19.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And it's one of the reasons itself for this talk.""" start="00:09:23.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""You may have already picked up on it.""" start="00:09:25.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's the personal aspect. Sharing myself.""" start="00:09:27.880" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Incorporating relatable examples,""" start="00:09:31.120" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""scenarios that resonate with my audience.""" start="00:09:33.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Seeing personal use cases, examples,""" start="00:09:36.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and demonstrations of real life Emacs use""" start="00:09:39.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""is really what began to build a community.""" start="00:09:41.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Because that's the stuff that can jump out of the video""" start="00:09:44.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and into the comments.""" start="00:09:47.220" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""A broadening community""" start="00:09:50.220" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""The idea for this talk started""" start="00:09:50.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""as a story of my YouTube journey.""" start="00:09:53.200" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I wanted to share how I began sharing Emacs""" start="00:09:55.240" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and why I like it. And I think I've done that.""" start="00:09:57.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Thanks to the EmacsConf organizers, though,""" start="00:10:00.960" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I started to see a larger vision.""" start="00:10:03.720" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Each video I made took a lot of effort,""" start="00:10:06.200" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""from research and planning to script writing,""" start="00:10:08.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""filming and editing. But those comments made it worth it --""" start="00:10:11.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""people saying that straightforward Emacs""" start="00:10:14.400" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""was just what they were looking for,""" start="00:10:16.840" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and that they appreciated my sharing.""" start="00:10:17.620" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""That's what made me want to continue.""" start="00:10:20.720" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And what made me want to continue even more""" start="00:10:22.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""was the community I was building.""" start="00:10:25.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I'd start to see repeat viewers""" start="00:10:28.500" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""who'd come back for my latest upload.""" start="00:10:30.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It's hard for me to find time to produce videos.""" start="00:10:32.640" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""But whether it was two weeks or four months later""" start="00:10:34.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""when I finally got around to uploading,""" start="00:10:38.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""those same commenters would be there for me.""" start="00:10:40.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""And I found real joy in actively engaging with my audience.""" start="00:10:43.280" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""It was amazing to see how my videos --""" start="00:10:47.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""me sharing useful Emacs tips,""" start="00:10:49.500" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""sharing the way I do things -- sparked broader discussions.""" start="00:10:51.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""On any chat form out there, there's no doubt""" start="00:10:55.120" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""you'll find some sort of cross discourse.""" start="00:10:56.980" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I'd see viewers replying to other commenters,""" start="00:10:59.720" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and my videos were no exception. Seeing how""" start="00:11:02.200" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""my videos sparked conversation,""" start="00:11:04.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""debate and further interest was incredible.""" start="00:11:06.100" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Sharing Emacs""" start="00:11:10.780" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""We've had two amazing days of sharing Emacs,""" start="00:11:10.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""putting ourselves out there, and sharing in a community.""" start="00:11:14.000" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I want to emphasize how amazing""" start="00:11:17.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""a strong community with the right values is,""" start="00:11:19.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and to inspire each and every one of us""" start="00:11:22.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to do our part to strengthen that community.""" start="00:11:24.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""The point of my talk isn't to tell you""" start="00:11:27.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to pick up your microphone and produce a YouTube video,""" start="00:11:30.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""though that wouldn't hurt.""" start="00:11:33.120" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We're not all interested in that, and that's okay.""" start="00:11:34.560" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""First, I want everybody to pat themselves on the back""" start="00:11:37.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""for the mere fact that we are here together.""" start="00:11:41.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Then let's turn to the potential within our community.""" start="00:11:44.140" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Platforms""" start="00:11:48.020" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""First, though, I'll briefly note""" start="00:11:48.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""that everyone has their opinions about platforms,""" start="00:11:50.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and I'm not here to make judgments,""" start="00:11:52.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""but freedom, equity, and accessibility are important,""" start="00:11:53.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""but reach is, too.""" start="00:11:56.060" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Achieving unity""" start="00:11:57.922" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""Regardless of the platform,""" start="00:11:57.922" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""one thing remains certain:""" start="00:12:00.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""our strength lies in unity.""" start="00:12:02.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Like any online community, this calls for unique ways""" start="00:12:05.400" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to come together and share. How can we achieve this unity?""" start="00:12:08.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""The key is finding avenues""" start="00:12:13.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""where our collective knowledge and our support can flourish,""" start="00:12:15.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""while each person can find a place for themselves,""" start="00:12:18.800" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""creating a more connected and empowered Emacs community.""" start="00:12:21.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""From uplifting others with positive contributions""" start="00:12:25.680" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to engaging on platforms like Reddit,""" start="00:12:29.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""both idealistic and concrete approaches are really valuable.""" start="00:12:31.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We can continue lively debate""" start="00:12:35.200" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""on community forums and discussion boards,""" start="00:12:36.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""encouraging a positive and inclusive atmosphere""" start="00:12:38.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""for asking questions and seeking help.""" start="00:12:41.620" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We can leverage social media platforms to share quick tips,""" start="00:12:44.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""tricks, or interesting discoveries related to Emacs.""" start="00:12:48.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Those who enjoy writing""" start="00:12:51.480" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""can contribute to blogs and newsletters,""" start="00:12:52.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""sharing personal expertise and experiences""" start="00:12:54.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""with a larger audience.""" start="00:12:57.500" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Let's also not underestimate the value of online video,""" start="00:12:59.240" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""as I've said, and learning platforms too.""" start="00:13:02.960" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Creating and sharing tutorials""" start="00:13:05.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""on platforms like YouTube or educational websites""" start="00:13:07.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""addresses specific aspects of Emacs and benefits learners,""" start="00:13:10.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""while contributing a personal touch.""" start="00:13:14.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Participating in or organizing Emacs-related courses""" start="00:13:17.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""also fosters a structured learning""" start="00:13:20.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""environment where there's so much room""" start="00:13:22.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""for mentorship and support,""" start="00:13:24.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""which is valuable for everyone involved.""" start="00:13:26.080" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Every contribution is valuable""" start="00:13:30.000" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""We can also call on our open source [* free software] values""" start="00:13:30.000" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and focus on collaborative projects,""" start="00:13:32.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""from coding projects where we can contribute and learn""" start="00:13:34.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to building shared documentation and guides""" start="00:13:38.240" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""that compile collective knowledge on specific topics --""" start="00:13:41.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""the Emacs Wiki is a great place""" start="00:13:44.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to start and continue that work as well.""" start="00:13:46.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Especially for those who might be less willing""" start="00:13:49.600" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""to put themselves out there,""" start="00:13:51.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""it's essential to recognize that every contribution,""" start="00:13:53.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""regardless of its scale, adds value to our community.""" start="00:13:56.200" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Documentation contributions, however small,""" start="00:13:59.520" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""can go a long way. So do translations,""" start="00:14:02.120" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""for those who are able to increase accessibility,""" start="00:14:04.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""as well as testing and bug reporting.""" start="00:14:07.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Reporting issues to package maintainers""" start="00:14:09.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""in their desired format -- speaking as one myself,""" start="00:14:11.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I appreciate when users give helpful feedback.""" start="00:14:14.020" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""There are options for everybody, big and small.""" start="00:14:16.820" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Remember, the strength of our community""" start="00:14:20.480" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""lies in its ability to share, collaborate,""" start="00:14:22.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and learn together. Whether through collaborative projects,""" start="00:14:25.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""sharing insights on forums, or leveraging social media,""" start="00:14:29.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""by embracing these ideas, we can build""" start="00:14:32.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""a more connected and empowered Emacs community.""" start="00:14:34.660" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:14:40.300" video="mainVideo-sharing" id="subtitle"]]
+
+[[!template text="""Now Emacs is so very personal.""" start="00:14:40.300" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Those of us who have our own""" start="00:14:43.760" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""carefully manicured configurations understand --""" start="00:14:44.940" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Emacs molds to our liking and our person.""" start="00:14:47.680" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Our configurations and use-cases""" start="00:14:50.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""are a reflection of our individuality.""" start="00:14:53.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Nonetheless, the richness of our community""" start="00:14:56.380" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""lies in collaboration, sharing, and learning together.""" start="00:14:59.320" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""There's a lot of talk in the community""" start="00:15:04.620" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""about how to ensure Emacs' longevity.""" start="00:15:06.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I agree it's important.""" start="00:15:09.560" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We care because of passion, excitement,""" start="00:15:11.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and utility. We want to share""" start="00:15:13.820" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and we want to have others love what we love.""" start="00:15:16.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We also want a stronger community""" start="00:15:19.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""that fosters new innovation.""" start="00:15:21.100" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""I used to buy into complaints I'd read online""" start="00:15:23.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""that Emacs' defaults are too unapproachable.""" start="00:15:26.540" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""The default color scheme and the font is unappealing.""" start="00:15:29.500" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Fix that and people will flock.""" start="00:15:33.420" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Sounds fair, I'd think.""" start="00:15:35.700" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Turns out, it's not what we need.""" start="00:15:37.740" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Emacs is bigger than that.""" start="00:15:40.640" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""What we need is like what we've done here this weekend.""" start="00:15:42.680" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Like EmacsConf. It's the absolute epitome""" start="00:15:45.780" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""of sharing about and caring about Emacs.""" start="00:15:49.660" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We are here both working to grow our community,""" start="00:15:53.900" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and to strengthen what we already have.""" start="00:15:56.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""We're here because we find joy in Emacs,""" start="00:16:00.140" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""and that joy is amplified by sharing it""" start="00:16:02.580" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""with and among others.""" start="00:16:05.860" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""So let's continue this journey together,""" start="00:16:07.680" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""navigating Emacs with a spirit of collaboration,""" start="00:16:10.220" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""because in unity, we find not just strength""" start="00:16:13.460" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""but the enduring legacy of a tool that we hold very dear.""" start="00:16:17.260" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Thank you to everybody here""" start="00:16:22.060" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""for being part of this shared adventure.""" start="00:16:23.340" video="mainVideo-sharing" id="subtitle"]]
+[[!template text="""Let's go forth and share, together.""" start="00:16:26.500" video="mainVideo-sharing" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="sharing-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 1]: Yeah, we're live. So whoever's in the""" start="00:00:05.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""background might be able to see you live in""" start="00:00:08.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""about 10 seconds as soon as the stream""" start="00:00:09.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""catches up. Hi Jacob, how are you doing?""" start="00:00:11.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Got that? We're live. I'm doing well.""" start="00:00:12.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""How are you doing today?""" start="00:00:13.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: I am doing well and this is the very last""" start="00:00:16.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""talk of the day so I'm very excited not""" start="00:00:17.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because it finishes but because I am tired""" start="00:00:20.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah very understandable.""" start="00:00:22.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Well thanks for all of your hard work.""" start="00:00:23.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""We all really appreciate it and all the other""" start="00:00:26.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""organizers.""" start="00:00:26.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: and need some sleep. Well on behalf of all""" start="00:00:28.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the organizers thank you but you know it all""" start="00:00:30.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it makes it all worthwhile when we see the""" start="00:00:33.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""valuable contribution that every single 1 of""" start="00:00:36.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""our speakers are making,""" start="00:00:37.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""not only for recording their talks,""" start="00:00:39.559" video="qanda-sharing" id="subtitle"]]
+[[!template text="""which is a tough demand on people to say,""" start="00:00:42.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""oh, if you want to go to EmacsConf,""" start="00:00:43.420" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you might want to record your talk.""" start="00:00:45.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""But then almost all of you do it and you""" start="00:00:48.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""spend a lot of time with us answering""" start="00:00:50.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""questions. So we couldn't do it.""" start="00:00:51.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""You know, we wouldn't be spending as much""" start="00:00:53.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""energy, half as much energy,""" start="00:00:54.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""if we didn't believe that it was worth it.""" start="00:00:58.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So now it's me thanking you on behalf of all""" start="00:01:01.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the speakers.""" start="00:01:01.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well thank you that's part of what I wanted""" start="00:01:03.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to get across in my talk was that coming""" start="00:01:06.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""together and sharing ourselves and you know""" start="00:01:08.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""not just putting little little essays out""" start="00:01:11.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""there and single videos but coming together""" start="00:01:13.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""as a community you know sharing ourselves our""" start="00:01:15.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""faces our voices you know it really brings us""" start="00:01:18.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""together and makes everyone stronger.""" start="00:01:19.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Exactly, and I think it's been a recurring""" start="00:01:22.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""theme. Most of the talks we have at""" start="00:01:27.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""EmacsConf, they're usually about sharing,""" start="00:01:28.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""obviously, sharing the knowledge that they've""" start="00:01:30.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""acquired, either writing a package or""" start="00:01:32.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""learning how to use Emacs as a professor in""" start="00:01:35.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""academia or stuff like this.""" start="00:01:37.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""But what I particularly like this year about""" start="00:01:39.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the different talks we've had is that they've""" start="00:01:41.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""really made the sharing even more obvious.""" start="00:01:44.479" video="qanda-sharing" id="subtitle"]]
+[[!template text="""We've had the mentoring this afternoon and we""" start="00:01:46.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""have your talk about using videos as a""" start="00:01:49.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""different medium to get into something.""" start="00:01:51.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And I really think in terms of accessibility""" start="00:01:54.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to Emacs, all of you who talked about this""" start="00:01:58.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""topic are doing a wonderful job.""" start="00:01:59.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So, thank you again for all of this.""" start="00:02:01.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you. Yeah, do we have any questions to""" start="00:02:04.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""be answering?""" start="00:02:04.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so only 1 for now and I'll invite""" start="00:02:08.199" video="qanda-sharing" id="subtitle"]]
+[[!template text="""people as usual to please add their question""" start="00:02:10.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to the pad or to join us on BBB.""" start="00:02:12.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Now the chat is open if you want to join us""" start="00:02:15.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""on BBB and ask your questions directly.""" start="00:02:17.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And in the meantime, I will read the first""" start="00:02:20.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""question. So, Kroting,""" start="00:02:22.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""are you using OxReveal to make your slides?""" start="00:02:25.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""If not, what are you using?""" start="00:02:26.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""They look very elegant,""" start="00:02:27.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and I concur.""" start="00:02:28.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's true. I am using OxReveal.""" start="00:02:32.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I have a whole entire video on it.""" start="00:02:35.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So if you're interested,""" start="00:02:36.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""feel free to take a look.""" start="00:02:37.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It's very simple to get started with.""" start="00:02:39.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""There are a lot of different packages to use""" start="00:02:42.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Reveal.js and Emacs. OxReveal or OrgReveal""" start="00:02:45.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""seems to be pretty easy to use.""" start="00:02:47.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So try that 1 out. Yeah,""" start="00:02:48.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it's really nice.""" start="00:02:49.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Awesome. I'm going to give a little bit of""" start="00:02:54.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""time for the other people to finish writing""" start="00:02:55.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""their answer. In the meantime,""" start="00:02:56.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I'll ask you 1 of my own.""" start="00:02:58.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So you said you were in college,""" start="00:02:59.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""right? In com sci. Sorry,""" start="00:03:01.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah.""" start="00:03:02.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: computer science. I think it's great to find""" start="00:03:07.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""people in computer science who have,""" start="00:03:08.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""from the get-go, as soon as their bachelor,""" start="00:03:11.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""an appetite for sharing and vulgarizing a lot""" start="00:03:16.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""of knowledge. Because it feels like if you""" start="00:03:17.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""get started like this,""" start="00:03:18.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you're gonna have a well over time as you""" start="00:03:20.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""progress with the learning.""" start="00:03:21.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So I'm very excited to see what you do in the""" start="00:03:23.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""coming years because of this.""" start="00:03:24.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you, thank you, yeah.""" start="00:03:26.420" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And Emacs has been like very central to my""" start="00:03:29.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""education as well. It's a great way to sort""" start="00:03:32.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""of organize myself and also it's a good way""" start="00:03:34.460" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to share with other people with Org Mode.""" start="00:03:36.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I can export my code, I can export notes.""" start="00:03:38.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It makes it so simple.""" start="00:03:39.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""My peers are also impressed by my PDF""" start="00:03:42.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""documents and whatever I can produce with""" start="00:03:44.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh yeah. If only they knew how much time it""" start="00:03:48.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""takes us to get LaTeX to behave properly.""" start="00:03:49.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Emacs. Right, right. I see some more""" start="00:03:52.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""questions coming in I can answer.""" start="00:03:53.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure, I'll read it for you so that it's a""" start="00:03:56.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""little more interactive.""" start="00:03:57.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So, second question. Videos can be very""" start="00:03:59.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""inspirational to learn about something by""" start="00:04:01.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""watching it used. I often find it,""" start="00:04:04.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I often find that I need to do some research""" start="00:04:07.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""after watching a video to learn more.""" start="00:04:09.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Do you give people links to relevant""" start="00:04:10.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""resources or etc?""" start="00:04:11.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, that's something I could definitely do""" start="00:04:15.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""more of. When I make a video I try to combine""" start="00:04:17.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""all the relevant resources and make 1 sort of""" start="00:04:20.459" video="qanda-sharing" id="subtitle"]]
+[[!template text="""cohesive video. I like to think of my video""" start="00:04:23.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""as a jumping off point to the Emacs manuals""" start="00:04:26.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because the manuals are so so full but you""" start="00:04:30.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""need to have a sort of a cursory""" start="00:04:31.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""understanding to get started with them.""" start="00:04:33.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And then yeah, if there are other sort of""" start="00:04:35.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""GitHub links or something like that,""" start="00:04:36.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I like to put those in the description.""" start="00:04:38.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Good question. Right. And I think it's arcing""" start="00:04:42.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""back also. I keep using the word arcing back.""" start="00:04:44.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I'm sorry. It's my... Every EmacsConf I have""" start="00:04:47.420" video="qanda-sharing" id="subtitle"]]
+[[!template text="""1 word or 1 phrase that I keep saying over""" start="00:04:49.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and over again and this 1 is not leaving but""" start="00:04:51.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""don't worry we only have about 1 more hour""" start="00:04:53.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and then you're done with me arcing out,""" start="00:04:54.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""arcing back to stuff. I think this is""" start="00:04:59.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""reminding me of both the mentoring talk we've""" start="00:05:03.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""had today about onboarding people basically""" start="00:05:06.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""so that they can have a well of a time on""" start="00:05:08.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""their own on Emacs and I'd agree with you,""" start="00:05:11.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you know, as much as we like to rave about""" start="00:05:13.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Emacs as a self-documenting editor,""" start="00:05:15.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""about how complete the documentation is,""" start="00:05:17.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""As you've mentioned in your talk,""" start="00:05:18.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it's not accessible directly to the people.""" start="00:05:21.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""We can yell as much as we want to people on""" start="00:05:23.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""IRC, you just need to RTFM or you just need""" start="00:05:26.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to do Ctrl-H-V for the variable or Ctrl-H-F.""" start="00:05:29.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""What is a variable? I am not for computer""" start="00:05:32.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""science. What does it mean?""" start="00:05:33.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It is really blocking a lot of people right""" start="00:05:36.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""from the get-go. And I think the element of""" start="00:05:40.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""interactivity, as you've mentioned in your""" start="00:05:42.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""talk, that is introduced by video just makes""" start="00:05:45.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the hand-holding that much easier.""" start="00:05:47.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And it's great to do it like this.""" start="00:05:50.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""All right, I think we've got another""" start="00:05:53.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""questions. What are your fellow codes of""" start="00:05:56.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""students using for their editors?""" start="00:05:57.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""What kinds of feedback do you get from them""" start="00:06:00.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""when they learn about you using Emacs?""" start="00:06:01.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's a great question.""" start="00:06:05.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I think professors want to make things,""" start="00:06:10.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the entry as simple as possible.""" start="00:06:12.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So for the first computer science course and""" start="00:06:15.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the second, at least at Columbia,""" start="00:06:16.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""They use Codeo, which is 1 of those online""" start="00:06:20.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""whole IDEs. Now in the third course,""" start="00:06:25.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""which is sort of more the weed out as they""" start="00:06:27.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""call it, the professor gives you a choice and""" start="00:06:29.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""he says you can use Emacs or you can use Vim.""" start="00:06:33.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And everyone uses Vim.""" start="00:06:36.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Not a single person I know is using Emacs,""" start="00:06:38.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""simply because the professor's using Vim and""" start="00:06:43.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""that's what he shows on screen and that's""" start="00:06:45.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""just what everyone else falls into.""" start="00:06:46.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And it's also, like, they're totally in the""" start="00:06:50.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""terminal, and that can be a big barrier of""" start="00:06:52.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""entry. So I think they see Emacs as like""" start="00:06:54.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""something like Vim, but it's not sort of the""" start="00:06:59.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""same idea. It's not what everyone uses""" start="00:07:01.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because it's not what's being shown up on""" start="00:07:03.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""screen. So if you're not following,""" start="00:07:05.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""like if you're a new learner,""" start="00:07:06.460" video="qanda-sharing" id="subtitle"]]
+[[!template text="""if you're not following with Vim,""" start="00:07:08.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you might have a little bit of a harder time""" start="00:07:10.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""in these classes because everyone else is""" start="00:07:12.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""also using Vim.""" start="00:07:14.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. And I'm kind of reminded again,""" start="00:07:19.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it feels like this is the last talk,""" start="00:07:21.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""so I'm reminiscing of all the different talks""" start="00:07:24.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""we've had on the general chat,""" start="00:07:25.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""at least. And you know,""" start="00:07:28.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it feels like we had, you know,""" start="00:07:30.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""this 1 talk, I can't remember the first name""" start="00:07:34.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""at the presentation, but it was about forcing""" start="00:07:36.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""people to use Emacs and not giving them the""" start="00:07:38.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""choice to do this. And I found it to be such""" start="00:07:41.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""a powerful move to do because usually people,""" start="00:07:45.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""maybe some classes are actually forcing Vim""" start="00:07:47.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because it's a little more palatable I guess.""" start="00:07:49.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Do you have something to say on this?""" start="00:07:51.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah let me actually, I've remembered 1""" start="00:07:53.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""thing, I know there's another course,""" start="00:07:55.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""a fourth course you'd say in assembly and the""" start="00:07:58.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""professor suggests Emacs.""" start="00:08:00.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""However I know that's just 1 professor so I""" start="00:08:04.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""think broadly Vim is more of the standard and""" start="00:08:06.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""yeah what were you, can you repeat what you""" start="00:08:08.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""said about Vim being more sort of friendly?""" start="00:08:09.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, because it's not,""" start="00:08:12.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""okay, I'm quoting the opinions of other,""" start="00:08:14.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you know, I would hate to insult Emacs and""" start="00:08:17.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""give myself a bad rep at Emacs comfortable""" start="00:08:19.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""things. But it feels like because modal""" start="00:08:23.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""editing is usually something that people hear""" start="00:08:26.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""from when it starts looking into how to be""" start="00:08:28.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""more efficient when they read text.""" start="00:08:30.460" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It feels like the first door,""" start="00:08:32.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the closest door to this is Vim.""" start="00:08:35.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And so a lot of professors,""" start="00:08:36.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because there's very little on-boarding,""" start="00:08:39.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I mean, I'm going to say the word on-boarding""" start="00:08:41.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and then I'm going to modulate,""" start="00:08:42.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""but there's very little on-boarding to get""" start="00:08:44.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""into modal editing. You just have your H's""" start="00:08:47.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and your J's and your K's and your L's and""" start="00:08:50.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""everything works. You know,""" start="00:08:51.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it does something, yes,""" start="00:08:52.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the arrows are in weird places,""" start="00:08:53.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""but it does something that is vaguely""" start="00:08:55.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""logical. Whereas with Ctrl-Meta,""" start="00:08:58.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Hyper, Super, J and then Ctrl-C and Meta 4""" start="00:09:03.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""for good measure, you know,""" start="00:09:04.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It already feels a little more opaque in""" start="00:09:08.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""terms of how people are going to use this.""" start="00:09:09.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So, I think it's also 1 good thing about the""" start="00:09:13.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""videos is that people can see you're not""" start="00:09:15.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""contorting your hands in very difficult""" start="00:09:17.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""shapes to use Emacs as the bad rep usually""" start="00:09:20.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""is. But yeah, to come back to what I was""" start="00:09:24.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""saying about Vim, I just feel like they've""" start="00:09:26.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""won the battle in terms of looking very""" start="00:09:30.460" video="qanda-sharing" id="subtitle"]]
+[[!template text="""accessible. And for us with Emacs,""" start="00:09:33.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""from the top of our ivory tower,""" start="00:09:37.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""we see the ease of getting into Vim,""" start="00:09:39.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""but we always think, but Vim script is shit,""" start="00:09:43.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""we've got Elisp for us,""" start="00:09:44.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""We can do so many things on our end.""" start="00:09:46.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So yeah, does that evoke anything to you with""" start="00:09:51.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""regards to Vim versus Emacs in terms of""" start="00:09:52.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""apprehension?""" start="00:09:53.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I think that Emacs might be more""" start="00:09:56.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""straightforward if you just plop someone down""" start="00:09:59.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""in front of their computer because you press""" start="00:10:01.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""H, you're going to see an H on the screen,""" start="00:10:03.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""right? And Vim is a whole new modal mindset.""" start="00:10:06.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So for a student who wants to like gain""" start="00:10:09.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""efficiency, then yes, I think that Vim is""" start="00:10:13.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""definitely like, it feels like a more""" start="00:10:15.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""friendly introduction.""" start="00:10:16.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""But I think that Emacs doesn't get enough""" start="00:10:18.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""credit around here. And I'd like to see it""" start="00:10:20.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""more often, because a lot of students,""" start="00:10:23.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""they're not looking to fix the efficiencies""" start="00:10:25.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""in their text editing.""" start="00:10:28.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""They're looking to fix the efficiencies in""" start="00:10:31.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""how they do homework or how they do their""" start="00:10:33.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""programming assignments,""" start="00:10:34.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and they would save time if they,""" start="00:10:37.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""or at least the mentality for a student,""" start="00:10:39.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""is that if you can just get it done more""" start="00:10:42.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""quickly, like it's more,""" start="00:10:43.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you know, you do what you're used to,""" start="00:10:45.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and Vim is just a barrier towards you know""" start="00:10:49.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""getting your work done like how do I copy and""" start="00:10:51.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""paste something it's a whole new set of""" start="00:10:52.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""challenges to learn so I think both have""" start="00:10:55.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""their deficiencies and abilities.""" start="00:10:56.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah it's funny because I'm just 1 last thing""" start="00:11:00.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""on this it feels like modal editing because""" start="00:11:03.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it is already weird from the get-go,""" start="00:11:05.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""perhaps it might do a better job of making""" start="00:11:08.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""people uneasy. You know how we say that""" start="00:11:10.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""constraints breeds creativity.""" start="00:11:11.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Well, Vim constrains you from the get-go.""" start="00:11:14.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""If you do not press I,""" start="00:11:16.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""nothing is going to show up in the buffer""" start="00:11:18.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""that you're currently editing.""" start="00:11:19.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Whereas Emacs give you this full sense of""" start="00:11:21.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""security by when you press J,""" start="00:11:24.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, true.""" start="00:11:27.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: it actually inputs J. All right,""" start="00:11:29.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""moving on to another question.""" start="00:11:30.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And by the way, we've got some time.""" start="00:11:32.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""We have technically about 6 more minutes,""" start="00:11:34.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""but I see Sasha on the other track is already""" start="00:11:38.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""answering questions that I'm in about""" start="00:11:40.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""EmacsConf. So we can go a little longer,""" start="00:11:42.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""as long as I let the organizers know.""" start="00:11:44.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So we've got about, let's say,""" start="00:11:46.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""6 minutes for now. And we'll see if more""" start="00:11:48.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""questions crop up. All right,""" start="00:11:50.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""moving on to the next question.""" start="00:11:51.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Did you start those university classes using""" start="00:11:53.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Emacs, I suppose, in your first year?""" start="00:11:55.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, yeah, I did. I started with Emacs 2""" start="00:12:01.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""years before entering college,""" start="00:12:02.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""so my junior year of high school.""" start="00:12:04.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And I've basically over time built up a""" start="00:12:09.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""workflow of how I will take my notes,""" start="00:12:11.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""how I will organize my classes.""" start="00:12:12.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And now that I'm taking programming classes""" start="00:12:16.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""where Emacs might be more acceptable.""" start="00:12:18.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It's even enhanced my workflow.""" start="00:12:21.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Taking notes in Ouro for program assists,""" start="00:12:24.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""everyone talks about it,""" start="00:12:27.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""but from the source, It doesn't get better""" start="00:12:30.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""than that, being able to write with""" start="00:12:32.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""highlighting, with syntax highlighting,""" start="00:12:34.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""with easy exports, running inline code""" start="00:12:38.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""blocks. And a lot of these programming""" start="00:12:40.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""classes, they make you code on a server.""" start="00:12:42.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And they just say, oh,""" start="00:12:45.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""SSH, and you can use Vim.""" start="00:12:46.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I can use Tramp, and I can use Emacs,""" start="00:12:48.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and I'm perfectly at home.""" start="00:12:50.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It's just such a seamless transition.""" start="00:12:52.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It's a really amazing way to do school.""" start="00:12:55.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Professors, you know, all they want is a PDF""" start="00:12:58.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""at the end of the day.""" start="00:12:59.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""They just want the paper on their desk.""" start="00:13:00.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""They're not so picky about how you get it""" start="00:13:03.420" video="qanda-sharing" id="subtitle"]]
+[[!template text="""there. They just want it in their hands.""" start="00:13:04.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So, so Emacs is, it's very usable.""" start="00:13:07.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It's very doable.""" start="00:13:08.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. I've got a little anecdote on this""" start="00:13:11.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because you're speaking about the topic of""" start="00:13:13.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Emacs at university from the perspective of""" start="00:13:16.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""someone who is in computer science.""" start="00:13:17.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""But for me, in the humanities,""" start="00:13:19.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I just remember those professors who just""" start="00:13:22.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""required you not to use your laptop.""" start="00:13:24.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And I started with Emacs roughly at the same""" start="00:13:28.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""age as you did. And I was just using it for""" start="00:13:32.460" video="qanda-sharing" id="subtitle"]]
+[[!template text="""absolutely everything,""" start="00:13:33.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""for my organization, for producing papers.""" start="00:13:35.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And to be told that I could not use Emacs for""" start="00:13:37.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""a class for my note-taking,""" start="00:13:38.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I felt utterly naked in the face of what I""" start="00:13:43.660" video="qanda-sharing" id="subtitle"]]
+[[!template text="""needed to do. And yeah,""" start="00:13:46.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it's great to see those different""" start="00:13:47.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""experiences. And it just,""" start="00:13:49.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you're always going to be weird.""" start="00:13:50.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Like I was the weird guy using Emacs in the""" start="00:13:53.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""humanities, but I would have been weird using""" start="00:13:54.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Vim or any kind of computers with fancy""" start="00:13:58.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""editing.""" start="00:13:59.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh yeah, yeah. And I'm in humanities classes""" start="00:14:02.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""as well, I'm not in a strictly engineering,""" start="00:14:03.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""so people will see me writing an essay about,""" start="00:14:06.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you know, a philosophy essay,""" start="00:14:07.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I was working on an essay about Plato and""" start="00:14:09.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Aristotle, and they say,""" start="00:14:11.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""what are you coding, why are you coding your""" start="00:14:13.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""essay? And I say, well it's just the font""" start="00:14:16.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""looks a little bit different.""" start="00:14:17.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Everything else is the same words,""" start="00:14:19.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""just the font looks a little different.""" start="00:14:20.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""This is how I like to do it.""" start="00:14:22.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, those pesky monospace fonts are making us""" start="00:14:25.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""pass as hackers. But for everyone who is""" start="00:14:27.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""behind us, looking at our monitors.""" start="00:14:29.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Exactly.""" start="00:14:30.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right. A little bit of a remark,""" start="00:14:33.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I guess, towards me and what I said about""" start="00:14:35.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Vim. So, quoting, before NeoVim,""" start="00:14:37.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you had to do as much or more configuration""" start="00:14:39.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to get basic editing done than in Emacs.""" start="00:14:41.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It's also slower with modal editing compared""" start="00:14:43.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to Emacs key bindings because you have to""" start="00:14:45.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""press escape and 2 keys to get things done.""" start="00:14:47.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""While in Emacs, you only have to press Ctrl""" start="00:14:49.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""or Meta something to move or search or""" start="00:14:52.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""whatever, and then write.""" start="00:14:53.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And I tend to agree, I'm not familiar with""" start="00:14:55.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the ages before NeoVim,""" start="00:14:59.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""But I think we are mostly talking in terms of""" start="00:15:03.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""reputation and communication,""" start="00:15:04.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""like how is Vim considered nowadays or for""" start="00:15:08.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the last 10 years in the mindset of people""" start="00:15:10.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""choosing or about to choose an editor.""" start="00:15:13.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And, You know, I keep spitting the fact about""" start="00:15:17.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""VimScript being bad, but I'm going to be""" start="00:15:19.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""honest, I've never actually written any""" start="00:15:20.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""VimScript. I'm just parroting whatever the""" start="00:15:24.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""giants with shoulders I'm standing have been""" start="00:15:26.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""saying to me. And it's not very intelligent,""" start="00:15:28.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I know, but We also have a very limited pool""" start="00:15:31.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""of time, and I also think that this is a""" start="00:15:34.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""point that your talk addresses in a way.""" start="00:15:36.460" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Yes, we could be starting the massive quest""" start="00:15:40.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""of reading the Emacs manual or the ELISP""" start="00:15:42.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""introductory guide or the ELISP complete""" start="00:15:45.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""guide. A lot of people are trying,""" start="00:15:47.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""very highly motivated,""" start="00:15:48.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I'm going to get started on Emacs and I'm""" start="00:15:51.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""going to do things right.""" start="00:15:51.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""But the fact of the matter is,""" start="00:15:53.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it's not necessarily a good use of your time""" start="00:15:56.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to get started like this,""" start="00:15:57.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because there are so many things you're not""" start="00:16:00.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""going to understand, it kind of goes back,""" start="00:16:03.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""didn't say iBug this time,""" start="00:16:04.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I stopped myself, it kind of goes back to""" start="00:16:07.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""this I plus 1 Vigoski proximals on""" start="00:16:11.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""development stuff that I was talking about""" start="00:16:12.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""before. The manual is I plus 999.""" start="00:16:16.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Your video might be I plus 3 or I plus 2 and""" start="00:16:20.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the hand-holding really does wonders for""" start="00:16:23.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""people to eventually get closer to reading""" start="00:16:26.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the manuals and stuff like this.""" start="00:16:27.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah it's a great way just something about""" start="00:16:31.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""giving someone those practical""" start="00:16:33.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""demonstrations, that's something I really""" start="00:16:35.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""appreciate. A lot of these really nice""" start="00:16:36.860" video="qanda-sharing" id="subtitle"]]
+[[!template text="""presentations we've had today and yesterday""" start="00:16:38.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""show real life use cases and we get to see""" start="00:16:41.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""people typing and they're working how they""" start="00:16:44.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""would normally work. And that's a great way""" start="00:16:46.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to begin to understand how you can apply a""" start="00:16:49.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""tool to yourself because at the end of the""" start="00:16:50.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""day Emacs is a tool for us.""" start="00:16:52.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""You know we might take joy in it,""" start="00:16:53.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it helps us be more productive,""" start="00:16:54.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it's fun but we're using it for a certain end""" start="00:16:58.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and you know if we how we can understand to""" start="00:17:00.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""get to those ends and what those ends might""" start="00:17:03.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""even be. It's just great to see other people""" start="00:17:05.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""bring that forth for you.""" start="00:17:07.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay, great. Well, I don't see any more""" start="00:17:12.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""questions in the chat currently,""" start="00:17:13.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and I don't see anyone who's joined us on the""" start="00:17:17.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""blue button. We are near the time that I said""" start="00:17:19.599" video="qanda-sharing" id="subtitle"]]
+[[!template text="""we've got about 40 seconds to go until we""" start="00:17:22.420" video="qanda-sharing" id="subtitle"]]
+[[!template text="""were due to end. Jacob,""" start="00:17:24.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I kind of want to give you the microphone for""" start="00:17:26.099" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the end. Do you have anything to say?""" start="00:17:27.339" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Like you've talked about your YouTube""" start="00:17:28.359" video="qanda-sharing" id="subtitle"]]
+[[!template text="""channel, we've already ensured that the links""" start="00:17:30.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""will be everywhere on the talk page,""" start="00:17:31.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""in the pad, on IRC. But is there anything""" start="00:17:34.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""else you'd like to add?""" start="00:17:35.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Because you're the last speaker of EmacsCon,""" start="00:17:37.120" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and you've got the tough responsibility of""" start="00:17:39.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""finishing it.""" start="00:17:42.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, well, that's not tough at all when we've""" start="00:17:45.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""had 2 days. I mean, so many people,""" start="00:17:47.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""so many presenters coming together and like I""" start="00:17:51.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""said right at the beginning to Leo,""" start="00:17:52.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""putting your face out there,""" start="00:17:54.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""putting your voice out there,""" start="00:17:56.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""putting yourself out there,""" start="00:17:57.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it's such a great way to come together""" start="00:18:00.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because Emacs is not the standard.""" start="00:18:02.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""You know, I've tried to teach my friends""" start="00:18:04.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Emacs, I've tried to show it to them.""" start="00:18:06.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""You know, some people you get it or you""" start="00:18:08.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""don't. And the people who get it,""" start="00:18:10.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""we're not all in the same place.""" start="00:18:11.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And it's great.""" start="00:18:13.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm interrupting you for a second because I""" start="00:18:15.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""think we were supposed to kill the the cron""" start="00:18:17.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""which starts the next meeting and it hasn't.""" start="00:18:20.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Let me try to fix it. I'll talk to production""" start="00:18:22.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Do I wait or keep going?""" start="00:18:25.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: in a second. Just wait a bit.""" start="00:18:27.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I'm very sorry. I've given you the mic and""" start="00:18:29.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""then it just... Okay let me just check your""" start="00:18:35.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""production.""" start="00:18:35.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""What? All right, Jason.""" start="00:18:59.660" video="qanda-sharing" id="subtitle"]]
+[[!template text="""All right, Jacob, I'm going to put us""" start="00:19:00.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""manually back on track.""" start="00:19:02.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So give me just a second.""" start="00:19:03.080" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right.""" start="00:19:04.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm going to manually type the URL,""" start="00:19:09.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because it's a janky setup that we've got""" start="00:19:12.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""right now, when whenever it's not working.""" start="00:19:13.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""All right. So tps slash slash bbb emacs first""" start="00:19:20.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""dot org html. No, that's not the 1.""" start="00:19:23.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Let me try to type it.""" start="00:19:27.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Probably. Bbbemaxfirst.""" start="00:19:27.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""L5H, R5D, BH0 Okay, we're getting back Okay,""" start="00:19:42.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""sorry folks about this We are,""" start="00:19:44.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Jacob, We're back online.""" start="00:19:45.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I'm really sorry about this.""" start="00:19:46.800" video="qanda-sharing" id="subtitle"]]
+[[!template text="""It's just that Sasha's script kicked in.""" start="00:19:49.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I did tell you we were supposed to finish at""" start="00:19:51.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""30. And because Sasha is busy presenting in""" start="00:19:53.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the other room, sadly,""" start="00:19:54.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""we got yanked again. So Jacob,""" start="00:19:57.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I'm very sorry for the interruption.""" start="00:19:58.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And you were retelling people about something""" start="00:20:01.220" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you told me during the check-ins.""" start="00:20:02.320" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Do you mind restarting this?""" start="00:20:04.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, sure. Well, you said I have the no""" start="00:20:09.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""small task of making the last words from""" start="00:20:12.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""presenters and not the organizers at""" start="00:20:14.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""EmacsConf. And I said,""" start="00:20:16.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""well, that's not hard at all.""" start="00:20:17.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""How many speakers have we had?""" start="00:20:20.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""30? And it's so incredible these past,""" start="00:20:24.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you know, today and yesterday to have all""" start="00:20:26.880" video="qanda-sharing" id="subtitle"]]
+[[!template text="""been able to come together and not just share""" start="00:20:29.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""our ideas and our code and how we do things,""" start="00:20:33.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""but to share our faces and our voices and our""" start="00:20:38.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""lives, you know a little bit of our lives.""" start="00:20:39.780" video="qanda-sharing" id="subtitle"]]
+[[!template text="""You know to have the passion to even spend""" start="00:20:42.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""the time to on your weekend to watch this""" start="00:20:44.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""means that you have some sort of care about""" start="00:20:47.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Emacs and it adds to your life.""" start="00:20:49.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And you know those Emacs people aren't""" start="00:20:51.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""everywhere. I've tried to bring my friends""" start="00:20:53.620" video="qanda-sharing" id="subtitle"]]
+[[!template text="""onto Emacs and it seems like you know you're""" start="00:20:56.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""an Emacs person or you're not really an Emacs""" start="00:20:58.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""person. And those Emacs people can be really""" start="00:21:02.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""spread out. So it's great that we're able to""" start="00:21:04.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""come together and share a little bit of""" start="00:21:07.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""ourselves, a little bit of how we do things.""" start="00:21:09.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And like I said in my talk,""" start="00:21:12.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""just increase our own joy in Emacs by coming""" start="00:21:15.660" video="qanda-sharing" id="subtitle"]]
+[[!template text="""together and being able to share our joy in""" start="00:21:19.360" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Emacs. And of course, thank you to all the""" start="00:21:21.760" video="qanda-sharing" id="subtitle"]]
+[[!template text="""organizers and everyone who's contributed in""" start="00:21:25.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""any way. It means a lot to even the smallest""" start="00:21:27.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""member, the biggest member of our community.""" start="00:21:29.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""We're all really glad to be able to come""" start="00:21:33.480" video="qanda-sharing" id="subtitle"]]
+[[!template text="""together like this and share and meet each""" start="00:21:36.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""other and give nice talks.""" start="00:21:37.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, thank you so much,""" start="00:21:40.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Jacob. And perhaps to reassure people,""" start="00:21:42.340" video="qanda-sharing" id="subtitle"]]
+[[!template text="""because yes, right now it feels like we are""" start="00:21:44.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""legions, all of us here in the same room""" start="00:21:47.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""watching the same thing.""" start="00:21:47.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""We are the Emacs' and that's a very good""" start="00:21:50.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""feeling to have. But you know,""" start="00:21:52.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""first, there's 1 thing that is certain,""" start="00:21:54.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""almost 99% certain, it's the fact that next""" start="00:21:58.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""year there'll probably be another EmacsConf""" start="00:22:00.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and there will be more Emacs versions,""" start="00:22:02.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""there will be more augmented versions,""" start="00:22:04.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""there will be more people doing cool stuff on""" start="00:22:07.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Melpa, on ELPA, etc. So it is still a vibrant""" start="00:22:11.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""community. But in case you're craving this""" start="00:22:14.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""little extra in-person stuff,""" start="00:22:17.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Sash and myself, we are maintaining a list of""" start="00:22:20.280" video="qanda-sharing" id="subtitle"]]
+[[!template text="""all the Emacs user group.""" start="00:22:21.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""This is on the Emacs wiki.""" start="00:22:22.680" video="qanda-sharing" id="subtitle"]]
+[[!template text="""This is what I'm sharing on my screen""" start="00:22:24.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""currently. And we try to organize them by""" start="00:22:27.500" video="qanda-sharing" id="subtitle"]]
+[[!template text="""regional region, sorry,""" start="00:22:30.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""parts of the world like North America,""" start="00:22:31.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""South America, Europe,""" start="00:22:32.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Africa, Asia. And we have a list of upcoming""" start="00:22:36.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""events and a lot of them are still online.""" start="00:22:39.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Ever since we had the entire pandemic stuff,""" start="00:22:41.420" video="qanda-sharing" id="subtitle"]]
+[[!template text="""a lot of the workshops moved online and,""" start="00:22:46.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""sorry, I had someone whispering in my ear.""" start="00:22:49.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""A lot of them moved online and they are still""" start="00:22:53.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""online now because they've realized it's a""" start="00:22:54.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""very great way to get more people in the same""" start="00:22:57.100" video="qanda-sharing" id="subtitle"]]
+[[!template text="""place. And whilst it's great to have""" start="00:22:59.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""in-person meetings, We do this with Emacs""" start="00:23:01.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Paris. Emacs Paris actually is happening is""" start="00:23:05.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it? I think, oh I'm going to need to tell""" start="00:23:07.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Sasha that apparently yes we do not have the""" start="00:23:10.200" video="qanda-sharing" id="subtitle"]]
+[[!template text="""next event for Emacs Paris which is next""" start="00:23:12.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Tuesday and it is in person but for everyone""" start="00:23:14.700" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and including you Jacob if you find a""" start="00:23:18.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""workshop in North America that is working for""" start="00:23:20.460" video="qanda-sharing" id="subtitle"]]
+[[!template text="""you, I'm thinking about Emacs SF,""" start="00:23:22.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""which I've attended multiple times,""" start="00:23:24.660" video="qanda-sharing" id="subtitle"]]
+[[!template text="""and Emacs Austin as well,""" start="00:23:27.980" video="qanda-sharing" id="subtitle"]]
+[[!template text="""that I've been to once,""" start="00:23:29.060" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I think, It would be a lovely experience and""" start="00:23:31.640" video="qanda-sharing" id="subtitle"]]
+[[!template text="""a way to, most of them are every month,""" start="00:23:34.160" video="qanda-sharing" id="subtitle"]]
+[[!template text="""it would be a good way for you to stay in""" start="00:23:36.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""touch and to continue this sense of""" start="00:23:39.240" video="qanda-sharing" id="subtitle"]]
+[[!template text="""in-person-ness about Emacs.""" start="00:23:40.580" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Wonderful. All right, thank you so much.""" start="00:23:46.560" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Should I drop off of our call now and let you""" start="00:23:48.900" video="qanda-sharing" id="subtitle"]]
+[[!template text="""close things up?""" start="00:23:50.000" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, we're probably gonna close thing up.""" start="00:23:52.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Let me just check on Sasha.""" start="00:23:53.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Sasha is obviously answering many many""" start="00:23:55.380" video="qanda-sharing" id="subtitle"]]
+[[!template text="""questions about how we are organizing""" start="00:23:57.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""EmacsConf. So Jacob, I'm gonna let you go.""" start="00:23:59.540" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Thank you so much for your presentation and""" start="00:24:01.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""your answers. And maybe we'll see you next""" start="00:24:03.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""year. Or maybe a workshop.""" start="00:24:05.020" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Who knows? I'm so lucky I got you as my Q&A.""" start="00:24:06.820" video="qanda-sharing" id="subtitle"]]
+[[!template text="""When I saw you at my first Emacs Conf 2 years""" start="00:24:10.440" video="qanda-sharing" id="subtitle"]]
+[[!template text="""ago, I thought, maybe this guy will do mine.""" start="00:24:12.740" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Very nice. Thank you. I'm glad I was able to""" start="00:24:18.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""generate such a feeling.""" start="00:24:19.920" video="qanda-sharing" id="subtitle"]]
+[[!template text="""All right, I'll get going now.""" start="00:24:21.600" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Jacob, have a wonderful evening.""" start="00:24:23.260" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 0]: And here you are. You too,""" start="00:24:23.940" video="qanda-sharing" id="subtitle"]]
+[[!template text="""see you later.""" start="00:24:24.400" video="qanda-sharing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Bye-bye. And folks, what are we going to do""" start="00:24:28.140" video="qanda-sharing" id="subtitle"]]
+[[!template text="""right now? I'm going to set everything up so""" start="00:24:30.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""that we can get Sasha finished on the talk.""" start="00:24:32.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""If you're watching, squinting with both""" start="00:24:34.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""streams, you can go to Sasha's room,""" start="00:24:37.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I mean, the development track,""" start="00:24:39.520" video="qanda-sharing" id="subtitle"]]
+[[!template text="""to maybe catch some of the answers by Sasha.""" start="00:24:42.180" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Otherwise, we'll be back in roughly 5 to 10""" start="00:24:45.040" video="qanda-sharing" id="subtitle"]]
+[[!template text="""minutes to do the closing remarks on this""" start="00:24:46.960" video="qanda-sharing" id="subtitle"]]
+[[!template text="""channel. In the meantime,""" start="00:24:47.720" video="qanda-sharing" id="subtitle"]]
+[[!template text="""I'll put on some music.""" start="00:24:48.840" video="qanda-sharing" id="subtitle"]]
+[[!template text="""So bear with us and I'll see you shortly.""" start="00:24:51.300" video="qanda-sharing" id="subtitle"]]
+[[!template text="""And closing here. This BBB recording.""" start="00:25:15.660" video="qanda-sharing" id="subtitle"]]
+[[!template text="""Yay!""" start="00:25:16.360" video="qanda-sharing" id="subtitle"]]
+
+Questions or comments? Please e-mail [jakebox0@protonmail.com](mailto:jakebox0@protonmail.com?subject=Comment%20for%20EmacsConf%202023%20sharing%3A%20Sharing%20Emacs%20is%20Caring%20Emacs%3A%20Emacs%20education%20and%20why%20I%20embraced%20video)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/sharing-before.md b/2023/info/sharing-before.md
new file mode 100644
index 00000000..ae63e36c
--- /dev/null
+++ b/2023/info/sharing-before.md
@@ -0,0 +1,28 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 17-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="sharing-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="sharing-mainVideo" data="""
+00:00.000 Introduction
+00:49.000 My journey of learning
+04:03.400 Straightforward Emacs
+05:32.120 Videos
+07:16.400 Clarity
+08:10.360 High-quality and accessible content
+09:15.920 The personal aspect
+11:48.120 Unity
+
+"""]]<div></div>Duration: 16:34 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--main.opus">Download --main.opus (8.8MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--main.webm">Download --main.webm (47MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--previous.mkv">Download --previous.mkv (377MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--script.txt">Download --script.txt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman.org">Download .org</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman.txt">Download .txt</a></li><li><a href="https://toobnix.org/w/3b5XfkceUaRjJuN5Pumgee">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="sharing-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="sharing-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--answers.opus"></audio></div><div></div>Duration: 25:19 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--answers.json">Download --answers.json (1.3MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--answers.opus">Download --answers.opus (16MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sharing--sharing-emacs-is-caring-emacs-emacs-education-and-why-i-embraced-video--jacob-boxerman--answers.webm">Download --answers.webm (44MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/sharing-nav.md b/2023/info/sharing-nav.md
new file mode 100644
index 00000000..2d903a48
--- /dev/null
+++ b/2023/info/sharing-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/web">Emacs saves the Web (maybe)</a>
+Next by track: <a href="/2023/talks/matplotllm">MatplotLLM, iterative natural language data visualization in org-babel</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/solo-after.md b/2023/info/solo-after.md
new file mode 100644
index 00000000..f99447c9
--- /dev/null
+++ b/2023/info/solo-after.md
@@ -0,0 +1,761 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="solo-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""Hi there, I'm Howard Abrams. You may remember me""" start="00:00:00.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""from past conference talks""" start="00:00:05.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""as &quot;Literate DevOps and the Temple of Doom&quot;""" start="00:00:07.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and &quot;Using Eshell for Fun and Profit&quot;.""" start="00:00:10.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I'm here to talk to you about my latest Emacs project:""" start="00:00:13.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""playing games, solo role-playing games.""" start="00:00:16.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I started playing RPGs when I got my first copy""" start="00:00:19.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""of Dungeons & Dragons when I was 12.""" start="00:00:23.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Yes, my original copy burned""" start="00:00:25.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""in the Great Satanic Panic of the 1980s,""" start="00:00:28.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but that's another story.""" start="00:00:30.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I started playing other RPGs like GURPS.""" start="00:00:32.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""These are some of my notes.""" start="00:00:37.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Back then, I was typing them in Emacs,""" start="00:00:40.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but I formatted them with LaTeX.""" start="00:00:42.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Later, when I was introducing my kids""" start="00:00:46.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to role-playing games,""" start="00:00:49.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I actually typed them up still in Emacs,""" start="00:00:50.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but now formatted them for a tablet.""" start="00:00:53.581" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I wrote a little JavaScript code""" start="00:00:57.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that allowed me to click on it, and it would roll dice,""" start="00:00:59.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""generate random events, keep track of turn order,""" start="00:01:03.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""you know, everything,""" start="00:01:06.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so I didn't have to slow down the action of the game.""" start="00:01:07.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Well, when my kids got older,""" start="00:01:10.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I still managed to sneak in a game of D&D""" start="00:01:13.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""once a week at lunch.""" start="00:01:15.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This pastime came to a screeching halt with the pandemic.""" start="00:01:17.320" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Solo RPGs""" start="00:01:20.680" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""I turned to playing role-playing games by myself""" start="00:01:20.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to get my fix. Playing these silly elf games in solo mode""" start="00:01:23.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""has been part of the game for many years,""" start="00:01:28.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but with so many of us stuck at home,""" start="00:01:29.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""solo role-playing games really expanded,""" start="00:01:32.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""creative people releasing some amazing ideas.""" start="00:01:35.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""What's a solo RPG like? Well, it's somewhere in the middle""" start="00:01:40.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""of writing your own story, where anything's possible,""" start="00:01:44.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but you've got to do all the imaginative work;""" start="00:01:47.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or reading a choose-your-own-adventure book,""" start="00:01:50.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""where the text is given to you,""" start="00:01:53.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and you have free, a few predetermined paths;""" start="00:01:55.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and tactical battle games,""" start="00:01:59.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""where dice determines everything.""" start="00:02:01.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""It kind of fits in the sweet spot between those.""" start="00:02:03.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""While I started removing the Game Master""" start="00:02:05.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""using the Mythic GM Emulator,""" start="00:02:08.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Ironsworn really captivated me.""" start="00:02:12.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I began with dice, pencils, notebooks, you know,""" start="00:02:15.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""just like when I was a kid. But taking notes on paper?""" start="00:02:19.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Yeah, you know me. That's not my jam. Org mode is.""" start="00:02:23.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And, you know, notes have to be in Org,""" start="00:02:28.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""well, why not write a little dice roller in Lisp?""" start="00:02:31.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Well, when Shawn Tomkin released his Ironsworn""" start="00:02:35.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""under the Creative Commons, well,""" start="00:02:38.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I could just download the entire text.""" start="00:02:41.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I figured I could just render the entire game in Emacs.""" start="00:02:43.920" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Demo""" start="00:02:47.440" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""All right, enough talk. Let's get some Emacs action here,""" start="00:02:47.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""while I show you a bit of my game.""" start="00:02:51.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""When playing a solo RPG,""" start="00:02:55.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I jot down the story notes in an Org file.""" start="00:02:57.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I mean, did you expect anything less from me?""" start="00:02:59.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I alternate between lengthy prose and short notes.""" start="00:03:02.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As I'm both the writer and the audience,""" start="00:03:07.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the goal is just enjoyment.""" start="00:03:10.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, this document is both a record log of my game sessions,""" start="00:03:12.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""as well as my character's character sheet.""" start="00:03:17.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""In most RPGs, a player's focus is a character sheet""" start="00:03:20.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that lists all the attributes, the stats, equipment,""" start="00:03:24.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""powers, you know, that sort of thing.""" start="00:03:27.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""For my game, I wanted the focus to be the prose,""" start="00:03:28.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or at least the notes.""" start="00:03:32.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, I put down all the stats as Org mode properties.""" start="00:03:34.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, I can collapse a property drawer""" start="00:03:38.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and have functions""" start="00:03:40.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that just grab values from these properties.""" start="00:03:42.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""All right, let's play. While not important to my talk,""" start="00:03:45.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I'm in the middle of a game. My character, Tegan,""" start="00:03:50.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""promised to help a village by tracking down""" start="00:03:52.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the son of a village chief. A less-than-stellar roll""" start="00:03:54.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""meant I didn't catch him before he entered""" start="00:03:59.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the mysterious underground structure""" start="00:04:01.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""of a relic of an ancient people.""" start="00:04:03.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I just finished playing out the journey,""" start="00:04:06.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and he's about to enter into the Catacombs of Svala's Blood.""" start="00:04:08.400" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Randomization""" start="00:04:11.760" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""Why that name? Well, that was actually what came up""" start="00:04:11.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""from an extensive random number generator that I wrote.""" start="00:04:15.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As I wrote more and more functions""" start="00:04:19.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to help me play this game,""" start="00:04:21.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and since I don't play all the time,""" start="00:04:23.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I created hydra. I can roll dice,""" start="00:04:25.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can roll dice challenges against the character stats,""" start="00:04:30.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can adjust stats. Lots of random generators""" start="00:04:34.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""come from this oracle section.""" start="00:04:38.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""For instance, are footprints going through the door?""" start="00:04:39.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I press `c`, and I'm prompted with how likely.""" start="00:04:43.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Since the villagers gave Tegan vague directions,""" start="00:04:46.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and he didn't see any signs the contrary,""" start="00:04:51.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I chose &quot;likely&quot;. And, well, it originally said yes,""" start="00:04:53.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and that's why I jotted this information down.""" start="00:04:58.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, this is different than my character's ability""" start="00:05:01.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to notice the prints. This is about generating the story,""" start="00:05:03.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""something that the game master would do""" start="00:05:07.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""in a typical role-playing game.""" start="00:05:10.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, if I wanted to name something,""" start="00:05:12.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or even the current weather,""" start="00:05:14.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I have random tables with the `C` keystroke.""" start="00:05:16.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Hmm, weather. Oh, it's summer, so hey,""" start="00:05:20.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""it's nice and clear. All right, let's play.""" start="00:05:27.280" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Moves""" start="00:05:31.960" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""The action in Ironsworn,""" start="00:05:31.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""like other Powered by the Apocalypse games,""" start="00:05:34.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is driven by moves. So, I hit the `m` key,""" start="00:05:37.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and all the moves show up.""" start="00:05:44.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Now, I don't think I need to espouse""" start="00:05:46.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the virtues of completing-read enhancements like Ivy.""" start="00:05:49.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Here, I'm using orderless with vertico""" start="00:05:52.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to help me find my choices.""" start="00:05:55.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Since I've discovered a site, let's play that move.""" start="00:05:57.720" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Reference""" start="00:06:03.640" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""I seldom remember the details for the moves,""" start="00:06:03.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so I figured, why not put the text of the book""" start="00:06:06.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""in an Org file and show it in a side window?""" start="00:06:09.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The prompt at the bottom, asking for a name,""" start="00:06:11.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is driven by the content in the displayed Org file.""" start="00:06:15.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This allows me to enhance my game without""" start="00:06:18.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""changing the original code. So, let's call this story arc,""" start="00:06:21.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Exploring the Catacombs of Svala's Blood.""" start="00:06:25.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Ooh, sounds epic.""" start="00:06:31.840" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Story arcs""" start="00:06:34.680" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""Ironsworn tracks the beats of a narrative,""" start="00:06:34.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so major plot points take up more room in the fiction""" start="00:06:37.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""than minor plot points.""" start="00:06:40.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Similar games like Blades in the Dark""" start="00:06:42.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""use numbers to track these, so you can say something like,""" start="00:06:45.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""we're three quarters of the way through this story arc.""" start="00:06:48.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Ironsworn just uses labels,""" start="00:06:51.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and while I want this particular story arc""" start="00:06:53.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to be significant, I really just want to get in,""" start="00:06:55.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""find this person, and get out.""" start="00:06:59.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, I'm going to call this &quot;short&quot;.""" start="00:07:00.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Next, it's asking about an Org mode header placement.""" start="00:07:04.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""While I originally wanted my Org files""" start="00:07:09.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to be completely flexible,""" start="00:07:12.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""one thing I noticed in playing""" start="00:07:13.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is that a pattern always emerged.""" start="00:07:15.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The story became a tree. You see, story arcs""" start="00:07:18.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""were just a series of montages or scenes,""" start="00:07:22.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and each of those were made of a series of events""" start="00:07:25.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and challenges to overcome.""" start="00:07:27.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, each Org mode header has a track,""" start="00:07:29.120" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""which often becomes the number of subheadings.""" start="00:07:32.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""At any point, I can see how much track is being made.""" start="00:07:35.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, for instance, this one seems to be""" start="00:07:40.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""about a third of the way through.""" start="00:07:47.240" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Using different stats""" start="00:07:48.680" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""So, let's dive into this ancient place.""" start="00:07:48.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Since I've been walking through a misty forest,""" start="00:07:52.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can imagine vines hiding an immense door""" start="00:07:55.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and a humid, earthy smell as I peer inside.""" start="00:07:59.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""But I don't have to write that stuff down,""" start="00:08:01.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""or if I want to practice my writing, I can.""" start="00:08:04.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I can imagine the place is dark,""" start="00:08:06.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so Tegan lights a torch""" start="00:08:09.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""before peering into this obscure world.""" start="00:08:10.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As this move mentions,""" start="00:08:13.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the next move to make is called Delve the Depths.""" start="00:08:15.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""As soon as I select this move,""" start="00:08:20.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""it shows up on the side window, and explains that,""" start="00:08:26.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""depending on how you're moving through""" start="00:08:31.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""this ancient catacombs,""" start="00:08:34.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is what kind of stat I roll against,""" start="00:08:36.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and those stats show up at the bottom.""" start="00:08:38.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""You know, if I'm sneaking around, you roll against &quot;shadow&quot;.""" start="00:08:41.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""If you're trying to go as fast as you can, it's &quot;edge&quot;.""" start="00:08:45.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""But I kind of imagine that he's thinking through,""" start="00:08:47.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""being very careful about it.""" start="00:08:51.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, I'm going to select &quot;wits&quot;.""" start="00:08:53.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And I don't have any modifiers.""" start="00:08:55.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Just about every one of my stats prompts me""" start="00:08:57.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""if I want to add or subtract any values.""" start="00:08:59.560" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Dice rolls""" start="00:09:02.960" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""A miss. I should explain how the dice roll in this game.""" start="00:09:02.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The downside to Ironsworn is that""" start="00:09:09.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the dice mechanics are more cumbersome than other games.""" start="00:09:13.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""You roll a 6-sided die, add to it your relevant stat,""" start="00:09:16.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""plus any modifiers. Next, you roll two 10-sided die""" start="00:09:20.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and see how it compares.""" start="00:09:24.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Of course, I programmed this in Lisp,""" start="00:09:25.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but when I displayed it, I wanted to see all the dice.""" start="00:09:28.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And I also just wanted to see the end results.""" start="00:09:31.600" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Dangers""" start="00:09:34.800" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""So I colored it. I rolled a miss,""" start="00:09:34.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""which means I need to reveal a danger.""" start="00:09:37.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Sure, I could imagine all sorts of dangers,""" start="00:09:39.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but this is a game.""" start="00:09:43.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I've already made a random generator for dangers.""" start="00:09:44.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""In fact, I've made a random generator""" start="00:09:48.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""for dangers in an ancient underkeep.""" start="00:09:51.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Discovery undermines or complicates the quest.""" start="00:09:55.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Hmm, a complication for finding the chief's son?""" start="00:10:00.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""What about a labyrinth full of hallways and levels""" start="00:10:09.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""with lots of choices and almost no way of finding them?""" start="00:10:13.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Yeah, that sounds like it fits pretty well.""" start="00:10:16.600" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""A strong success""" start="00:10:19.680" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""Time for another move. This time, we're going to""" start="00:10:19.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""gather information,""" start="00:10:26.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""see if we can figure out which way to go.""" start="00:10:28.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""A strong hit. Excellent.""" start="00:10:32.280" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I imagine Tegan noticing footprints in the dust""" start="00:10:34.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and knowing where to go.""" start="00:10:38.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""The game suggests that when you get a strong success,""" start="00:10:40.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""you can increase your momentum.""" start="00:10:44.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""These game mechanics""" start="00:10:45.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""come into play later, but this function here""" start="00:10:48.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""allows me to adjust that stat +2.""" start="00:10:51.755" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I don't even have to scroll to the top of the buffer""" start="00:10:57.881" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and edit that value in my properties.""" start="00:11:01.461" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""At any point, I can take a look at those stats""" start="00:11:04.821" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and see how they measure up.""" start="00:11:08.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Again, I don't have to scroll up""" start="00:11:10.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and take a look at my properties""" start="00:11:13.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""at the top of the Org mode file.""" start="00:11:14.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""That's how I play the game.""" start="00:11:16.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""It's just a recursive loop of playing a move,""" start="00:11:19.240" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""rolling some dice to see how it works,""" start="00:11:24.640" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""trying to answer the question""" start="00:11:27.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""based on your own imagination or random tables,""" start="00:11:30.160" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""which the game calls oracles,""" start="00:11:33.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and play creatively until you decide to take a break""" start="00:11:35.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and pick it up another time.""" start="00:11:41.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I think you get the gist of how I play""" start="00:11:42.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""this dice and pencil game in Org Mode.""" start="00:11:47.000" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Other solo RPGs""" start="00:11:49.680" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""However, I found more solo RPGs to play.""" start="00:11:49.680" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And of course, I want to render them in Emacs too.""" start="00:11:54.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This code for Ironsworn was a bit too specific,""" start="00:11:57.320" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so I decided to create a role-playing game toolkit.""" start="00:12:00.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""This project is still in the early stages,""" start="00:12:04.760" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but I've created some functions""" start="00:12:09.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""for mimicking rolling dice, including a mini-DSL for""" start="00:12:12.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""making dice mechanics""" start="00:12:16.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""typical of many role-playing game systems.""" start="00:12:19.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I've also ported over the random table system.""" start="00:12:22.840" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""A text file can just list entries to be displayed at random.""" start="00:12:26.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""I love that I can put dice expression""" start="00:12:30.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and word choices in the entries.""" start="00:12:33.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""One type of random table allows you""" start="00:12:35.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to essentially copy and paste a table""" start="00:12:39.440" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""from a published game into a text file.""" start="00:12:41.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""A frequency table is what I'm calling""" start="00:12:43.800" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""a list of random entries where some entries show up""" start="00:12:47.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""more often than others. I'm working on generalizing""" start="00:12:50.880" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""the character sheet attributes as Org properties,""" start="00:12:55.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""so if you're interested, check out the project at Codeberg.""" start="00:12:59.960" video="mainVideo-solo" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:13:04.720" video="mainVideo-solo" id="subtitle"]]
+
+[[!template text="""The point of my presentation is not to show off Ironsworn,""" start="00:13:04.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""how I programmed it, or even this new toolkit.""" start="00:13:10.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""You see, most engineers,""" start="00:13:14.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""when they get an idea for a game like mine,""" start="00:13:17.560" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""would make a web app. Nothing wrong with it.""" start="00:13:20.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""More people can play it,""" start="00:13:24.080" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""but web apps suffer from text entry.""" start="00:13:25.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And don't tell me you prefer the keyboard interface""" start="00:13:28.200" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""to Google Docs. Oh, and the JavaScript framework du jour?""" start="00:13:30.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Oh, I mean, that's a huge barrier of entry""" start="00:13:35.960" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""when all you want to do""" start="00:13:40.400" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is have a bit of fun prototyping a game.""" start="00:13:42.040" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""What I'd like to impress upon you""" start="00:13:44.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""is that hacking Emacs to make personal games is a trip.""" start="00:13:48.480" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Learning Lisp is, it's easy.""" start="00:13:54.000" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""And more, Emacs Lisp has some, well sure,""" start="00:13:57.360" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""it has some cruft. But really, some of those features""" start="00:14:00.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""that I would hate at a distributed system at work,""" start="00:14:04.520" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""like global variables, makes hacking easier""" start="00:14:07.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""when you just want to have some fun in your own system.""" start="00:14:10.920" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""So, grab your laptop, sink into your comfy chair,""" start="00:14:14.720" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""pour yourself a glass of scotch,""" start="00:14:19.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""and craft yourself an enjoyable evening.""" start="00:14:21.600" video="mainVideo-solo" id="subtitle"]]
+[[!template text="""Happy hacking, my friends.""" start="00:14:24.720" video="mainVideo-solo" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="solo-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Right. Okay, so hi everyone.""" start="00:00:02.899" video="qanda-solo" id="subtitle"]]
+[[!template text="""We are now live. Hi Howard,""" start="00:00:04.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""how are you doing? Great.""" start="00:00:06.339" video="qanda-solo" id="subtitle"]]
+[[!template text="""Lovely to hear. As usual,""" start="00:00:09.960" video="qanda-solo" id="subtitle"]]
+[[!template text="""it's always a pleasure to see your""" start="00:00:11.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""presentation and the amount of time and""" start="00:00:14.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""energy you put into it.""" start="00:00:15.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""Slightly sorry about the shoppiness of the""" start="00:00:17.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""broadcast. Do not worry,""" start="00:00:18.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""the talk will be in its full 30 fps quality""" start="00:00:22.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""on the website after the conference.""" start="00:00:24.779" video="qanda-solo" id="subtitle"]]
+[[!template text="""Actually, right now. It's available right""" start="00:00:26.759" video="qanda-solo" id="subtitle"]]
+[[!template text="""now. As usual, feel free to ask your""" start="00:00:30.099" video="qanda-solo" id="subtitle"]]
+[[!template text="""questions in the in the pad.""" start="00:00:31.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""We've linked it both on the talk page and on""" start="00:00:34.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""IRC. I think I am on the right 1,""" start="00:00:38.400" video="qanda-solo" id="subtitle"]]
+[[!template text="""right? This is a solo.""" start="00:00:40.080" video="qanda-solo" id="subtitle"]]
+[[!template text="""Guys, questions, where are they?""" start="00:00:42.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""Oh, we do have questions,""" start="00:00:45.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""it's just that they're not in the right part.""" start="00:00:46.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""Okay, so I'm going to start,""" start="00:00:47.960" video="qanda-solo" id="subtitle"]]
+[[!template text="""I'm going to read the questions to Howard and""" start="00:00:49.739" video="qanda-solo" id="subtitle"]]
+[[!template text="""Howard will be answering them.""" start="00:00:50.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""And if you are interested in asking questions""" start="00:00:52.960" video="qanda-solo" id="subtitle"]]
+[[!template text="""directly to Howard, I see a lot of people""" start="00:00:54.620" video="qanda-solo" id="subtitle"]]
+[[!template text="""have joined us on BBB,""" start="00:00:55.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""so we'll first go through the questions on""" start="00:00:58.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""the pad and then we'll move on to the people""" start="00:01:00.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""on BBB. So Howard, starting with the first""" start="00:01:03.340" video="qanda-solo" id="subtitle"]]
+[[!template text="""question, does table data allow for""" start="00:01:06.300" video="qanda-solo" id="subtitle"]]
+[[!template text="""recursion, e.g. The result that returns they""" start="00:01:08.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""are random monster haunting the cavern""" start="00:01:10.600" video="qanda-solo" id="subtitle"]]
+[[!template text="""entrance and we roll on random monster and""" start="00:01:14.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""inject them, inject into the result?""" start="00:01:16.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""Sorry a little bit of a complicated question.""" start="00:01:17.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""Do you want me to read it again,""" start="00:01:21.900" video="qanda-solo" id="subtitle"]]
+[[!template text="""perhaps? Yeah, I think so.""" start="00:01:23.620" video="qanda-solo" id="subtitle"]]
+[[!template text="""I didn't quite catch that.""" start="00:01:25.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""Okay, so does the table data allow for""" start="00:01:28.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""recursion? So I think...""" start="00:01:30.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, yeah, yeah, yeah, yeah.""" start="00:01:31.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""No, it does. I put a little,""" start="00:01:33.960" video="qanda-solo" id="subtitle"]]
+[[!template text="""you know, there's some code that could,""" start="00:01:35.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""so you could, yeah, you get a random value""" start="00:01:38.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""that gets inserted and that random value""" start="00:01:41.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""could refer to another table and it can keep""" start="00:01:43.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""on going. I have not pushed that that hard""" start="00:01:46.000" video="qanda-solo" id="subtitle"]]
+[[!template text="""because obviously it's,""" start="00:01:48.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""it might be a little on the heavyweight side.""" start="00:01:50.880" video="qanda-solo" id="subtitle"]]
+[[!template text="""I can't imagine it to go too deep,""" start="00:01:52.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""though.""" start="00:01:52.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'm pretty sure Emacs would be complaining if""" start="00:01:56.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""you go a little too deep.""" start="00:01:57.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""We have something as Mike's list recursion,""" start="00:01:59.979" video="qanda-solo" id="subtitle"]]
+[[!template text="""and stuff like this. So don't worry.""" start="00:02:01.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""Go willy nilly with your recursions.""" start="00:02:03.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""We've got comments about the fact that it's a""" start="00:02:07.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""really cool project and I feel like everyone""" start="00:02:09.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""watching would be agreeing.""" start="00:02:10.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""You've got a question about where you can get""" start="00:02:14.100" video="qanda-solo" id="subtitle"]]
+[[!template text="""this. Do you have a github repository with""" start="00:02:16.620" video="qanda-solo" id="subtitle"]]
+[[!template text="""all of this?""" start="00:02:17.080" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, and at the well at the end of the""" start="00:02:20.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""presentation I kind of display that and I""" start="00:02:22.840" video="qanda-solo" id="subtitle"]]
+[[!template text="""think I put it at the top of the the pad""" start="00:02:25.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, there's a""" start="00:02:35.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes. I don't go Gone please.""" start="00:02:36.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Nothing there. There's a lot of stuff that""" start="00:02:38.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""needs to be reformatted.""" start="00:02:40.080" video="qanda-solo" id="subtitle"]]
+[[!template text="""This is all Aflacode, so obviously it's a""" start="00:02:46.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""personal hack. So people should just steal""" start="00:02:49.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""the code as opposed to looking at a real""" start="00:02:51.880" video="qanda-solo" id="subtitle"]]
+[[!template text="""project to use.""" start="00:02:52.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, lovely. So this game plus CRDT should""" start="00:03:00.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""be great for non-solid plays.""" start="00:03:01.960" video="qanda-solo" id="subtitle"]]
+[[!template text="""Are you familiar with CRDT?""" start="00:03:03.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, so I used to use Flubits once upon a""" start="00:03:08.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""time and after seeing the previous talk on""" start="00:03:11.880" video="qanda-solo" id="subtitle"]]
+[[!template text="""CRDT it's like, oh, I like that,""" start="00:03:14.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""and yes, I think that would be a fun idea.""" start="00:03:16.000" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: I think I remember, so I did something much""" start="00:03:19.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""more humble than you did.""" start="00:03:21.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""I did a little bit, a little package in Org""" start="00:03:24.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""Mode for rolling dice and you had like a""" start="00:03:27.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""little formula like you could write 60 20 and""" start="00:03:31.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""it would throw 6 dice with 20 faces,""" start="00:03:34.740" video="qanda-solo" id="subtitle"]]
+[[!template text="""60 sorry, 6 die, Frenchmen here in the room,""" start="00:03:39.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""20 faces and it would average them out or""" start="00:03:43.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""provide you any kind of stats needed.""" start="00:03:45.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""And this type of stuff works really well over""" start="00:03:48.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""CRDT because it's 1 edit inside of a file.""" start="00:03:52.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""If you start making edits in different parts""" start="00:03:55.900" video="qanda-solo" id="subtitle"]]
+[[!template text="""of your file, it starts becoming a little""" start="00:03:58.780" video="qanda-solo" id="subtitle"]]
+[[!template text="""more complicated because CRDT struggles when""" start="00:04:02.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""you're making many discrete changes inside of""" start="00:04:04.480" video="qanda-solo" id="subtitle"]]
+[[!template text="""the same file. Does that make sense?""" start="00:04:05.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: It does, it does. Interesting.""" start="00:04:07.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""Okay, yeah, no, I have not played with it""" start="00:04:10.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""yet.""" start="00:04:10.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, feel free to play with it and if you've""" start="00:04:14.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""got any kind of... If it works,""" start="00:04:16.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""it works and it's amazing,""" start="00:04:17.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""but if it doesn't, feel free to send us""" start="00:04:20.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""messages because Shantan,""" start="00:04:21.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""who's the maintainer of CRDT,""" start="00:04:23.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""we've been looking into options to make it a""" start="00:04:25.840" video="qanda-solo" id="subtitle"]]
+[[!template text="""little more resilient and work elsewhere for""" start="00:04:28.380" video="qanda-solo" id="subtitle"]]
+[[!template text="""securely. Excellent. All right,""" start="00:04:31.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""Great. I'm going back to the previous""" start="00:04:34.600" video="qanda-solo" id="subtitle"]]
+[[!template text="""question. So does the current version also""" start="00:04:37.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""have some utilities for doing multiplayer,""" start="00:04:39.020" video="qanda-solo" id="subtitle"]]
+[[!template text="""like either physically or digitally,""" start="00:04:41.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""like we've done with CRUT?""" start="00:04:42.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""The question is because you mentioned you""" start="00:04:45.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""previously did multiplayer session as well?""" start="00:04:47.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I mean, I was using the table,""" start="00:04:51.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""the random table at a random entry kind of""" start="00:04:55.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""thing. I was using that at my table.""" start="00:04:58.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""So, I'm an eternal DM.""" start="00:05:00.780" video="qanda-solo" id="subtitle"]]
+[[!template text="""So I would always use that.""" start="00:05:02.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""Like somebody says, what's the name of that""" start="00:05:05.020" video="qanda-solo" id="subtitle"]]
+[[!template text="""shopkeep? And I could just hit a key,""" start="00:05:07.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""and it'd come up with the name,""" start="00:05:08.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""and I'd just read it off.""" start="00:05:10.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""But it was still me generating it.""" start="00:05:14.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""So it wasn't something that people would see""" start="00:05:17.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""necessarily, but I would keep notes in it and""" start="00:05:19.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""then publish those notes.""" start="00:05:20.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""But yes, I don't know.""" start="00:05:24.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""This sounds all kind of,""" start="00:05:25.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""this sounds all intriguing.""" start="00:05:27.260" video="qanda-solo" id="subtitle"]]
+[[!template text="""I think this would be fun.""" start="00:05:28.840" video="qanda-solo" id="subtitle"]]
+[[!template text="""I think I need to get a group of like-minded""" start="00:05:32.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""Emacs people who want to play online.""" start="00:05:35.880" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'm sure you've got plenty of people not only""" start="00:05:39.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""watching but also here in BBB.""" start="00:05:41.580" video="qanda-solo" id="subtitle"]]
+[[!template text="""So we only have about 14 minutes until we go""" start="00:05:44.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""to the next talk and it might be a little""" start="00:05:46.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""short for a campaign, but we might just...""" start="00:05:48.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""Moving on to the next question,""" start="00:05:53.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""how does 1 become super awesome like Howard""" start="00:05:56.480" video="qanda-solo" id="subtitle"]]
+[[!template text="""Abrams? And I very much agree.""" start="00:05:58.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sure, yes. That's kind,""" start="00:05:58.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's not a secret, You're not giving your""" start="00:06:04.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: too kind, too kind. There's no trade secrets.""" start="00:06:09.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""Just follow your passions.""" start="00:06:10.580" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: trade secrets. I can only conquer.""" start="00:06:14.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""All right, moving on to the next question.""" start="00:06:16.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""Please talk a little about how you produced""" start="00:06:18.740" video="qanda-solo" id="subtitle"]]
+[[!template text="""such a slick presentation video.""" start="00:06:20.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""Everything looked completely professional,""" start="00:06:22.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""and I'd agree. So tell us more.""" start="00:06:25.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: OK, so as you've seen my previous""" start="00:06:29.260" video="qanda-solo" id="subtitle"]]
+[[!template text="""presentations, It's all just Emacs screen.""" start="00:06:32.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""I just felt like, oh, what I really want to""" start="00:06:35.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""talk about is how much fun I'm having and the""" start="00:06:39.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""little introduction. So my son actually is a""" start="00:06:43.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""YouTuber. So I asked him,""" start="00:06:44.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""and it's like, oh, I'll take care of your""" start="00:06:47.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""dad. And so he's the 1 that kind of prompted""" start="00:06:49.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""me. So I had a director.""" start="00:06:51.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""Don't know if that translates,""" start="00:06:53.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: I mean, that translates amazingly.""" start="00:06:58.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: though, but. Very good.""" start="00:07:02.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""You know, very over the top.""" start="00:07:06.900" video="qanda-solo" id="subtitle"]]
+[[!template text="""I've never done something like this before.""" start="00:07:09.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: I mean, the results at the end is No,""" start="00:07:10.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""but it fits you so well.""" start="00:07:11.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""I think this over the top-ness combined with""" start="00:07:14.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""the editing, it just...""" start="00:07:15.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: I might have to keep doing it because it was""" start="00:07:18.900" video="qanda-solo" id="subtitle"]]
+[[!template text="""fun. It was fun to do.""" start="00:07:20.600" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: You've set a standard that you'll need to""" start="00:07:23.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""meet for following Emax.""" start="00:07:24.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'll have to keep paying them then.""" start="00:07:28.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh no! Alright, Yes! Alright,""" start="00:07:30.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""moving on to the next question.""" start="00:07:32.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""Does table data, no sorry that's the 1 we did""" start="00:07:35.380" video="qanda-solo" id="subtitle"]]
+[[!template text="""on recursion and we're not going to struggle""" start="00:07:37.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""through the reading of it again.""" start="00:07:38.900" video="qanda-solo" id="subtitle"]]
+[[!template text="""Alright so with your toolkits,""" start="00:07:41.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""a list of good books would be nice to be""" start="00:07:43.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""included, example D&D,""" start="00:07:45.300" video="qanda-solo" id="subtitle"]]
+[[!template text="""space, steampunk, cyberpunk settings.""" start="00:07:48.400" video="qanda-solo" id="subtitle"]]
+[[!template text="""Do you have such a plan?""" start="00:07:49.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: 00I mean, I could definitely publish a""" start="00:07:56.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""bibliography of things I'm using and reading,""" start="00:07:59.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""But I don't know if I'd be writing anything.""" start="00:08:03.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh come on, don't tell yourself short.""" start="00:08:07.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""You've already proven you were amazing in""" start="00:08:09.000" video="qanda-solo" id="subtitle"]]
+[[!template text="""very different, very varied topics.""" start="00:08:10.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""I'm sure you should give it 1 more try.""" start="00:08:12.840" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: I don't know. I've got a sabbatical coming""" start="00:08:15.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""up. I'm toying with writing something,""" start="00:08:17.580" video="qanda-solo" id="subtitle"]]
+[[!template text="""but I don't know if it'd ever leave the Emacs""" start="00:08:19.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""buffer.""" start="00:08:20.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right, I like this.""" start="00:08:23.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""Next question. Hi Howard and thanks for an""" start="00:08:28.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""outstanding presentation.""" start="00:08:28.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""What did you use to create the graphics in""" start="00:08:31.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""your presentation? Didn't we cover this 1""" start="00:08:34.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""already? I can't remember.""" start="00:08:35.059" video="qanda-solo" id="subtitle"]]
+[[!template text="""No, that was""" start="00:08:35.740" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: a good 1. So the graphics actually were just""" start="00:08:41.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""kind of hacked together.""" start="00:08:43.179" video="qanda-solo" id="subtitle"]]
+[[!template text="""But then I just gave them to my son.""" start="00:08:45.020" video="qanda-solo" id="subtitle"]]
+[[!template text="""And it's like, can you put the graphic right""" start="00:08:47.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""here and he goes no problem there it is like""" start="00:08:50.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: okay great so 1 more 1 more reason to keep""" start="00:08:56.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""paying your son""" start="00:08:57.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: perfect yeah yeah exactly so if you can get""" start="00:08:59.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""get yourself a YouTuber who knows how to use""" start="00:09:02.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""all the tools. I think he was using DaVinci,""" start="00:09:05.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""but he's got quite a few going.""" start="00:09:08.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. Alright, moving on to the next""" start="00:09:12.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""question. Any plans to borrow tables from""" start="00:09:15.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""Dungeon World or Iron Sword Starforge and""" start="00:09:17.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""publish in a TK repository?""" start="00:09:20.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""Not sure what TK is.""" start="00:09:22.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, yeah, okay. So yeah,""" start="00:09:25.380" video="qanda-solo" id="subtitle"]]
+[[!template text="""so that would be fun and I'd love that.""" start="00:09:30.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""And I was just reading a way to render PDFs""" start="00:09:33.840" video="qanda-solo" id="subtitle"]]
+[[!template text="""that you might own into Markdown format.""" start="00:09:38.080" video="qanda-solo" id="subtitle"]]
+[[!template text="""And if it's in Markdown,""" start="00:09:39.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""it'd be easy to pull into Org Mode.""" start="00:09:41.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""So all of the Iron Sworn,""" start="00:09:43.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""that role-playing game,""" start="00:09:45.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""Since it's all under the Creative License,""" start="00:09:48.780" video="qanda-solo" id="subtitle"]]
+[[!template text="""I think even the Star Forge is.""" start="00:09:51.380" video="qanda-solo" id="subtitle"]]
+[[!template text="""So I think I could grab the Star Forge 1.""" start="00:09:53.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""I don't know about Dungeon World and their""" start="00:09:56.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""tables. But yeah, a lot of people are""" start="00:09:59.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""starting to publish those kind of tables.""" start="00:10:01.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""So yeah, that'd be fun.""" start="00:10:03.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""I'd like to render all those in text files""" start="00:10:07.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""that I could pull up like that.""" start="00:10:08.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Lovely. I think that's all for the questions""" start="00:10:13.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""we had in the pad. We still have 9 minutes.""" start="00:10:15.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""I see plenty of people have joined us,""" start="00:10:18.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""including 1 person with a microphone on BBB.""" start="00:10:21.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""PlasmaStrike, do you have a question?""" start="00:10:23.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""And would you like to unmute yourself and ask""" start="00:10:24.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""it? I'm also going to check the chat.""" start="00:10:28.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, yeah. StarsWithoutNumber is another great""" start="00:10:31.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""1 that's got some great tables in it.""" start="00:10:33.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""Sorry, I'm just looking at the questions that""" start="00:10:37.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""are popping up here, too.""" start="00:10:38.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sure. So I don't see anyone unmuting""" start="00:10:42.740" video="qanda-solo" id="subtitle"]]
+[[!template text="""themselves. I see people typing away""" start="00:10:44.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""questions. By the way,""" start="00:10:45.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""if you're going to type questions,""" start="00:10:46.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""perhaps do not put them on BBB,""" start="00:10:48.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""put them in the pad. It's a little easier for""" start="00:10:50.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""us to archive them afterwards.""" start="00:10:52.380" video="qanda-solo" id="subtitle"]]
+[[!template text="""I'm going to give a little bit of time.""" start="00:10:56.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""I feel bad about going on break when I have""" start="00:10:58.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""you available and ready to answer more""" start="00:11:00.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""questions. Oh, you're too kind.""" start="00:11:02.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: How have you, as this changed,""" start="00:11:07.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""how's your visualization of the books,""" start="00:11:09.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""or of your games at all?""" start="00:11:11.260" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Sorry, can you ask that 1 more time?""" start="00:11:15.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""I didn't catch the first part.""" start="00:11:16.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: How has this impacted,""" start="00:11:20.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""like, your imagination on the scenes and""" start="00:11:23.080" video="qanda-solo" id="subtitle"]]
+[[!template text="""stuff like that because it's partly open and""" start="00:11:28.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""closed because you had that chart where you""" start="00:11:30.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""had that where you put it in the center of""" start="00:11:32.880" video="qanda-solo" id="subtitle"]]
+[[!template text="""constrained by algorithms to enhance your""" start="00:11:37.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""creativity, you write it but it's not all""" start="00:11:39.780" video="qanda-solo" id="subtitle"]]
+[[!template text="""freeform to where you have writer's block as""" start="00:11:42.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""much.""" start="00:11:42.900" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: You hit the, You hit it on the head.""" start="00:11:46.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""That's exactly it. That's why I've been doing""" start="00:11:49.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""this. Creativity is a hard thing to foster.""" start="00:11:53.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""And having little prompts that you have to""" start="00:11:57.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""kind of work together,""" start="00:11:58.340" video="qanda-solo" id="subtitle"]]
+[[!template text="""like twisty language, what does that mean?""" start="00:12:03.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""Oh, you have to kind of work with that.""" start="00:12:06.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""So yeah, that's 1 of the reasons why I got""" start="00:12:08.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""into doing the solo version of it,""" start="00:12:11.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""just because you kind of,""" start="00:12:14.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""it does really foster the creativity.""" start="00:12:15.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""Did that answer the question?""" start="00:12:23.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah well has it kind of has it improved over""" start="00:12:28.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""time though of using it like""" start="00:12:30.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: oh yeah oh yeah I would definitely say so""" start="00:12:33.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""While I'm still not ready to publish my files""" start="00:12:36.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""at all, but the first ones were much worse.""" start="00:12:40.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: That was an example like after you play for""" start="00:12:46.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""like 2 months or something like that,""" start="00:12:47.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""like, could you close your eyes and see the""" start="00:12:50.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""rooms a lot better versus...""" start="00:12:51.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I think so. I think so.""" start="00:12:54.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""And, you know, there's 1 solo game called A""" start="00:13:02.150" video="qanda-solo" id="subtitle"]]
+[[!template text="""Thousand-Year-Old Vampire.""" start="00:13:03.340" video="qanda-solo" id="subtitle"]]
+[[!template text="""I don't know if you've seen that 1 or not,""" start="00:13:05.740" video="qanda-solo" id="subtitle"]]
+[[!template text="""but it's quite creative.""" start="00:13:08.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""It's very interesting.""" start="00:13:09.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""It's got a great setup to use.""" start="00:13:13.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""And When I was looking through it,""" start="00:13:17.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""it's like, I'm thinking of a typical vampire""" start="00:13:19.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""and this sort of thing.""" start="00:13:20.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""But then there's this YouTuber named Seth""" start="00:13:25.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""Skalkarski, if I can pronounce his name""" start="00:13:27.880" video="qanda-solo" id="subtitle"]]
+[[!template text="""right. He was describing it.""" start="00:13:30.020" video="qanda-solo" id="subtitle"]]
+[[!template text="""And he came up with a completely different""" start="00:13:32.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""vampire scene. And it's like,""" start="00:13:34.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""oh, I could see how people can kind of start""" start="00:13:37.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""working on these things and really see things""" start="00:13:40.600" video="qanda-solo" id="subtitle"]]
+[[!template text="""differently. And the creativity and all that""" start="00:13:43.080" video="qanda-solo" id="subtitle"]]
+[[!template text="""sort of stuff just really blossoms.""" start="00:13:44.340" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: And then I guess as an extension of that,""" start="00:13:48.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""how has the stories changed after using this""" start="00:13:53.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""toolkit or the solo games for 2 months?""" start="00:13:58.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""Like the scenes, like how you,""" start="00:14:00.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""like the stories that you'd start generating?""" start="00:14:02.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, yeah, yeah. Yeah,""" start="00:14:05.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""I mean, a lot depends on just how much you're""" start="00:14:09.000" video="qanda-solo" id="subtitle"]]
+[[!template text="""willing to put into it.""" start="00:14:10.140" video="qanda-solo" id="subtitle"]]
+[[!template text="""But yeah, I've definitely had a lot of fun.""" start="00:14:13.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""And it's just been a lot more enjoyable and""" start="00:14:16.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""just more interesting.""" start="00:14:17.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well I mean like has the types and quality of""" start="00:14:21.960" video="qanda-solo" id="subtitle"]]
+[[!template text="""the stories changed a lot?""" start="00:14:23.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""Or more than that?""" start="00:14:25.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think so, you know, but obviously the proof""" start="00:14:30.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""is if somebody else is doing the evaluation""" start="00:14:34.000" video="qanda-solo" id="subtitle"]]
+[[!template text="""and I'm not letting that out But I think so,""" start="00:14:39.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""but I think so so but I think your mileage""" start="00:14:42.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""may vary. So yeah, try it out""" start="00:14:44.340" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: Have you seen the game Dwarf Fortress?""" start="00:14:47.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""Because it's supposed to be a video game""" start="00:14:50.880" video="qanda-solo" id="subtitle"]]
+[[!template text="""that's in a similar spirit to that,""" start="00:14:53.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""where it helps you generate stories.""" start="00:14:55.080" video="qanda-solo" id="subtitle"]]
+[[!template text="""Dwarf Fortress, RimWorld,""" start="00:14:56.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""Kenshi is another 1.""" start="00:15:00.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, no, I've looked at the Dwarf Fortress,""" start="00:15:03.400" video="qanda-solo" id="subtitle"]]
+[[!template text="""but I haven't played it.""" start="00:15:04.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""But that 1 seems a little bit more""" start="00:15:08.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""structured, but still could be a lot of fun""" start="00:15:10.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""too. And then others, it's like,""" start="00:15:13.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""how far do you want to take it?""" start="00:15:15.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""Like I just picked up this 1 called Broken""" start="00:15:18.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""Cask. There it is, where you generate a""" start="00:15:21.820" video="qanda-solo" id="subtitle"]]
+[[!template text="""little bar tavern, and then you start rolling""" start="00:15:25.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""events. Now, it gives a lot more stuff coming""" start="00:15:29.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""out of it. It's like, oh,""" start="00:15:30.780" video="qanda-solo" id="subtitle"]]
+[[!template text="""this person's showing up and this is what's""" start="00:15:32.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""happening, but you can elaborate on it as""" start="00:15:34.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""much as you want. And that's what I'm""" start="00:15:36.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""thinking I might do. Hi,""" start="00:15:39.600" video="qanda-solo" id="subtitle"]]
+[[!template text="""Mike, you got a question?""" start="00:15:40.600" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 3]: Hi, Howard. Yeah, I do have a question.""" start="00:15:47.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""I'm a big fan of your work on literate DevOps""" start="00:15:50.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""and your essay and video on that topic.""" start="00:15:53.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""I'm just wondering if you still use that""" start="00:15:56.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""workflow at work and have you changed how""" start="00:15:59.640" video="qanda-solo" id="subtitle"]]
+[[!template text="""that process works or has it evolved over""" start="00:16:02.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""time since that video and essay were written?""" start="00:16:04.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's a good question.""" start="00:16:06.840" video="qanda-solo" id="subtitle"]]
+[[!template text="""Yes, I still do it. It varies depending on""" start="00:16:12.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""the project and whatnot.""" start="00:16:13.500" video="qanda-solo" id="subtitle"]]
+[[!template text="""But I still am using it.""" start="00:16:16.400" video="qanda-solo" id="subtitle"]]
+[[!template text="""Yeah, yeah. In fact, I'm doing it with a lot""" start="00:16:20.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""of other things. Like all my configuration""" start="00:16:22.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""files are all in a literate style for Emacs.""" start="00:16:27.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""And even all the code that's in Ironsworn,""" start="00:16:31.160" video="qanda-solo" id="subtitle"]]
+[[!template text="""the repo, if you go to the repo,""" start="00:16:35.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""it's the readme file. And yeah,""" start="00:16:37.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""that's just being rendered out to the Emacs""" start="00:16:39.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""file. So it is still all literate.""" start="00:16:41.660" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 3]: Very cool.""" start="00:16:43.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, because I don't know.""" start="00:16:46.500" video="qanda-solo" id="subtitle"]]
+[[!template text="""Some things are just a little too complicated""" start="00:16:48.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""to just type up.""" start="00:16:49.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: All right, sorry to be the bearer of bad""" start="00:16:56.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""news, but we have only about 3 more minutes""" start="00:16:58.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""of lifetime. By the way,""" start="00:16:59.840" video="qanda-solo" id="subtitle"]]
+[[!template text="""feel free to stay and discuss any of the""" start="00:17:02.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""topic of today's session after we go off air""" start="00:17:07.540" video="qanda-solo" id="subtitle"]]
+[[!template text="""and we'll be able to keep all of the nice""" start="00:17:10.579" video="qanda-solo" id="subtitle"]]
+[[!template text="""discussion and put them on the talks page""" start="00:17:12.260" video="qanda-solo" id="subtitle"]]
+[[!template text="""afterwards. Great. Howard,""" start="00:17:16.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""I would like to ask you if you have any last""" start="00:17:20.020" video="qanda-solo" id="subtitle"]]
+[[!template text="""words regarding the presentation or the""" start="00:17:21.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""questions you've had. Well,""" start="00:17:23.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""the last question we had,""" start="00:17:24.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""actually, we had Mike come and ask it live.""" start="00:17:27.500" video="qanda-solo" id="subtitle"]]
+[[!template text="""But do you have any parting words before we""" start="00:17:29.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""leave you? Okay.""" start="00:17:31.720" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think the last thing is go and hack""" start="00:17:37.560" video="qanda-solo" id="subtitle"]]
+[[!template text="""something. I mean, this Lisp stuff is a lot""" start="00:17:41.420" video="qanda-solo" id="subtitle"]]
+[[!template text="""of fun. And I hope that came across.""" start="00:17:43.860" video="qanda-solo" id="subtitle"]]
+[[!template text="""It's like, the project I made is just a""" start="00:17:47.240" video="qanda-solo" id="subtitle"]]
+[[!template text="""personal thing and it was fun for me to make,""" start="00:17:50.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""but everybody's probably got some fun thing""" start="00:17:53.100" video="qanda-solo" id="subtitle"]]
+[[!template text="""they could make as well.""" start="00:17:54.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""And just, I don't know,""" start="00:17:56.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""hack it yourself because all the,""" start="00:17:58.460" video="qanda-solo" id="subtitle"]]
+[[!template text="""you know, think about adding multi-threading""" start="00:18:01.920" video="qanda-solo" id="subtitle"]]
+[[!template text="""to Emacs. Maybe we don't want that,""" start="00:18:04.480" video="qanda-solo" id="subtitle"]]
+[[!template text="""because that'll just complicate things.""" start="00:18:06.000" video="qanda-solo" id="subtitle"]]
+[[!template text="""This is your own personal hacking sandbox,""" start="00:18:08.200" video="qanda-solo" id="subtitle"]]
+[[!template text="""so go have fun.""" start="00:18:09.520" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great. I was just going to say we were""" start="00:18:14.220" video="qanda-solo" id="subtitle"]]
+[[!template text="""talking about Dwarf Fortress.""" start="00:18:15.060" video="qanda-solo" id="subtitle"]]
+[[!template text="""In Dwarf Fortress, it's a very CPU intensive""" start="00:18:18.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""game because it needs to compute every single""" start="00:18:21.020" video="qanda-solo" id="subtitle"]]
+[[!template text="""thing in the world and there's such a thing""" start="00:18:23.480" video="qanda-solo" id="subtitle"]]
+[[!template text="""as the CPU death of the world where basically""" start="00:18:27.700" video="qanda-solo" id="subtitle"]]
+[[!template text="""you've got too many cats that are just""" start="00:18:29.340" video="qanda-solo" id="subtitle"]]
+[[!template text="""breeding constantly with 1 another and it""" start="00:18:31.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""creates so many entities that it just""" start="00:18:33.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""crashes, and the time it takes for the day to""" start="00:18:36.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""finish it, it just never finish.""" start="00:18:38.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""So I was going to say maybe multi-threading""" start="00:18:40.680" video="qanda-solo" id="subtitle"]]
+[[!template text="""might be useful in this case for Emacs.""" start="00:18:43.180" video="qanda-solo" id="subtitle"]]
+[[!template text="""So, wanting to foray into the future.""" start="00:18:46.100" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right. Thank you.""" start="00:18:48.800" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: And thank you so much,""" start="00:18:50.900" video="qanda-solo" id="subtitle"]]
+[[!template text="""Howard, and thank you Plasma Strike for your""" start="00:18:52.360" video="qanda-solo" id="subtitle"]]
+[[!template text="""question, as well as Mike,""" start="00:18:53.320" video="qanda-solo" id="subtitle"]]
+[[!template text="""who joined us. We're going to go live with""" start="00:18:55.760" video="qanda-solo" id="subtitle"]]
+[[!template text="""the next talk in about 1 minute,""" start="00:18:57.440" video="qanda-solo" id="subtitle"]]
+[[!template text="""and until then, well, I'm not going to put""" start="00:19:00.400" video="qanda-solo" id="subtitle"]]
+[[!template text="""music, You can wait 50 seconds without music,""" start="00:19:02.040" video="qanda-solo" id="subtitle"]]
+[[!template text="""you Zoomers. We'll be back in a bit.""" start="00:19:03.960" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 2]: Bye-bye.""" start="00:19:05.280" video="qanda-solo" id="subtitle"]]
+[[!template text="""[Speaker 0]: Bye, Howard. All right,""" start="00:19:09.620" video="qanda-solo" id="subtitle"]]
+[[!template text="""we are off. Thank you so much,""" start="00:19:11.120" video="qanda-solo" id="subtitle"]]
+[[!template text="""Howard. I need to dash.""" start="00:19:11.980" video="qanda-solo" id="subtitle"]]
+[[!template text="""And oh, I think he's already gone.""" start="00:19:13.940" video="qanda-solo" id="subtitle"]]
+[[!template text="""So Bye everyone, I'll see you later.""" start="00:19:16.360" video="qanda-solo" id="subtitle"]]
+
+Questions or comments? Please e-mail [howard@howardabrams.com](mailto:howard@howardabrams.com?subject=Comment%20for%20EmacsConf%202023%20solo%3A%20How%20I%20play%20TTRPGs%20in%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/solo-before.md b/2023/info/solo-before.md
new file mode 100644
index 00000000..4151f8a3
--- /dev/null
+++ b/2023/info/solo-before.md
@@ -0,0 +1,33 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 15-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="solo-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="solo-mainVideo" data="""
+00:00.000 Introduction
+01:20.680 Solo RPGs
+02:47.440 Demo
+04:11.760 Randomization
+05:31.960 Moves
+06:03.640 Reference
+06:34.680 Story arcs
+07:48.680 Using different stats
+09:02.960 Dice rolls
+09:34.800 Dangers
+10:19.680 A strong success
+11:49.680 Other solo RPGs
+13:04.720 Conclusion
+
+"""]]<div></div>Duration: 14:36 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.opus">Download --main.opus (6.6MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--main.webm">Download --main.webm (52MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/oNkcCHdWCKXRv6KnUTAeEC">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="solo-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="solo-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--answers.opus"></audio></div><div></div>Duration: 19:20 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--answers.opus">Download --answers.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-solo--how-i-play-ttrpgs-in-emacs--howard-abrams--answers.webm">Download --answers.webm (43MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/solo-nav.md b/2023/info/solo-nav.md
new file mode 100644
index 00000000..741f4f35
--- /dev/null
+++ b/2023/info/solo-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/collab">Collaborative data processing and documenting using org-babel</a>
+Next by track: <a href="/2023/talks/ref">Org-Mode workflow: informal reference tracking</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/steno-after.md b/2023/info/steno-after.md
new file mode 100644
index 00000000..486a8207
--- /dev/null
+++ b/2023/info/steno-after.md
@@ -0,0 +1,359 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="steno-mainVideo-transcript"></a>
+# Transcript
+
+[[!template text="""Stenotypy is a system of typing""" start="00:00:00.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""where you press multiple keys at the same time,""" start="00:00:03.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""letting you send more than one letter at a time.""" start="00:00:07.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is a video from the 1920s.""" start="00:00:13.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The man is holding a stenotype, a device used for stenotypy.""" start="00:00:16.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This particular one is called Grandjean.""" start="00:00:23.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's made for the French language.""" start="00:00:26.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In this demonstration,""" start="00:00:30.068" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the man is going to be dictating a passage,""" start="00:00:31.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""first, slowly and then quickly.""" start="00:00:34.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The lady on the left doesn't have trouble keeping up.""" start="00:00:38.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""She's using stenotypy.""" start="00:00:42.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The lady on the right is a good typist,""" start="00:00:44.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but she can't keep up when the dictation gets faster.""" start="00:00:48.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm nowhere near as fast as this lady.""" start="00:01:13.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""She's extremely skilled.""" start="00:01:16.020" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm not even a tenth of what she is.""" start="00:01:18.780" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I don't use Grandjean, I use Melani,""" start="00:01:24.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which is a system for Castilian and Italian.""" start="00:01:28.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I want to make the word solo, I press S, O, L,""" start="00:01:33.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which is made by two keys, and O.""" start="00:01:39.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here's what that looks like.""" start="00:01:43.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The hyphen between S and O means that""" start="00:01:45.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the S is on the left side,""" start="00:01:50.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and the rest of the letters are on the right side.""" start="00:01:52.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I want to write the word sólo,""" start="00:01:57.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which is just like the previous word,""" start="00:02:00.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but with the first O accented,""" start="00:02:02.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I would press the asterisk key.""" start="00:02:05.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Melani, the asterisk is used""" start="00:02:08.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to put an accent on a letter.""" start="00:02:11.960" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If you speak English,""" start="00:02:20.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then you would likely use the Ireland system.""" start="00:02:22.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""S-E-T makes the word set.""" start="00:02:25.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Ireland, you can make a long vowel sound""" start="00:02:28.780" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""by pressing the two thumb keys""" start="00:02:32.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""on the other side of the vowel you want to make long.""" start="00:02:34.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""S-long-E-T makes the word seat.""" start="00:02:41.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is me programming.""" start="00:02:50.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""After a few lines, I'll explain what's going on.""" start="00:02:52.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In GNU Emacs, you can create abbreviations""" start="00:03:19.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that expand to strings.""" start="00:03:23.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""For example, you can create an abbrev, like btwx,""" start="00:03:25.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that will expand to &quot;by the way&quot;""" start="00:03:31.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when you succeed btwx with a space or some punctuation.""" start="00:03:33.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here that's what I'm doing.""" start="00:03:40.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I type d and then emacs, which expands to this.""" start="00:03:42.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But this is a different kind of expansion""" start="00:03:48.140" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""from a simple string like by the way.""" start="00:03:50.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This one has structure.""" start="00:03:54.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It has interesting points that I can jump to.""" start="00:03:56.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's called a skeleton.""" start="00:04:00.680" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is the skeleton.""" start="00:04:03.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The part that I want you to focus on is the @ symbols.""" start="00:04:05.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Those are the interesting points that I jump to.""" start="00:04:10.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So, at one interesting point,""" start="00:04:15.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I can write the name of the function,""" start="00:04:18.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""at another interesting point, the arguments""" start="00:04:20.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""if the function will need them, the doc string,""" start="00:04:24.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and finally the body.""" start="00:04:28.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I get to the body, I use stenotypy""" start="00:04:31.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to write the words of the functions I'm looking for.""" start="00:04:34.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Then I call a completion framework""" start="00:04:39.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to choose from a list of candidates.""" start="00:04:41.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This completion framework doesn't care""" start="00:04:45.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""what order the words are in or how many words I use.""" start="00:04:47.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This completion framework is called Corfu,""" start="00:04:52.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which stands for COmpletion in Region FUnction.""" start="00:04:56.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And I'm using a package called Orderless""" start="00:05:00.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to make it stronger.""" start="00:05:03.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here, I use another skeleton, the same one as before.""" start="00:05:51.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This time, it has an argument.""" start="00:05:57.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Then, when I get to the body, I write another skeleton,""" start="00:06:00.880" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""one that has an interesting point between the quotes""" start="00:06:07.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and creates a new line""" start="00:06:12.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""right underneath it.""" start="00:06:14.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I typed i and then emacs,""" start="00:06:17.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and I got the interactive skeleton.""" start="00:06:20.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now, I use another skeleton,""" start="00:07:16.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but these ones differ""" start="00:07:18.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because it prompts me for a string,""" start="00:07:20.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and I can make the skeleton as long as I want.""" start="00:07:23.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I keep entering text in the prompt,""" start="00:07:27.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then Emacs will keep making the skeleton bigger.""" start="00:07:29.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I enter an empty string, it knows to stop asking,""" start="00:07:33.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and it sends me to the point""" start="00:07:38.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I've designated to go to when a skeleton is created.""" start="00:07:40.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""That's what the underscore means.""" start="00:07:44.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I type c and then Emacs, and I get the condition skeleton.""" start="00:07:48.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And then I use Corfu and Orderless to program.""" start="00:07:54.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""On two functions, I use a dabbrev.""" start="00:08:00.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""A dabbrev is a dynamic abbreviation.""" start="00:08:03.820" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here's how it works.""" start="00:08:09.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I have three strings""" start="00:08:11.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that begin with S-T, string, strawberry, and stop,""" start="00:08:12.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I can write S-T and then call dabbrev expand.""" start="00:08:17.820" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""First, this will give me stop""" start="00:08:22.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because I'm nearest to the word stop.""" start="00:08:24.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Then when I call it again, I'll get strawberry.""" start="00:08:27.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And if I call it a third time, I'll get string.""" start="00:08:30.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I start off with S-T-R, then I'll get strawberry first""" start="00:08:35.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and then string.""" start="00:08:40.140" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used dabbrev twice in this function.""" start="00:08:42.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If you read the top of the screen,""" start="00:08:46.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""you can see which commands I use and how I invoke them.""" start="00:08:48.080" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Finally, I use one last skeleton""" start="00:09:00.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to map the function I just wrote to a hotkey.""" start="00:09:03.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In this case, C-o.""" start="00:09:07.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here we can see what the function I just wrote does.""" start="00:09:15.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It opens a line with the line below indented""" start="00:09:19.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""if it isn't blank.""" start="00:09:22.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I've kept the old behavior with an argument of zero""" start="00:09:23.801" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and done something for when I use a negative argument.""" start="00:09:29.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can see the interesting points.""" start="00:09:33.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I could jump to any of them or cycle through them.""" start="00:09:36.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I normally use a 9-to-16 setup.""" start="00:09:50.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""To me, Emacs, and computing in general,""" start="00:09:54.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""is much more pleasant to use that way.""" start="00:09:58.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I stenotype a word,""" start="00:10:07.680" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""a space is sent immediately afterwards.""" start="00:10:10.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Orderless treats spaces as delimiters.""" start="00:10:14.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is very helpful""" start="00:10:17.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because I can enter commands with stenotypy,""" start="00:10:19.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""without having to worry about""" start="00:10:23.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""whether words are in the right order.""" start="00:10:25.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Lem, spelled L-E-M, is another Emacs.""" start="00:10:29.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's extremely powerful.""" start="00:10:34.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But Lem doesn't have skeletons, not yet at least.""" start="00:10:35.901" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So I'm going to program the traditional way.""" start="00:10:40.061" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Nothing fancy, just left-to-right programming.""" start="00:10:43.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""With Plover, you have dictionaries.""" start="00:11:38.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I added Fibonacci to my dictionary.""" start="00:11:41.521" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I made my own dictionary from scratch.""" start="00:11:44.861" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But if you don't want to do that,""" start="00:11:47.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""there are free dictionaries available""" start="00:11:49.781" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that have many words already in them,""" start="00:11:52.261" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""saving you lots of time.""" start="00:11:55.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The reason I made my dictionary from scratch""" start="00:11:56.721" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""is because I wanted to know my system inside and out.""" start="00:12:00.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""On one stroke, I typed T.""" start="00:12:03.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And, on the next stroke, I stenotyped coalton.""" start="00:12:07.961" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And then I got (coalton-toplevel and a new line.""" start="00:12:12.741" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's similar to what I did in GNU Emacs""" start="00:12:16.461" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when I expanded a skeleton.""" start="00:12:19.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This is actually not stenotypy,""" start="00:12:22.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but a different kind of steno, known as serial steno.""" start="00:12:25.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Plover is capable of this as well.""" start="00:12:29.821" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here are some things that Plover can do.""" start="00:12:32.941" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Plover can glue words,""" start="00:12:36.841" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""like if you need to make a compound word.""" start="00:12:38.921" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It can break a compound word.""" start="00:12:41.461" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can press keys to turn off Plover""" start="00:12:44.361" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""or to turn it back on.""" start="00:12:48.061" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can case words the way you want,""" start="00:12:50.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""uppercase, lowercase, capitalize.""" start="00:12:52.721" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can change your stenotype layout,""" start="00:12:55.761" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""like, say, if you want to use Grandjean for French,""" start="00:12:58.821" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Melani for Castilian, and Ireland for English.""" start="00:13:02.381" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""All of that's possible.""" start="00:13:06.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here I should note that I'm using a Plover plugin""" start="00:13:10.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""called Full Keyboard Steno.""" start="00:13:14.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It makes my entire keyboard into a stenotype.""" start="00:13:17.521" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Lem also has a completion feature built in.""" start="00:13:26.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""But I didn't need it for the code that I wrote.""" start="00:13:30.701" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's quite good.""" start="00:13:35.101" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In summary, if you add in the symbols""" start="00:13:38.720" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that you're going to need when you're programming,""" start="00:13:42.281" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""you'll be fine.""" start="00:13:45.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Even without skeletons,""" start="00:13:46.441" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Plover is nice to use for programming.""" start="00:13:48.621" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The search tool is the primary way of navigating in Emacs.""" start="00:14:00.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Every Emacser can be measured""" start="00:14:05.621" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""by their skill with the search tool.""" start="00:14:08.041" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""C-s begins a forward search.""" start="00:14:11.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The s stands for search.""" start="00:14:14.821" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm reading Aesop's Fables,""" start="00:14:18.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and I want to look for the word fox.""" start="00:14:20.741" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So I press C-s and type fox.""" start="00:14:23.641" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I want to go back to the beginning of the word fox,""" start="00:14:28.201" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I press C-r, which stands for reverse search.""" start="00:14:31.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""With Stenotypy, spaces are added to the end of words,""" start="00:14:37.501" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so sometimes that causes problems.""" start="00:14:42.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""We can remedy that by changing the way""" start="00:14:49.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Emacs interprets our whitespace.""" start="00:14:52.121" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I press C-M-s [alt control s],""" start="00:14:55.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""whitespace is interpreted as a wildcard.""" start="00:14:57.961" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's a function I made myself.""" start="00:15:01.301" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""fox mask will take me to the fox and the mask.""" start="00:15:04.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The whitespace is a wildcard.""" start="00:15:09.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""For me, Ctrl-s makes the whitespace literal.""" start="00:15:12.181" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I like having both options available to me:""" start="00:15:16.761" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""literal whitespace and wildcard whitespace.""" start="00:15:20.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Say I want to find the cat and the fox,""" start="00:15:29.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""one of my favorite fables.""" start="00:15:32.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I write cat fox, but I don't get what I want.""" start="00:15:34.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I've written a function that reverses""" start="00:15:39.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the order of my search query.""" start="00:15:42.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now I get what I want.""" start="00:15:45.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Searching like this is very convenient.""" start="00:15:47.880" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Lem, we can do something similar.""" start="00:15:55.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I want to read The Fox and the Lion.""" start="00:15:58.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I search for Lion Fox. Notice those words are capitalized.""" start="00:16:01.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now I'm going to transform the last two words""" start="00:16:08.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""into a regular expression""" start="00:16:11.781" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so that the order doesn't matter.""" start="00:16:14.300" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And now I can find the fable I'm looking for.""" start="00:16:18.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I did this with a plugin called Retro Stringop,""" start="00:16:27.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""op meaning operation.""" start="00:16:31.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I can perform any operation on the last n words.""" start="00:16:34.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Let's look at that.""" start="00:16:40.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The 2 means that I want to do something""" start="00:16:42.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to the last two words.""" start="00:16:44.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The operation I'm performing is Python code.""" start="00:16:46.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""To be honest, I don't know any Python,""" start="00:16:50.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but string manipulation is easy to understand.""" start="00:16:54.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If you do know Python, then you can make your own plugins""" start="00:16:57.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and even help with the development of Plover.""" start="00:17:01.701" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""A feature I like in Lem is that""" start="00:17:07.820" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when you gracefully exit search with Enter or C-m,""" start="00:17:09.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""what you searched for is highlighted.""" start="00:17:15.780" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""You can cycle through the results, the highlights,""" start="00:17:18.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and you can toggle the highlights on or off.""" start="00:17:23.241" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""1978, John Kulp designs a keyboard""" start="00:17:30.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""known as the Space Cadet Keyboard.""" start="00:17:34.481" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This keyboard has many distinctive qualities,""" start="00:17:37.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""one being the modifiers, numbering seven in total:""" start="00:17:40.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Shift, Control, Meta, Super, Hyper, Greek, and Top.""" start="00:17:44.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This keyboard influences the development of Emacs.""" start="00:17:51.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""2000, designer Kiyoshi Kimura and programmer Yoji Hagia""" start="00:17:56.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""release SandS, a program that lets you turn your spacebar""" start="00:18:02.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""into a dual-function key,""" start="00:18:07.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""sending space on tap""" start="00:18:09.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and acting as the Shift modifier on hold.""" start="00:18:11.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""This idea, the dual-function key,""" start="00:18:16.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""later revolutionizes typing.""" start="00:18:18.501" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""These two concepts, the space cadet modifiers""" start="00:18:22.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and the dual-function key, can be combined.""" start="00:18:25.641" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I use a program called Kanata""" start="00:18:29.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to put all the modifiers on my homerow.""" start="00:18:32.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I tap the letter a, I get an a.""" start="00:18:36.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I hold it down for longer than 200 milliseconds,""" start="00:18:40.100" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""it acts as the Meta modifier,""" start="00:18:43.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and really I can add""" start="00:18:46.740" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""as many layers to my keyboard as I want.""" start="00:18:48.060" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I don't use a little stenotype.""" start="00:18:52.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Thanks to Full Keyboard Steno, the Plover plugin,""" start="00:18:55.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I use my whole keyboard.""" start="00:18:59.140" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I have an alternative keyboard layout on it,""" start="00:19:02.020" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so, even when I'm typing in the traditional way,""" start="00:19:05.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""it feels amazing.""" start="00:19:08.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""My layout is called Kuron, and I lay it over Melani""" start="00:19:10.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so that I have both available to me at all times.""" start="00:19:15.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I don't get them confused because I set them off""" start="00:19:19.620" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with the way I press keys.""" start="00:19:24.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I press one key at a time,""" start="00:19:26.940" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm using Kuron, my keyboard layout.""" start="00:19:29.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I press multiple keys at the same time""" start="00:19:32.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and let them go quickly,""" start="00:19:35.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then I'm using stenotypy, in my case Melani.""" start="00:19:37.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""And if I hold one key longer than 200 milliseconds,""" start="00:19:41.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""then I'm activating it as a modifier key or a layer key.""" start="00:19:45.241" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I always know what state I'm in by the way I press my keys.""" start="00:19:51.340" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's impossible for me to get confused.""" start="00:19:56.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Holding multiple modifiers is not a problem""" start="00:20:03.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""because the keycaps used for stenotypy are flat and square.""" start="00:20:07.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Pressing two or more keys at once""" start="00:20:13.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with the same finger is easy.""" start="00:20:15.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Notice how close they are to each other.""" start="00:20:18.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In stenotypy, the homerow is the border""" start="00:20:21.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""between the two rows of keys.""" start="00:20:25.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It took me a while to get used to it,""" start="00:20:28.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""but now that I am used to it, I quite like it.""" start="00:20:31.260" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""So if I have to press a hotkey""" start="00:20:35.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with all six modifiers, Shift, Control, Meta,""" start="00:20:38.220" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Alt, Hyper, Super, it's easy.""" start="00:20:43.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Thanks to Kanata, I have a Greek layer on my board.""" start="00:20:50.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Additionally, I have alpha, beta, and gamma layers""" start="00:20:54.660" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""that send sequences of keys that I can use as hotkeys""" start="00:20:58.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""in both GNU Emacs and Lem.""" start="00:21:03.320" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Maybe you noticed a few while I was programming.""" start="00:21:06.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Now it's possible to bring the Space Cadet""" start="00:21:10.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""to any keyboard and to build on its wonderful ideas.""" start="00:21:12.960" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Here I'll note that another Emacser, Excalamus,""" start="00:21:20.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""has made a page called Plover with Emacs,""" start="00:21:24.460" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with information on how to use Emacs""" start="00:21:27.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""with the standard stenotype,""" start="00:21:30.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the one that has two rows,""" start="00:21:32.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the one I call a little stenotype.""" start="00:21:34.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""While I use my full keyboard,""" start="00:21:37.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I understand how a small board can be useful.""" start="00:21:39.600" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Finger movement is greatly reduced,""" start="00:21:43.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""leading to a very ergonomic typing experience.""" start="00:21:46.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In fact, all of the speed records""" start="00:21:49.440" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""are set with this stenotype, the standard stenotype.""" start="00:21:53.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""There are many great ideas on this page.""" start="00:21:58.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Thank you, Excalamus.""" start="00:22:01.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Special thanks to Richard Stallman,""" start="00:22:06.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the creator of GNU Emacs and the Free Software Foundation,""" start="00:22:09.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Sasaki Ryosuke, first name Ryosuke,""" start="00:22:13.420" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the creator and lead developer of Lem,""" start="00:22:16.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Mirabai Knight, the creator of the Open Steno Project,""" start="00:22:20.120" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which oversees the development of Plover,""" start="00:22:24.280" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and jtroo, the creator and lead developer of Kanata.""" start="00:22:26.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The views expressed in this talk are solely my own.""" start="00:22:32.700" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I have no connection to any of the parties mentioned herein""" start="00:22:37.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and therefore cannot be seen""" start="00:22:41.160" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""as representing them in any capacity.""" start="00:22:43.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""What I've said cannot be taken as medical advice.""" start="00:22:45.360" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used the TranSide theme for GNU Emacs in this talk.""" start="00:22:50.860" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's beautiful and functional.""" start="00:22:54.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I love how the code looks, and I can read the comments.""" start="00:22:57.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""In Lem, I used Gruber.""" start="00:23:03.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Again, the comments are readable, and the code looks nice.""" start="00:23:05.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""When I first started using Emacs,""" start="00:23:11.200" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used the Wheatgrass theme.""" start="00:23:13.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Another theme that I love is os1.""" start="00:23:19.980" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's a light, warm, modern theme for Emacs""" start="00:23:24.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""inspired by film palettes.""" start="00:23:28.240" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Regarding typography, for programming,""" start="00:23:35.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I used JuliaMono, which was designed by Cormullion.""" start="00:23:38.500" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It's extensive, and it's beautiful.""" start="00:23:43.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""For graphics, I used PromptFont,""" start="00:23:48.000" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""which was made by Yukari Hafner.""" start="00:23:51.380" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""She's very talented.""" start="00:23:54.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I really like her work, including this font.""" start="00:23:56.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""There are so many packages that I love in Emacs.""" start="00:24:01.180" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""If I talked about all of them,""" start="00:24:05.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""my talk would last for days,""" start="00:24:07.640" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""so I'm only going to mention three.""" start="00:24:09.800" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Keycast.""" start="00:24:12.580" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""At the top of the screen,""" start="00:24:14.400" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""you can see the commands I'm executing""" start="00:24:15.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""and how I'm invoking those commands.""" start="00:24:18.040" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""That's Keycast.""" start="00:24:20.560" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Rainbow Delimiters is another one I like.""" start="00:24:21.920" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""It lets me know visually""" start="00:24:25.540" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""when my parentheses are out of balance.""" start="00:24:27.520" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Very helpful when I'm programming in Lisp.""" start="00:24:30.480" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Moodline is another.""" start="00:24:35.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""The modeline is where I can see relevant information""" start="00:24:37.880" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""about the file I'm working on.""" start="00:24:42.900" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""Moodline only gives me the information I want.""" start="00:24:46.840" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""I'm not really worried about too many things, just""" start="00:24:50.760" video="mainVideo-steno" id="subtitle"]]
+[[!template text="""the file name, the mode I'm in, and where I am in the file.""" start="00:24:55.461" video="mainVideo-steno" id="subtitle"]]
+
+
+
+Captioner: daniel
+
+Questions or comments? Please e-mail [z111.513.321@gmail.com](mailto:z111.513.321@gmail.com?subject=Comment%20for%20EmacsConf%202023%20steno%3A%20Programming%20with%20steno)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/steno-before.md b/2023/info/steno-before.md
new file mode 100644
index 00000000..4eced50a
--- /dev/null
+++ b/2023/info/steno-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 26-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
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="steno-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 25:03 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.opus">Download --main.opus (13MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--main.webm">Download --main.webm (66MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-steno--programming-with-steno--daniel-alejandro-tapia--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/1xodScC6DPkfbnqG5FmbB3">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/steno-nav.md b/2023/info/steno-nav.md
new file mode 100644
index 00000000..27ac4e5d
--- /dev/null
+++ b/2023/info/steno-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/emms">Emacs MultiMedia System (EMMS)</a>
+Next by track: <a href="/2023/talks/mentor">Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/sun-close-after.md b/2023/info/sun-close-after.md
new file mode 100644
index 00000000..aebbe6f8
--- /dev/null
+++ b/2023/info/sun-close-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20sun-close%3A%20Sunday%20closing%20remarks)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/sun-close-before.md b/2023/info/sun-close-before.md
new file mode 100644
index 00000000..6f7c587b
--- /dev/null
+++ b/2023/info/sun-close-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 121-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="sun-close-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-sun-close--sunday-closing-remarks--main.webm" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 2:00:43 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-close--sunday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-close--sunday-closing-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-close--sunday-closing-remarks--main.opus">Download --main.opus (71MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-close--sunday-closing-remarks--main.webm">Download --main.webm (279MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-close--sunday-closing-remarks--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-close--sunday-closing-remarks--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/p/nMXCCJ25wxKUtbuQiwkakA">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/sun-close-nav.md b/2023/info/sun-close-nav.md
new file mode 100644
index 00000000..92d58f1d
--- /dev/null
+++ b/2023/info/sun-close-nav.md
@@ -0,0 +1,6 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/sun-open">Sunday opening remarks</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/sun-open-after.md b/2023/info/sun-open-after.md
new file mode 100644
index 00000000..66d2e6fb
--- /dev/null
+++ b/2023/info/sun-open-after.md
@@ -0,0 +1,129 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="sun-open-mainVideo-transcript"></a>
+# Transcript
+
+[[!template text="""Welcome to the second day of EmacsConf 2023.""" start="00:00:00.000" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""There's a General track and a Development track,""" start="00:00:04.520" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""but really, you'll probably find""" start="00:00:06.859" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""interesting things on both tracks""" start="00:00:08.438" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""no matter what your level of experience is,""" start="00:00:10.157" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so don't feel limited to one or the other.""" start="00:00:12.696" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Please note that the hyperdrive talk""" start="00:00:15.355" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""(titled &quot;hyperdrive.el: Peer-to-peer filesystem in Emacs&quot;)""" start="00:00:17.094" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""on the Development track in the afternoon""" start="00:00:21.173" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""is actually a general-audience talk,""" start="00:00:23.492" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""I just didn't have space elsewhere in the schedule.""" start="00:00:25.232" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The best parts of EmacsConf are the conversations.""" start="00:00:28.092" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The wiki has a page on how to watch and participate,""" start="00:00:31.331" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and I'll give you a quick overview as well.""" start="00:00:34.090" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can watch both streams at live.emacsconf.org""" start="00:00:36.869" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""using free and open source software.""" start="00:00:40.348" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Using a streaming media player like mpv""" start="00:00:43.227" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""seems to be the best way to watch in terms of performance""" start="00:00:45.646" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""but there are also web-based players""" start="00:00:49.045" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""just in case that's all you've got.""" start="00:00:50.644" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The schedule shows the General track on top""" start="00:00:53.123" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and the Development track on the bottom,""" start="00:00:55.122" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so you can see what else is going on.""" start="00:00:56.801" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""As you're watching the talks,""" start="00:00:59.420" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""you can refer to the schedule in another window.""" start="00:01:00.619" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Hover over the boxes to see the times and titles,""" start="00:01:03.518" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and click on the boxes in the schedule""" start="00:01:06.537" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""to jump to the talk's page for more details.""" start="00:01:08.436" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can also get the schedule as an iCalendar file""" start="00:01:11.215" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""or as an Org file in different time zones.""" start="00:01:13.754" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Many talks will be followed by""" start="00:01:16.013" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""live Q&A web conferences with the speaker,""" start="00:01:17.512" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""which will be done in BigBlueButton or BBB.""" start="00:01:20.171" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""These are indicated with a solid border on the schedule""" start="00:01:23.250" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and by Q&A: BBB on the schedule page.""" start="00:01:26.249" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can join the web conference room""" start="00:01:29.408" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""by clicking on the BBB link""" start="00:01:31.107" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""on the schedule page or the talk's webpage.""" start="00:01:32.726" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Then you can ask your questions yourself when the Q&A starts.""" start="00:01:35.665" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""To improve performance, please keep your webcam off""" start="00:01:38.584" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and stay muted until it's your turn to talk.""" start="00:01:41.043" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""This year we're experimenting with automatically switching""" start="00:01:43.782" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""between talks and Q&A sessions,""" start="00:01:46.401" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so the transitions on the stream might be a little sudden,""" start="00:01:48.760" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""but people in the BigBlueButton room""" start="00:01:51.959" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""can continue the conversation""" start="00:01:53.718" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""even after the talk moves off-stream.""" start="00:01:55.397" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Other talks will have Q&A via Etherpad or IRC,""" start="00:01:58.236" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""depending on what the speakers prefer.""" start="00:02:01.595" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""This is indicated in the schedule with a dashed border""" start="00:02:03.914" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and on the schedule page as well.""" start="00:02:06.933" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Please ask your questions in the recommended places""" start="00:02:09.652" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so that the speakers can easily see them.""" start="00:02:12.091" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Some talks will have the Q&A after the event,""" start="00:02:14.610" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so you can add your questions to their Etherpad.""" start="00:02:17.329" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""We'll e-mail the speakers afterwards""" start="00:02:20.188" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and update the talk pages when they answer.""" start="00:02:21.920" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The schedule pages and track pages have quick shortcuts""" start="00:02:25.186" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so that you can find out more about talks, open the Etherpads,""" start="00:02:28.325" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and join the Q&A sessions. The watch page has more tips""" start="00:02:31.804" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""on how to make the most of Q&A.""" start="00:02:35.363" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you can, please add notes and ask questions""" start="00:02:38.062" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""in the Etherpad for the talk. That makes it easier""" start="00:02:40.841" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""for everyone to share their notes,""" start="00:02:43.840" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and speakers and hosts can read the questions from there.""" start="00:02:45.659" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""We'll copy the notes to the talk pages afterwards.""" start="00:02:48.598" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""We have one pad for each talk,""" start="00:02:52.617" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so you can follow the links to get to the next one""" start="00:02:54.676" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""or go back to the schedule and get the link from there.""" start="00:02:56.795" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you have general feedback about""" start="00:02:59.954" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""the conference itself, please put it in""" start="00:03:01.593" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""pad.emacsconf.org/2023 , which is linked on each pad.""" start="00:03:03.752" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can also use this as a general community message board""" start="00:03:09.211" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""for things like Help Wanted.""" start="00:03:11.870" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Internet Relay Chat or IRC can be another great way""" start="00:03:15.009" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""to be part of lots of conversations.""" start="00:03:18.260" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can use chat.emacsconf.org to join the IRC channels""" start="00:03:20.787" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""through your web browser. The tabs on the left can help you""" start="00:03:24.506" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""switch between the different channels.""" start="00:03:27.345" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""There's #emacsconf-gen for the General track""" start="00:03:29.904" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and #emacsconf-dev for the Development track.""" start="00:03:32.960" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you need to reach us, you can join #emacsconf-org""" start="00:03:36.522" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""or e-mail emacsconf-org-private@gnu.org.""" start="00:03:40.241" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can use #emacsconf for hallway conversations.""" start="00:03:45.220" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Of course, you can join any of these channels""" start="00:03:48.499" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""with your favourite IRC client.""" start="00:03:50.618" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""We're on the libera.chat network.""" start="00:03:52.760" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Once again, we're going to be streaming with open captions""" start="00:03:56.736" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""for most of the talks this year, thanks to our speakers and""" start="00:03:59.375" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""captioning volunteers. The captioned talks are indicated""" start="00:04:02.454" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""on the schedule, and with any luck, we'll be posting""" start="00:04:05.813" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""transcripts on talk pages shortly after the talks start.""" start="00:04:08.532" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you need additional accommodations,""" start="00:04:12.031" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""please let us know in #emacsconf-org""" start="00:04:13.850" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and we'll see if we can make things happen.""" start="00:04:16.610" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If something goes down, we'll update status.emacsconf.org.""" start="00:04:18.509" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If it doesn't look like we've noticed yet,""" start="00:04:22.748" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""please let us know in the #emacsconf-org IRC channel,""" start="00:04:24.607" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""where we will be quietly panicking.""" start="00:04:28.046" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""In all of these conversations, please keep in mind""" start="00:04:30.205" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""our guidelines for conduct. You can find them on the wiki,""" start="00:04:32.904" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""They basically boil down to: please be nice.""" start="00:04:35.903" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If all goes well, the prerecorded talks and transcripts""" start="00:04:39.383" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""should be available from the talk pages""" start="00:04:41.822" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""shortly after they start playing,""" start="00:04:43.821" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and we'll post the recordings of live talks""" start="00:04:45.560" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and Q&A sessions within the next month or so.""" start="00:04:47.459" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you'd like to get an update, you can subscribe to""" start="00:04:50.578" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""the emacsconf-discuss mailing list.""" start="00:04:53.097" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""All right, let's get going.""" start="00:04:56.396" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Leo Vivier is hosting the general track,""" start="00:04:57.955" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and Amin Bandali hosting the development track.""" start="00:05:00.355" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The other volunteers and I will run around mostly backstage,""" start="00:05:03.474" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and you'll probably meet us in the closing remarks.""" start="00:05:06.193" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""That's also where we get to thank""" start="00:05:08.272" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""all the people and organizations""" start="00:05:09.911" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""who make EmacsConf even possible.""" start="00:05:11.550" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Thanks for coming to EmacsConf 2023.""" start="00:05:14.589" video="mainVideo-sun-open" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20sun-open%3A%20Sunday%20opening%20remarks)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/sun-open-before.md b/2023/info/sun-open-before.md
new file mode 100644
index 00000000..4c6c13d5
--- /dev/null
+++ b/2023/info/sun-open-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 6-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
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="sun-open-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-sun-open--sunday-opening-remarks--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 05:17 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--main.webm">Download --main.webm (12MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-sun-open--sunday-opening-remarks--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/9zjMPEZz1nYokiY7rk4wYv">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/sun-open-nav.md b/2023/info/sun-open-nav.md
new file mode 100644
index 00000000..f84ed342
--- /dev/null
+++ b/2023/info/sun-open-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/sat-close">Saturday closing remarks</a>
+Next by track: <a href="/2023/talks/sun-close">Sunday closing remarks</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/table-after.md b/2023/info/table-after.md
new file mode 100644
index 00000000..a0027610
--- /dev/null
+++ b/2023/info/table-after.md
@@ -0,0 +1,252 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="table-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:01.360" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Welcome everybody. My name is Daniel Molina""" start="00:00:01.360" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and I'm going to give this talk""" start="00:00:03.080" video="mainVideo-table" id="subtitle"]]
+[[!template text="""&quot;Who needs Excel? Managing your students' qualifications""" start="00:00:05.061" video="mainVideo-table" id="subtitle"]]
+[[!template text="""with Org-table&quot;.""" start="00:00:08.064" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm a professor. I work every day.""" start="00:00:08.960" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I have to qualify my students.""" start="00:00:10.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""While most would consider normal in this situation,""" start="00:00:12.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""would be to use Excel or LibreOffice""" start="00:00:15.080" video="mainVideo-table" id="subtitle"]]
+[[!template text="""for doing that.""" start="00:00:17.720" video="mainVideo-table" id="subtitle"]]
+[[!template text="""However, I think that approaching it from Emacs""" start="00:00:18.600" video="mainVideo-table" id="subtitle"]]
+[[!template text="""has several interesting advantages.""" start="00:00:21.180" video="mainVideo-table" id="subtitle"]]
+[[!template text="""First, I would like to write the qualification""" start="00:00:24.480" video="mainVideo-table" id="subtitle"]]
+[[!template text="""next to the justification, next to the student error,""" start="00:00:27.660" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and in the Excel format, it's not comfortable to do that.""" start="00:00:33.600" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Actually, I always prefer to write in Emacs""" start="00:00:36.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""for many reasons, as many of you.""" start="00:00:38.840" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Also, I love text format because I can compare versions""" start="00:00:42.720" video="mainVideo-table" id="subtitle"]]
+[[!template text="""using a control version system like Git and easily change.""" start="00:00:46.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""This is very useful for the revision period""" start="00:00:50.280" video="mainVideo-table" id="subtitle"]]
+[[!template text="""in which a student visits me""" start="00:00:52.760" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and maybe I can change the qualification for any reason.""" start="00:00:55.480" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I also can export the results directly to PDF""" start="00:01:01.040" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to publish them in my online campus for the student.""" start="00:01:03.440" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I have many tools for doing that.""" start="00:01:08.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I already knew about Org-table formula.""" start="00:01:11.360" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I thought it was very cool and useful""" start="00:01:13.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to use Emacs for that,""" start="00:01:15.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and I have actually found a package `orgtbl-aggregate`""" start="00:01:16.160" video="mainVideo-table" id="subtitle"]]
+[[!template text="""that seemed adequate for doing that.""" start="00:01:19.240" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Unfortunately, I didn't see a lot of information""" start="00:01:22.860" video="mainVideo-table" id="subtitle"]]
+[[!template text="""about how to do that in a painless way.""" start="00:01:26.320" video="mainVideo-table" id="subtitle"]]
+[[!template text="""So, I have to learn, training and testing,""" start="00:01:29.160" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and then prepare these tools to solve that problem""" start="00:01:31.760" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and to help other teachers.""" start="00:01:35.000" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Anyway, it could be used not only for teaching""" start="00:01:36.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""but for more contexts.""" start="00:01:39.960" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""Demonstration""" start="00:01:41.960" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Well, let's start.""" start="00:01:41.960" video="mainVideo-table" id="subtitle"]]
+[[!template text="""First, I have two sections,""" start="00:01:44.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the comments and the section of the table, or results.""" start="00:01:46.460" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I have... The comment for each student""" start="00:01:53.400" video="mainVideo-table" id="subtitle"]]
+[[!template text="""is in a different headline.""" start="00:01:56.480" video="mainVideo-table" id="subtitle"]]
+[[!template text="""It's very useful to check with a note.""" start="00:01:57.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I can go directly using your helm or ivy""" start="00:02:05.440" video="mainVideo-table" id="subtitle"]]
+[[!template text="""or consult to go directly to the section.""" start="00:02:10.160" video="mainVideo-table" id="subtitle"]]
+[[!template text="""So it's very nice.""" start="00:02:13.000" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Then I put the comment, right, completely wrong,""" start="00:02:14.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""it answers other questions.""" start="00:02:22.880" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I put other comments here that I could send to the student,""" start="00:02:30.600" video="mainVideo-table" id="subtitle"]]
+[[!template text="""you can imagine, and then""" start="00:02:35.840" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I can put the qualification, the score for each student.""" start="00:02:37.481" video="mainVideo-table" id="subtitle"]]
+[[!template text="""The thing with that is, initially,""" start="00:02:40.160" video="mainVideo-table" id="subtitle"]]
+[[!template text="""when I started doing that, I put, I don't know,""" start="00:02:43.160" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the exception and a qualification with that.""" start="00:02:46.220" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Okay, that's one point, this a three,""" start="00:02:50.720" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and use a column total with something like that.""" start="00:02:55.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Okay, that's nice.""" start="00:03:06.680" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""Range""" start="00:03:08.320" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""But then, when I started getting more and more parts,""" start="00:03:08.320" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I considered it more useful to use,""" start="00:03:11.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to put for each part,""" start="00:03:17.082" video="mainVideo-table" id="subtitle"]]
+[[!template text="""which is the maximum qualification,""" start="00:03:20.700" video="mainVideo-table" id="subtitle"]]
+[[!template text="""on the range of the qualification.""" start="00:03:20.300" video="mainVideo-table" id="subtitle"]]
+[[!template text="""In that case, I'm going to put,""" start="00:03:22.920" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the first one is two scores, the second three points,""" start="00:03:25.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the third one is one point, and the last one, four points.""" start="00:03:28.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""And instead of putting that in that way,""" start="00:03:35.000" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I like to put one is completely right,""" start="00:03:37.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""zero is completely wrong, or maybe some intermediate values for that.""" start="00:03:41.028" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Of course, I have to change the qualification,""" start="00:03:47.320" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the formula, so it's very simple.""" start="00:03:51.000" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I only have to put,""" start="00:03:54.440" video="mainVideo-table" id="subtitle"]]
+[[!template text="""multiply the values of the second line with that.""" start="00:03:56.480" video="mainVideo-table" id="subtitle"]]
+[[!template text="""So, it's very useful for doing that.""" start="00:04:08.300" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""More qualifications""" start="00:04:11.900" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Okay, that's the first part, so I can put the comment,""" start="00:04:11.900" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I can go to the section, I can create...""" start="00:04:16.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put more qualifications.""" start="00:04:19.960" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Now I'm going to put the table.""" start="00:04:24.920" video="mainVideo-table" id="subtitle"]]
+[[!template text="""First I'm going to change, rename the column name,""" start="00:04:27.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""because it's easier when there is only one word.""" start="00:04:30.460" video="mainVideo-table" id="subtitle"]]
+[[!template text="""And it's very simple to use. You only have to put""" start="00:04:39.040" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the name, aggregate, the name of the table,""" start="00:04:47.160" video="mainVideo-table" id="subtitle"]]
+[[!template text="""in that case group A,""" start="00:04:51.440" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and in another string, the columns.""" start="00:04:54.660" video="mainVideo-table" id="subtitle"]]
+[[!template text="""For instance, name, surname, total.""" start="00:04:57.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""And you can see that you can get a lesson list""" start="00:05:03.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""with all the students,""" start="00:05:07.440" video="mainVideo-table" id="subtitle"]]
+[[!template text="""but only with the final score to publish them.""" start="00:05:09.120" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Okay?""" start="00:05:16.760" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Even you can update the name of the column,""" start="00:05:17.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""not in the original table,""" start="00:05:20.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""but in the lesson table using that format.""" start="00:05:21.801" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Okay?""" start="00:05:29.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""That is a good option.""" start="00:05:32.100" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""Subsets""" start="00:05:34.240" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Now we are going to see how can we use that""" start="00:05:34.240" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to make a subset of the students.""" start="00:05:38.500" video="mainVideo-table" id="subtitle"]]
+[[!template text="""For instance, imagine, this is me,""" start="00:05:44.360" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put the bad, I change, now I can update,""" start="00:05:47.840" video="mainVideo-table" id="subtitle"]]
+[[!template text="""you can see this, but also I'm going to put a list""" start="00:05:54.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""with the students that have failed the exam.""" start="00:06:02.760" video="mainVideo-table" id="subtitle"]]
+[[!template text="""It's simple, because this package has the option `:cond`.""" start="00:06:10.961" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put first to see it better,""" start="00:06:21.260" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put a condition""" start="00:06:26.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""in which we aggregate less than a half, 5,""" start="00:06:28.600" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and I have to use a `string-to-number` total.""" start="00:06:37.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""In that way, I can see that this is the student""" start="00:06:44.180" video="mainVideo-table" id="subtitle"]]
+[[!template text="""that has failed the exam,""" start="00:06:47.260" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I could use that to make another table,""" start="00:06:48.840" video="mainVideo-table" id="subtitle"]]
+[[!template text="""this is the people that passed the exam.""" start="00:06:54.080" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""Sorting""" start="00:07:08.300" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Another interesting feature is that""" start="00:07:08.300" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I can... the lesson table can be sorted automatically.""" start="00:07:10.981" video="mainVideo-table" id="subtitle"]]
+[[!template text="""It's simple. You only have to put this symbol (`^`),""" start="00:07:15.621" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and you can put next to the column you want""" start="00:07:20.101" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to use for the sort, and then you can put""" start="00:07:23.361" video="mainVideo-table" id="subtitle"]]
+[[!template text="""`a` if you want to sort alphabetically,""" start="00:07:27.000" video="mainVideo-table" id="subtitle"]]
+[[!template text="""in uppercase if you want to reverse the sort,""" start="00:07:30.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and `n` if you want to sort numerically.""" start="00:07:33.880" video="mainVideo-table" id="subtitle"]]
+[[!template text="""For instance, I can put that""" start="00:07:38.920" video="mainVideo-table" id="subtitle"]]
+[[!template text="""from the lesser score to the best score,""" start="00:07:40.760" video="mainVideo-table" id="subtitle"]]
+[[!template text="""or here from the best score to the lesser score.""" start="00:07:43.960" video="mainVideo-table" id="subtitle"]]
+[[!template text="""And this sort is completely independent""" start="00:07:46.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to the sort of the original table.""" start="00:07:48.961" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""New table""" start="00:07:51.641" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Now I'm going to do another different thing,""" start="00:07:51.641" video="mainVideo-table" id="subtitle"]]
+[[!template text="""we are going to put a new table,""" start="00:07:54.521" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put a new table""" start="00:08:02.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""in which I'm going to put""" start="00:08:07.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the number of passed students, failed students""" start="00:08:09.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and the ratio of students. It's simple.""" start="00:08:14.320" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put the pass, in that case, as column,""" start="00:08:16.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I can put the count, of course, I can put the count,""" start="00:08:26.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the number of students""" start="00:08:32.920" video="mainVideo-table" id="subtitle"]]
+[[!template text="""that have passed, so I'm going to put in that way, ok?""" start="00:08:35.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put pass, count, failed, ratio.""" start="00:08:42.080" video="mainVideo-table" id="subtitle"]]
+[[!template text="""You can see, ok?""" start="00:08:58.480" video="mainVideo-table" id="subtitle"]]
+[[!template text="""But this only the count,""" start="00:08:59.740" video="mainVideo-table" id="subtitle"]]
+[[!template text="""you are going to put the number wrong.""" start="00:09:01.860" video="mainVideo-table" id="subtitle"]]
+[[!template text="""So, it's true, but you can actually put formula here.""" start="00:09:04.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""For instance, you can say,""" start="00:09:08.360" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I know that I have 3 students,""" start="00:09:10.080" video="mainVideo-table" id="subtitle"]]
+[[!template text="""so the number of failed is 3 minus the passed student.""" start="00:09:12.400" video="mainVideo-table" id="subtitle"]]
+[[!template text="""And also, I can put the formula, is the people,""" start="00:09:18.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the students that passed,""" start="00:09:24.960" video="mainVideo-table" id="subtitle"]]
+[[!template text="""divide into the number total of students, ok?""" start="00:09:27.720" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Let's go to put that in that way,""" start="00:09:36.080" video="mainVideo-table" id="subtitle"]]
+[[!template text="""is the people that passed, it is better in that way,""" start="00:09:41.380" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and also I can put directly the number of,""" start="00:09:44.400" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the ratio of students.""" start="00:09:48.360" video="mainVideo-table" id="subtitle"]]
+[[!template text="""So, in that way, I can have a table""" start="00:09:50.920" video="mainVideo-table" id="subtitle"]]
+[[!template text="""with the students that passed,""" start="00:09:55.740" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the students that failed""" start="00:09:57.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and the ratio of people that passed.""" start="00:09:58.560" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""Statistics""" start="00:10:01.280" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Sometimes this type of qualification will be useful for me,""" start="00:10:01.280" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to see how much has been the sound,""" start="00:10:04.820" video="mainVideo-table" id="subtitle"]]
+[[!template text="""how much good has been the exercise.""" start="00:10:08.080" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Now, I'm going to put a new table.""" start="00:10:12.240" video="mainVideo-table" id="subtitle"]]
+[[!template text="""This new table is going to go some statistics,""" start="00:10:14.880" video="mainVideo-table" id="subtitle"]]
+[[!template text="""`statistics_score`, `begin: aggregate :table &quot;final&quot;`.""" start="00:10:22.422" video="mainVideo-table" id="subtitle"]]
+[[!template text="""In this case, I'm going to use not the original table,""" start="00:10:32.380" video="mainVideo-table" id="subtitle"]]
+[[!template text="""but a final, I'm going to put `final_group`,""" start="00:10:43.920" video="mainVideo-table" id="subtitle"]]
+[[!template text="""`final_p1`, `final_p2`, ok?""" start="00:10:54.020" video="mainVideo-table" id="subtitle"]]
+[[!template text="""And as `:cols`, I'm going to put directly""" start="00:11:01.400" video="mainVideo-table" id="subtitle"]]
+[[!template text="""how many results I have, I put number,""" start="00:11:06.120" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put also the mean.""" start="00:11:13.580" video="mainVideo-table" id="subtitle"]]
+[[!template text="""You can see that mean total is not working""" start="00:11:19.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""because I'm using this table and I renamed,""" start="00:11:21.401" video="mainVideo-table" id="subtitle"]]
+[[!template text="""the column name was renamed,""" start="00:11:24.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""so it's `mean(Score)`, mean,""" start="00:11:26.080" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and then the score. You can obtain `stdiv` -- `sdev`,""" start="00:11:36.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""sorry, there was an error about that,""" start="00:12:05.920" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and two decimal,""" start="00:12:08.960" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and that is another interesting score.""" start="00:12:12.640" video="mainVideo-table" id="subtitle"]]
+
+[[!template new="1" text="""Combining""" start="00:12:17.800" video="mainVideo-table" id="subtitle"]]
+
+[[!template text="""Now, I'm going to finish showing how we can use.""" start="00:12:17.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""To finish it, we are going to see""" start="00:12:23.240" video="mainVideo-table" id="subtitle"]]
+[[!template text="""how we can combine several tables""" start="00:12:25.840" video="mainVideo-table" id="subtitle"]]
+[[!template text="""or even an aggregated table in a new table.""" start="00:12:28.300" video="mainVideo-table" id="subtitle"]]
+[[!template text="""For instance, you can have a table for the practice 1,""" start="00:12:32.480" video="mainVideo-table" id="subtitle"]]
+[[!template text="""you can have a table for the practice 2,""" start="00:12:36.260" video="mainVideo-table" id="subtitle"]]
+[[!template text="""so I'm going to do that.""" start="00:12:38.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to move this table. You can copy or remove,""" start="00:12:40.360" video="mainVideo-table" id="subtitle"]]
+[[!template text="""doesn't matter the order,""" start="00:12:48.181" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put this to identify the result of practice 2,""" start="00:12:49.760" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Org create an ID (`org-id-get-create`),""" start="00:12:59.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""then we have a previous result,""" start="00:13:03.322" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and I have a final table.""" start="00:13:07.480" video="mainVideo-table" id="subtitle"]]
+[[!template text="""The final table could be complicated,""" start="00:13:10.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""but it's not so much complicated, it's only that,""" start="00:13:11.840" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put something that the formula wants.""" start="00:13:17.440" video="mainVideo-table" id="subtitle"]]
+[[!template text="""The formula is to make""" start="00:13:21.960" video="mainVideo-table" id="subtitle"]]
+[[!template text="""an `org-lookup-first` of the second name,""" start="00:13:26.589" video="mainVideo-table" id="subtitle"]]
+[[!template text="""considering that it's unique,""" start="00:13:34.401" video="mainVideo-table" id="subtitle"]]
+[[!template text="""`remote` of the surname,""" start="00:13:41.541" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and let's say another `remote` of the `$3` element,""" start="00:13:53.440" video="mainVideo-table" id="subtitle"]]
+[[!template text="""ok, that's an error because I don't put yet the ID,""" start="00:14:05.560" video="mainVideo-table" id="subtitle"]]
+[[!template text="""so I'm going to copy -- mark and copy --""" start="00:14:15.120" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and paste the unique ID generated,""" start="00:14:19.760" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I'm going to put that... I think there is missing one.""" start="00:14:28.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Finally. Okay, that's right.""" start="00:14:38.520" video="mainVideo-table" id="subtitle"]]
+[[!template text="""So imagine that I change something here, for instance,""" start="00:14:43.400" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I put... I change that,""" start="00:14:49.580" video="mainVideo-table" id="subtitle"]]
+[[!template text="""actually, this is changed also, and this is changed.""" start="00:14:56.701" video="mainVideo-table" id="subtitle"]]
+[[!template text="""This is a good way to divide the classification""" start="00:15:02.200" video="mainVideo-table" id="subtitle"]]
+[[!template text="""in several files, one for the practice 1,""" start="00:15:08.600" video="mainVideo-table" id="subtitle"]]
+[[!template text="""one for the practice 2, and one final practice""" start="00:15:10.201" video="mainVideo-table" id="subtitle"]]
+[[!template text="""that I can finally export in a final table.""" start="00:15:15.040" video="mainVideo-table" id="subtitle"]]
+[[!template text="""Of course you can make it a lot more pretty,""" start="00:15:27.640" video="mainVideo-table" id="subtitle"]]
+[[!template text="""but this is all I want to show you.""" start="00:15:31.120" video="mainVideo-table" id="subtitle"]]
+[[!template text="""I hope with this talk""" start="00:15:33.360" video="mainVideo-table" id="subtitle"]]
+[[!template text="""you have learned a lot more about Org formula,""" start="00:15:34.800" video="mainVideo-table" id="subtitle"]]
+[[!template text="""[orgtbl-aggregate] package,""" start="00:15:37.680" video="mainVideo-table" id="subtitle"]]
+[[!template text="""and how you can use all this techniques""" start="00:15:39.689" video="mainVideo-table" id="subtitle"]]
+[[!template text="""to improve your qualification of a student,""" start="00:15:42.280" video="mainVideo-table" id="subtitle"]]
+[[!template text="""or for whatever you want.""" start="00:15:45.600" video="mainVideo-table" id="subtitle"]]
+
+
+
+Captioner: danielmolina
+
+Questions or comments? Please e-mail [dmolina@mailbox.org](mailto:dmolina@mailbox.org?subject=Comment%20for%20EmacsConf%202023%20table%3A%20Who%20needs%20Excel%3F%20Managing%20your%20students%20qualifications%20with%20org-table)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/table-before.md b/2023/info/table-before.md
new file mode 100644
index 00000000..9e58529f
--- /dev/null
+++ b/2023/info/table-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 16-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
+Status: All done
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="table-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 15:51 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--alternative.mp4">Download --alternative.mp4 (126MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--alternative.webm">Download --alternative.webm (45MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.webm">Download --main.webm (45MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/p8K8mtayv2HYtw1gK3zUwR">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/table-nav.md b/2023/info/table-nav.md
new file mode 100644
index 00000000..625ecd74
--- /dev/null
+++ b/2023/info/table-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/teaching">Teaching computer and data science with literate programming tools</a>
+Next by track: <a href="/2023/talks/one">one.el: the static site generator for Emacs Lisp Programmers</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/taming-after.md b/2023/info/taming-after.md
new file mode 100644
index 00000000..619aed5c
--- /dev/null
+++ b/2023/info/taming-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [emacsconf@gergo.csillger.hu](mailto:emacsconf@gergo.csillger.hu?subject=Comment%20for%20EmacsConf%202022%20taming%3A%20Taming%20things%20with%20Org%20Mode)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/taming-before.md b/2023/info/taming-before.md
new file mode 100644
index 00000000..364f0fdc
--- /dev/null
+++ b/2023/info/taming-before.md
@@ -0,0 +1,18 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+
+The following image shows where the talk is in the schedule for Sat 2023-12-02. 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="taming">
+<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2023/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:10 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(13,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2023/talks/adventure" title="An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp" data-slug="adventure"> <title> 9:10- 9:20 An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</title> <rect x="15" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(28,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> adventure</text></g></a> <a href="/2023/talks/uni" title="Authoring and presenting university courses with Emacs and a full libre software stack" data-slug="uni"> <title> 9:30- 9:50 Authoring and presenting university courses with Emacs and a full libre software stack</title> <rect x="47" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(76,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> uni</text></g></a> <a href="/2023/talks/teaching" title="Teaching computer and data science with literate programming tools" data-slug="teaching"> <title> 10:05-10:25 Teaching computer and data science with literate programming tools</title> <rect x="101" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(130,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> teaching</text></g></a> <a href="/2023/talks/table" title="Who needs Excel? Managing your students qualifications with org-table" data-slug="table"> <title> 10:40-10:50 Who needs Excel? Managing your students qualifications with org-table</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> table</text></g></a> <a href="/2023/talks/taming" title="Taming things with Org Mode" data-slug="taming"> <title> 11:05-11:15 Taming things with Org Mode</title> <rect stroke-width="3" x="196" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(209,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> taming</text></g></a> <a href="/2023/talks/one" title="one.el: the static site generator for Emacs Lisp Programmers" data-slug="one"> <title> 11:30-11:50 one.el: the static site generator for Emacs Lisp Programmers</title> <rect x="235" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(264,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> one</text></g></a> <a href="/2023/talks/writing" title="Emacs turbo-charges my writing" data-slug="writing"> <title> 1:00- 1:10 Emacs turbo-charges my writing</title> <rect x="376" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(389,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> writing</text></g></a> <a href="/2023/talks/nabokov" title="Why Nabokov would use Org-Mode if he were writing today" data-slug="nabokov"> <title> 1:25- 1:35 Why Nabokov would use Org-Mode if he were writing today</title> <rect x="415" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(428,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> nabokov</text></g></a> <a href="/2023/talks/collab" title="Collaborative data processing and documenting using org-babel" data-slug="collab"> <title> 1:50- 2:10 Collaborative data processing and documenting using org-babel</title> <rect x="454" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(483,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> collab</text></g></a> <a href="/2023/talks/solo" title="How I play TTRPGs in Emacs" data-slug="solo"> <title> 2:20- 2:40 How I play TTRPGs in Emacs</title> <rect x="501" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(530,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> solo</text></g></a> <a href="/2023/talks/ref" title="Org-Mode workflow: informal reference tracking" data-slug="ref"> <title> 2:55- 3:15 Org-Mode workflow: informal reference tracking</title> <rect x="556" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(585,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> ref</text></g></a> <a href="/2023/talks/unentangling" title="(Un)entangling projects and repos" data-slug="unentangling"> <title> 3:25- 3:35 (Un)entangling projects and repos</title> <rect x="603" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(616,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> unentangling</text></g></a> <a href="/2023/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 3:45- 3:55 Emacs development updates</title> <rect x="635" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(648,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2023/talks/core" title="Emacs core development: how it works" data-slug="core"> <title> 4:10- 4:50 Emacs core development: how it works</title> <rect x="674" y="15" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(734,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> core</text></g></a> <a href="/2023/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 5:05- 5:15 Saturday closing remarks</title> <rect x="760" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(773,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2023/talks/matplotllm" title="MatplotLLM, iterative natural language data visualization in org-babel" data-slug="matplotllm"> <title> 10:00-10:10 MatplotLLM, iterative natural language data visualization in org-babel</title> <rect x="94" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(107,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> matplotllm</text></g></a> <a href="/2023/talks/voice" title="Enhancing productivity with voice computing" data-slug="voice"> <title> 10:20-10:40 Enhancing productivity with voice computing</title> <rect x="125" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(154,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> voice</text></g></a> <a href="/2023/talks/llm" title="LLM clients in Emacs, functionality and standardization" data-slug="llm"> <title> 10:55-11:15 LLM clients in Emacs, functionality and standardization</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> llm</text></g></a> <a href="/2023/talks/overlay" title="Improving compiler diagnostics with overlays" data-slug="overlay"> <title> 1:00- 1:20 Improving compiler diagnostics with overlays</title> <rect x="376" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(405,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> overlay</text></g></a> <a href="/2023/talks/eval" title="Editor Integrated REPL Driven Development for all languages" data-slug="eval"> <title> 1:35- 1:45 Editor Integrated REPL Driven Development for all languages</title> <rect x="431" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(444,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eval</text></g></a> <a href="/2023/talks/repl" title="REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ" data-slug="repl"> <title> 2:00- 2:40 REPLs in strange places: Lua, LaTeX, LPeg, LPegRex, TikZ</title> <rect x="470" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> repl</text></g></a> <a href="/2023/talks/doc" title="Literate Documentation with Emacs and Org Mode" data-slug="doc"> <title> 2:50- 3:30 Literate Documentation with Emacs and Org Mode</title> <rect x="549" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(609,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> doc</text></g></a> <a href="/2023/talks/emacsconf" title="EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference" data-slug="emacsconf"> <title> 3:45- 4:05 EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</title> <rect x="635" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(664,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> emacsconf</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(94,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(188,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(282,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(376,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(470,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(564,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(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"> 4 PM</text></g> <g transform="translate(752,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: 10-min talk; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2023/current/bbb-taming.html>
+Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
+Status: Sorry, this talk has been cancelled
+
+
+
+
+
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/taming-nav.md b/2023/info/taming-nav.md
new file mode 100644
index 00000000..4fa4474d
--- /dev/null
+++ b/2023/info/taming-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by time: <a href="/2023/talks/llm">LLM clients in Emacs, functionality and standardization</a>
+Next by time: <a href="/2023/talks/one">one.el: the static site generator for Emacs Lisp Programmers</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/teaching-after.md b/2023/info/teaching-after.md
new file mode 100644
index 00000000..6846d4d7
--- /dev/null
+++ b/2023/info/teaching-after.md
@@ -0,0 +1,1340 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="teaching-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""Welcome to my talk, which is pre-recorded,""" start="00:00:00.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""so please don't blame me if I come across""" start="00:00:04.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""as wooden and humorless.""" start="00:00:06.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""It's hard to work up any emotion""" start="00:00:08.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""when looking at a mechanical eye.""" start="00:00:11.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Of course, I am German,""" start="00:00:13.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""so I am pretty wooden and humorless to begin with.""" start="00:00:15.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""What else do you need to know about me?""" start="00:00:18.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Not much, I suppose, except that I have been""" start="00:00:20.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""an Emacs user on and off""" start="00:00:23.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""since my days as a graduate student""" start="00:00:25.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in theoretical physics in the 1990s.""" start="00:00:26.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I picked Emacs and Org Mode up again""" start="00:00:30.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for teaching during COVID""" start="00:00:34.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""when I had a lot of time on my hands,""" start="00:00:36.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and when the teaching and learning needs shifted""" start="00:00:38.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""because of the exclusive online teaching.""" start="00:00:40.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Now I'm going to take my picture away.""" start="00:00:44.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""You had a good look at me.""" start="00:00:48.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I think that's just going to be in the way.""" start="00:00:49.560" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""My interest in this topic""" start="00:00:54.160" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""So my interest in this topic began with""" start="00:00:54.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""an Emacs talk given by Daniel German""" start="00:00:57.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from the University of Victoria in Canada in 2021.""" start="00:00:59.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Daniel demonstrated in detail""" start="00:01:04.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""how he uses Emacs and Org Mode""" start="00:01:06.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to prepare and deliver lectures""" start="00:01:09.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""on different programming languages.""" start="00:01:12.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""This gave me the idea to try the same thing""" start="00:01:14.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""with my students with an important alteration.""" start="00:01:16.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I wanted to force them to use Emacs and Org Mode""" start="00:01:20.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""just as most computer science instructors""" start="00:01:23.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""force their students to use whatever they are using""" start="00:01:25.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""when they develop their material.""" start="00:01:29.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I carried my plan out and mandated Emacs and Org Mode""" start="00:01:32.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""as the only programming platform and IDE""" start="00:01:36.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for three consecutive terms in all my courses,""" start="00:01:40.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""nine courses in total.""" start="00:01:43.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I will give more details later.""" start="00:01:45.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I published my results as a case study""" start="00:01:47.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in September of this year,""" start="00:01:49.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and it contains the missing bits""" start="00:01:52.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that I will not talk about today for lack of time,""" start="00:01:53.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""especially regarding the methodology,""" start="00:01:56.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""the assessment, et cetera.""" start="00:01:58.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Please also use the Q&A to inquire about such details""" start="00:02:00.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""if they interest you.""" start="00:02:05.000" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""What is data science?""" start="00:02:08.040" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""I probably don't have to explain what computer science is,""" start="00:02:08.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""but not everyone may know what data science does.""" start="00:02:12.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I teach courses in both disciplines""" start="00:02:16.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and the boundaries between them are blurred,""" start="00:02:18.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""so much of what I'm saying about data science""" start="00:02:20.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""will also be relevant for computer science.""" start="00:02:22.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Conceptually, data science is an interdisciplinary affair""" start="00:02:24.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that intersects with computer science""" start="00:02:29.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and with whatever it is that the data scientist""" start="00:02:32.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""or his or her clients know very well; their domain.""" start="00:02:34.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Because of this interdisciplinary character,""" start="00:02:39.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and because their focus is on the data""" start="00:02:42.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""rather than only on algorithms or mathematics,""" start="00:02:45.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""successful data scientists need to be more broadly educated""" start="00:02:48.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""than specialists in computer science or statistics.""" start="00:02:52.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In particular, there's a need to master""" start="00:02:56.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""the entire so-called data science pipeline:""" start="00:03:00.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from data cleaning, which you see""" start="00:03:03.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""on the very left in this slide,""" start="00:03:06.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""over coding, to statistical modeling,""" start="00:03:08.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and to data storytelling through visualization,""" start="00:03:12.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which you see on the very right.""" start="00:03:14.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""This is why until recently,""" start="00:03:17.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""data science was a graduate-level education""" start="00:03:19.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""only for software engineers, computer scientists,""" start="00:03:22.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""statisticians, psychologists, biologists, business people,""" start="00:03:25.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""or for whoever took a special fancy""" start="00:03:31.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to data in their chosen field.""" start="00:03:34.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Only with a growing interest in machine learning,""" start="00:03:37.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""this has changed.""" start="00:03:40.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And now we train--or try to train--data scientists""" start="00:03:42.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in undergraduate programs as well.""" start="00:03:45.600" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Computer science is a craft""" start="00:03:47.640" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""Now, what I'm saying here, I think is true""" start="00:03:47.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for all areas of computing,""" start="00:03:52.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from software engineering to data science.""" start="00:03:54.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""They are mostly taught and learned like a craft""" start="00:03:56.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""rather than a science, not through research,""" start="00:04:00.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""but through drill.""" start="00:04:03.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The elements of this drill can be illustrated""" start="00:04:04.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""by learning how to fix cars.""" start="00:04:07.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""They include taking a problem apart""" start="00:04:09.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""with the tools you already know,""" start="00:04:12.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""learn a lot more tools in the process of doing that,""" start="00:04:14.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""then solve many, many problems""" start="00:04:18.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""of increasing difficulty""" start="00:04:20.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""while being or getting more literate, as it were,""" start="00:04:22.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""about the mechanics of computing,""" start="00:04:25.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""including the hardware, the infrastructure,""" start="00:04:27.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and finally develop a way of thinking""" start="00:04:30.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that allows the learner to identify patterns""" start="00:04:32.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to solve new problems better and faster.""" start="00:04:35.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Unlike learning how to fix cars,""" start="00:04:39.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""all of the objects of our interest--""" start="00:04:42.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""both hardware and software--are evolving rapidly.""" start="00:04:44.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In this field, radical innovation is the rule,""" start="00:04:48.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""not the exception.""" start="00:04:51.520" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""The problem""" start="00:04:52.840" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""The problem that I identified is that students,""" start="00:04:52.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""especially undergraduate students""" start="00:04:58.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in computer and data science,""" start="00:05:00.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""often do no longer understand the infrastructure.""" start="00:05:02.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Here are a few examples of the problems""" start="00:05:06.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that the students seem to have.""" start="00:05:08.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""They do not understand computer architecture,""" start="00:05:10.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""except in theory.""" start="00:05:13.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""They cannot navigate their way around their own computers.""" start="00:05:14.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""They don't understand the value or the issues of networks.""" start="00:05:18.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""They are often more interested in convenience""" start="00:05:22.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""than in customization of the environment.""" start="00:05:25.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""As a result, the machines which we're meant to control""" start="00:05:28.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""have all the power--though passively,""" start="00:05:31.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""of course, for now anyway.""" start="00:05:35.080" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""The solution: Emacs + Org-mode""" start="00:05:36.560" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""Enter Emacs, the self-extensible operating system""" start="00:05:36.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""disguised as a text editor.""" start="00:05:43.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""You're at EmacsConf, so of course I don't have to tell you""" start="00:05:46.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""what Emacs can do.""" start="00:05:51.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Here's a rundown on the right-hand side""" start="00:05:52.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""of some of its most important properties,""" start="00:05:54.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and an Org Mode file excerpt""" start="00:05:56.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from one of my classes on the left.""" start="00:05:58.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""What you may not know is how to onboard students who have,""" start="00:06:00.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""at the start, no interest whatsoever""" start="00:06:05.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in leaving their comfort zone,""" start="00:06:07.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which is defined by a lifetime of Windows,""" start="00:06:08.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""pre-configured graphical interfaces, and software bloat.""" start="00:06:12.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In fact, when I started this, I wasn't very hopeful,""" start="00:06:16.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""but the results have made me even more optimistic""" start="00:06:19.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""than I already am by nature.""" start="00:06:22.400" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Emacs configuration file""" start="00:06:24.120" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""So to rein in your expectations,""" start="00:06:24.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""you cannot do entirely without""" start="00:06:28.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""configuring the student's experience.""" start="00:06:31.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""An important part of this""" start="00:06:33.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""is the initial Emacs configuration shown here.""" start="00:06:35.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The minimal configuration file,""" start="00:06:38.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which you can see on the right-hand side,""" start="00:06:40.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""allows the students to run code in C and C++, R, SQL,""" start="00:06:42.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""SQLite, Python, and Bash.""" start="00:06:46.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""It will allow them to update Emacs packages""" start="00:06:48.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from the stable Melpa repository,""" start="00:06:52.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and it will allow them to create code blocks easily""" start="00:06:55.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""using skeleton commands for code blocks,""" start="00:06:58.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and to auto-load the Emacs Speaks Statistics package,""" start="00:07:01.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which you particularly need when you run R in Emacs,""" start="00:07:06.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and lastly, to disable toolbar and graphical menu bars.""" start="00:07:09.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""To do that encourages the exclusive use of the keyboard""" start="00:07:14.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to control Emacs, and to stop the students""" start="00:07:19.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from flicking all the time to the mouse;""" start="00:07:23.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""seems to be an essential part of getting used to Emacs.""" start="00:07:25.840" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Story + code = source + documentation""" start="00:07:30.360" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""Now Org Mode was included in Emacs in 2006 as a major mode,""" start="00:07:30.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and as you know, it's a structured plain text format""" start="00:07:38.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""with notebook live code execution.""" start="00:07:41.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""It's an ideal platform for literate programming,""" start="00:07:45.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which is a term for programming that intermingles code,""" start="00:07:47.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""documentation, and output within a single document,""" start="00:07:52.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and that can, as you can see here from an org file,""" start="00:07:55.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""either be tangled into source code""" start="00:07:59.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""or woven into a documentation file, which could be PDF,""" start="00:08:02.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""could be Markdown, could be OpenOffice,""" start="00:08:07.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""could be a notebook format.""" start="00:08:11.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""This methodology was conceived by Donald Knuth in 1984,""" start="00:08:13.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and it is therefore even older than Emacs itself.""" start="00:08:18.480" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""What is literate programming?""" start="00:08:22.040" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""The main purpose of literate programming is not only""" start="00:08:22.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to make code or documentation or output more manageable,""" start="00:08:27.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""but to allow humans to create a data story with ease""" start="00:08:31.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from a single source.""" start="00:08:34.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So what you see on the slide on the left-hand side""" start="00:08:37.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""is the story and code inside a Org Mode file.""" start="00:08:40.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The file starts with some documentation,""" start="00:08:45.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""then with the white background is the code,""" start="00:08:49.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and at the bottom you see an output file,""" start="00:08:52.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which is not shown here on the slide itself.""" start="00:08:56.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In the middle, you have the source code,""" start="00:09:00.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which is the result of tangling""" start="00:09:02.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""or of opening a buffer inside org-mode.""" start="00:09:05.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And on the very right-hand side, you have a PDF--""" start="00:09:10.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""actually this HTML rendering of the very same file""" start="00:09:16.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that you see on the very left.""" start="00:09:20.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So the humans look at some of this code,""" start="00:09:22.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and the machines will look at other parts of the code.""" start="00:09:26.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I actually did all my programming in a literate way""" start="00:09:29.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""even in the early 1990s, not using org-mode,""" start="00:09:33.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which didn't exist yet,""" start="00:09:35.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""but using Norman Ramsey's Noweb preprocessor.""" start="00:09:36.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And I still use it inside org-mode today.""" start="00:09:40.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""This preprocessor, Noweb, allows you to tangle code""" start="00:09:43.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from within an org-mode file that's a self-standing file,""" start="00:09:47.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""much like org-mode's edit functions,""" start="00:09:50.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which export code blocks into buffers""" start="00:09:52.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in whatever language the code block is written.""" start="00:09:55.640" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Emacs as a literate programming tool""" start="00:09:59.880" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""In data science, these interactive notebooks""" start="00:09:59.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in one of the interpreted languages like Julia,""" start="00:10:02.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Python, or R dominate.""" start="00:10:06.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The basis technology,""" start="00:10:07.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""is that of Jupyter notebooks, which take their name""" start="00:10:10.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from Julia, Python, and R.""" start="00:10:12.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And these notebooks use a spruced-up shell (for example,""" start="00:10:14.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""IPython for Python) with an option to add SQL cells.""" start="00:10:19.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Org Mode inside Emacs has a large number of advantages--""" start="00:10:23.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""some of them are listed here--over these notebooks.""" start="00:10:28.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Two of these stand out particularly.""" start="00:10:31.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Different languages can be mixed, as shown in the image,""" start="00:10:33.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""while in Jupyter notebooks, a notebook is limited to""" start="00:10:39.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""running a kernel in one language only.""" start="00:10:43.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So the content of the notebook--""" start="00:10:45.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""its document code or output part--""" start="00:10:48.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""can be exported in a variety of formats,""" start="00:10:50.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which makes it much easier to share with others""" start="00:10:52.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and to use one's work in different reporting formats;""" start="00:10:55.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for example, to read it out into a LaTeX publication.""" start="00:10:58.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Actually, to come back to this,""" start="00:11:02.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""the file does not show different languages.""" start="00:11:08.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""That is something you can see in a paper of mine,""" start="00:11:11.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in one of the figures.""" start="00:11:14.160" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Case study: basic setup""" start="00:11:18.960" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""Now, coming to the case study itself,""" start="00:11:18.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""here are some of the overall results of the case study.""" start="00:11:22.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Now, the courses ranged from introductory to advanced,""" start="00:11:25.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""as you can see here in the table on the left-hand side.""" start="00:11:29.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The topics covered different programming applications.""" start="00:11:32.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The courses were taught""" start="00:11:37.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""over a period of three consecutive terms.""" start="00:11:38.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""There was between 6 and 28 participants per course.""" start="00:11:41.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I used a few other tools besides Emacs:""" start="00:11:45.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""GitHub as the main repository for all the material,""" start="00:11:49.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Datacamp for structured online lessons and exercises,""" start="00:11:51.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Canvas as a learning management system,""" start="00:11:55.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and Zoom to record the sessions for later use.""" start="00:11:57.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Now, the material for all these courses""" start="00:12:00.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""is openly available on GitHub,""" start="00:12:03.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and the address is on the slide at the bottom.""" start="00:12:05.400" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Emacs + Org-mode notebooks""" start="00:12:11.280" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""I'm now going to briefly comment on""" start="00:12:11.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""the most important aspects of using Emacs and Org Mode""" start="00:12:15.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in and outside of class.""" start="00:12:18.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Essentially, these two--Emacs and Org Mode--""" start="00:12:20.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""were used all the time for almost everything""" start="00:12:24.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that the students were doing in and outside of class.""" start="00:12:26.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The only exception were multiple choice tests""" start="00:12:29.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and online assignments""" start="00:12:32.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""on the Datacamp learning platform""" start="00:12:34.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in the data science courses.""" start="00:12:35.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""But everything else--code-along lectures, home assignments,""" start="00:12:37.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""student projects, practice in class--""" start="00:12:40.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""was done with these two tools.""" start="00:12:42.440" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Onboarding: simplified Emacs tutorial""" start="00:12:45.800" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""To facilitate the onboarding,""" start="00:12:45.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""so to get students used to Emacs in the first place,""" start="00:12:48.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I developed a simplified Emacs tutorial,""" start="00:12:51.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which was focused on the basics of literate programming.""" start="00:12:53.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""It included navigation in major modes,""" start="00:12:56.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""managing files and buffers, customizing the interface,""" start="00:13:00.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and keyboard shortcuts.""" start="00:13:02.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""It was considerably shorter;""" start="00:13:04.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""about a quarter of the size of the standard Emacs tutorial,""" start="00:13:06.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which contains a lot more stuff.""" start="00:13:12.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""As a result of this onboarding,""" start="00:13:14.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""by the end of the second week,""" start="00:13:16.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""most students were able""" start="00:13:18.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to use Emacs and Org Mode competently""" start="00:13:19.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for their assignments in and outside of class,""" start="00:13:22.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""completely independent of their previous exposure""" start="00:13:25.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to any of these tools.""" start="00:13:29.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Most of the students, in fact, had never heard of Emacs.""" start="00:13:31.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""All the classes were taught physically in a computer lab.""" start="00:13:35.400" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Instruction + interaction""" start="00:13:40.840" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""Emacs with Org Mode""" start="00:13:40.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and the necessary languages for the class""" start="00:13:42.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""were pre-installed on the computers.""" start="00:13:45.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The computers ran Windows, unfortunately,""" start="00:13:47.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""like most of the students' personal computers.""" start="00:13:50.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""A typical class involved a lecture delivered by me""" start="00:13:52.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in Emacs as a code-along.""" start="00:13:57.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The students would get an Org Mode file""" start="00:13:59.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""with all the code removed.""" start="00:14:01.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""You can see an example here""" start="00:14:03.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""on the slide on the right-hand side.""" start="00:14:04.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""This example is actually only one line of code in blue,""" start="00:14:06.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""visible at the bottom for an award file.""" start="00:14:12.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Then the students submitted home assignments""" start="00:14:15.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""also as Org Mode files, complete with documentation,""" start="00:14:17.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""code and sample output.""" start="00:14:21.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Working this way makes the classes highly interactive.""" start="00:14:23.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So the students are busy coding""" start="00:14:27.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and they learn to control their environment better""" start="00:14:28.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""all the time.""" start="00:14:31.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In my classes, the students have to complete""" start="00:14:34.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""an independent, agile research project""" start="00:14:38.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""using an adaptation of Scrum as a methodology.""" start="00:14:41.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""You can find examples of these rather high-octane projects""" start="00:14:44.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in my paper.""" start="00:14:48.080" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Assignments + projects""" start="00:14:48.720" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""Now, using literate programming for the projects""" start="00:14:48.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""provided some unique benefits.""" start="00:14:52.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""By having to continuously interweave documentation,""" start="00:14:54.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""references and output alongside functional code,""" start="00:14:57.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""the students learn to communicate their work""" start="00:15:01.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""throughout the term""" start="00:15:04.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in various stages of completion,""" start="00:15:05.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from the research question at the start,""" start="00:15:07.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""over the prototype to the finished product.""" start="00:15:09.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And here on the right-hand side,""" start="00:15:12.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""you can see one of those assignments""" start="00:15:15.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that the students received,""" start="00:15:17.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""including some of the metadata for their Org Mode files""" start="00:15:18.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in the beginning of the course.""" start="00:15:24.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Here are two graphs that I created early on""" start="00:15:26.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""when I started doing this.""" start="00:15:32.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""They show how the test results of the students""" start="00:15:34.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""in two different courses, actually three courses,""" start="00:15:36.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""changed from before to after""" start="00:15:39.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""introducing literate programming with Emacs and Org Mode.""" start="00:15:41.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So you see the before and after""" start="00:15:45.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""introducing literate programming in the red curve before""" start="00:15:49.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and the blue curve afterwards.""" start="00:15:53.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And the improvement, especially on the right-hand side,""" start="00:15:54.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""is quite significant.""" start="00:15:58.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""It was this performance improvement,""" start="00:15:59.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""apart from the students who were voicing their support,""" start="00:16:02.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that made me extend the Emacs experiment""" start="00:16:05.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""after the first term""" start="00:16:08.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and continue for the following two terms.""" start="00:16:09.160" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Overall results positive""" start="00:16:15.280" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""The courses... Coming to the result, the overall result...""" start="00:16:15.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The courses were formally and informally""" start="00:16:18.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""also evaluated by the students,""" start="00:16:21.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""but you need to look at my paper""" start="00:16:23.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for some explicit student comments,""" start="00:16:24.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which you will find there.""" start="00:16:27.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Here, I'm giving you only the summary.""" start="00:16:28.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So first of all, Emacs proved to be hard to learn for some,""" start="00:16:29.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""but all students succeeded in all courses,""" start="00:16:34.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""independent of the level of""" start="00:16:37.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""their previous knowledge and skill.""" start="00:16:39.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The documentation practices remained pretty uneven.""" start="00:16:40.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So some students wrote a lot, others wrote little.""" start="00:16:45.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""But they were overall much higher than in classes""" start="00:16:49.640" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""without the use of Emacs and Org Mode.""" start="00:16:53.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The interactivity enabled through Emacs""" start="00:16:57.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""was highly praised by the students""" start="00:16:59.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and always identified on the evaluations.""" start="00:17:01.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And lastly and most importantly, given the problems""" start="00:17:05.040" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that I identified earlier, the computing file""" start="00:17:08.560" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""and data handling competence""" start="00:17:13.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""of the students who worked with Emacs throughout""" start="00:17:15.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""opening Emacs shells, running programs through Emacs,""" start="00:17:18.280" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""these skills increased massively.""" start="00:17:23.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In the published paper, I have expressed""" start="00:17:27.000" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""a little more doubt than you see on this slide.""" start="00:17:30.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""But now, actually, I'm feeling quite hopeful again,""" start="00:17:32.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""especially because recently for one term,""" start="00:17:38.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I have returned to Jupyter notebooks.""" start="00:17:41.880" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In the current term, I abandoned Emacs again""" start="00:17:47.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for online Jupyter notebook installations.""" start="00:17:50.600" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The reason is that these Jupyter notebooks""" start="00:17:53.120" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that I use from DataCamp have generative AI support""" start="00:17:55.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""from ChatGPT integrated into the notebook.""" start="00:18:00.160" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And I wanted to try that.""" start="00:18:03.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""But after one term without Emacs,""" start="00:18:04.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I regret that decision now.""" start="00:18:08.520" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The AI advantage does not make up""" start="00:18:10.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""for the loss of the immersion""" start="00:18:13.200" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""that Emacs and Org Mode deliver.""" start="00:18:15.120" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion & outlook""" start="00:18:19.800" video="mainVideo-teaching" id="subtitle"]]
+
+[[!template text="""And here's the summary.""" start="00:18:19.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""When learning computer and data science,""" start="00:18:21.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""immersion is everything.""" start="00:18:23.760" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""The best students will aim at immersion anyway.""" start="00:18:25.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""But for the majority of students,""" start="00:18:29.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""immersion must happen in class.""" start="00:18:31.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Emacs and Org Mode performed throughout very well""" start="00:18:33.680" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""as the central literary programming platform.""" start="00:18:39.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And the pre-configuring and the onboarding,""" start="00:18:42.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""which I showed to you, were very important""" start="00:18:45.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""to train the students quickly.""" start="00:18:48.960" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""In the paper, I also speculated on the impact""" start="00:18:50.360" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""of low-code, no-code, and AI coding assistance.""" start="00:18:54.480" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And my general view on this is that""" start="00:18:57.920" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""the arrival of these tools""" start="00:19:00.240" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""make literary programming as an immersive technique""" start="00:19:01.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""focused on teaching a broad range of skills""" start="00:19:04.320" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""even more important.""" start="00:19:08.400" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""So even with AI--or especially with AI--""" start="00:19:09.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""this kind of approach, I think, could be critical.""" start="00:19:13.080" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And that's it.""" start="00:19:16.800" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""I'm at the end of my presentation.""" start="00:19:18.440" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Thank you very much for your attention.""" start="00:19:19.840" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""And I'm looking forward to the Q&A.""" start="00:19:21.720" video="mainVideo-teaching" id="subtitle"]]
+[[!template text="""Thank you.""" start="00:19:22.840" video="mainVideo-teaching" id="subtitle"]]
+
+
+
+Captioner: sachac
+
+<a name="teaching-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Again, second only live Q&A of the day.""" start="00:00:00.599" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So, things are still a bit rusty,""" start="00:00:04.339" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but believe me, by the end of the morning,""" start="00:00:06.339" video="qanda-teaching" id="subtitle"]]
+[[!template text="""we will be well-oiled machinery.""" start="00:00:08.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So, hi Marcus, how are you doing?""" start="00:00:12.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm fine, Thank you.""" start="00:00:14.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: I really liked, most people might have""" start="00:00:17.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""forgotten, but you started your presentation""" start="00:00:20.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""with the, in a very dark room and with this""" start="00:00:22.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""typical note of dry German humor that I""" start="00:00:26.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""particularly liked.""" start="00:00:29.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Whereas I told you we're born without humour""" start="00:00:31.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""so any sense of humour is the result of very""" start="00:00:34.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""hard work.""" start="00:00:38.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well I can confirm therefore that your work""" start="00:00:40.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""is evident in this particular remark.""" start="00:00:44.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So as we did before and perhaps this time""" start="00:00:47.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""more punctiliously, terrible adverb,""" start="00:00:50.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that's why I'm an English major we will be""" start="00:00:54.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""taking questions first from the pad and then""" start="00:00:58.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""we'll be moving on to people in the BBV room.""" start="00:01:00.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Let me just check if we have some people.""" start="00:01:03.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""We do have some people.""" start="00:01:05.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""All right, so Markus, I'm gonna ask you the""" start="00:01:06.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""questions in the pad unless you have""" start="00:01:08.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""something to remark first.""" start="00:01:11.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, oh no, no, I don't have nothing to""" start="00:01:13.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""remark. I mean, only that we're coming to the""" start="00:01:15.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""end of the term here, and I think in the""" start="00:01:17.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""paper that I wrote, I expressed doubt that""" start="00:01:20.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Emacs was good for beginners,""" start="00:01:24.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but I've now gone back to an interactive""" start="00:01:25.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""notebook in the class without Emacs,""" start="00:01:31.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and I've just missed it terribly the whole""" start="00:01:34.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""term. And I think I saw you walk too,""" start="00:01:37.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""so that's kind of interesting.""" start="00:01:39.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's it.""" start="00:01:41.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. All right, well,""" start="00:01:42.270" video="qanda-teaching" id="subtitle"]]
+[[!template text="""let's get started with the questions because""" start="00:01:43.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm a little worried that we might acquire""" start="00:01:45.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""debt because of the time that we have.""" start="00:01:48.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And just to be clear, so that you also know""" start="00:01:50.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the time at which we're supposed to be""" start="00:01:53.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""finishing, the next talk here on this track""" start="00:01:54.479" video="qanda-teaching" id="subtitle"]]
+[[!template text="""is supposed to be at 10.40,""" start="00:01:57.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""which is in 13 minutes from now.""" start="00:01:59.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""All right, with that said,""" start="00:02:01.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""starting with the first questions.""" start="00:02:03.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""What tools do you use for making your slides?""" start="00:02:05.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""They are very nice and I concur.""" start="00:02:07.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""OrgReveal?""" start="00:02:17.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: I use OrgReveal. It's a package,""" start="00:02:12.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""OrgReveal. I don't have the link right now,""" start="00:02:22.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but it's an org mode package where You create""" start="00:02:26.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""some meta information and I think it's""" start="00:02:31.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""basically JavaScript, JavaScript package that""" start="00:02:35.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""will work from a bunch of different""" start="00:02:39.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""platforms, but it works particularly well""" start="00:02:45.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""from Emacs. So you use that a lot.""" start="00:02:49.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, yeah, I think it is definitely""" start="00:02:53.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""interacting with JavaScript in the background""" start="00:02:55.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and it makes for a very clean presentation""" start="00:02:57.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right from Emacs. I mean,""" start="00:02:59.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's not opened in Emacs unless you use a web""" start="00:03:01.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""browser in Emacs that supports such""" start="00:03:04.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""compositing but it's pretty convenient and I""" start="00:03:06.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""recommend looking into it.""" start="00:03:09.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm just going to share the URL here.""" start="00:03:15.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So if anybody's interested.""" start="00:03:20.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, and we'll be putting all the links""" start="00:03:22.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right now. So obviously right now,""" start="00:03:24.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Marcus is writing inside of his own Emacs,""" start="00:03:25.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but we also have the pad.""" start="00:03:28.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""We'll make sure that you have all the links""" start="00:03:29.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""accessible a little bit later.""" start="00:03:31.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Okay, moving on to the next question,""" start="00:03:32.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""why MDPI?""" start="00:03:34.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh yeah, well that's a little bit of a longer""" start="00:03:36.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""answer, kind of boring I suppose.""" start="00:03:40.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So when I came here to the US,""" start="00:03:42.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I used to teach a lot of graduate courses and""" start="00:03:45.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I had to suddenly teach a lot of""" start="00:03:47.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""undergraduate courses,""" start="00:03:49.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""which partly motivated this move because it""" start="00:03:50.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""made me realize, as I said in the""" start="00:03:53.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""presentation, how little the students""" start="00:03:55.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""understand of the underlying infrastructure""" start="00:03:58.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and how important it is for them to work with""" start="00:04:00.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""an IDE that doesn't make coding especially""" start="00:04:01.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""convenient, but that teaches them a lot of""" start="00:04:06.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the stuff on the side,""" start="00:04:09.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know, while still presenting a very""" start="00:04:10.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""smooth environment, which developers""" start="00:04:13.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""appreciate as well. So I came here and I used""" start="00:04:17.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""to publish like 4 or 5 research papers per""" start="00:04:22.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""year, but I didn't have the time.""" start="00:04:24.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I was contacted by MDPI.""" start="00:04:26.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And it's 1 of those research paper mills,""" start="00:04:30.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""which seem to be springing up where authors""" start="00:04:34.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""can, really the institutions of the authors""" start="00:04:37.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""have to pay so that they can publish,""" start="00:04:40.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right? So it's not really,""" start="00:04:42.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and I checked them out and they seem to be""" start="00:04:44.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""proper peer review publishing,""" start="00:04:46.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but to be absolutely sure I said,""" start="00:04:47.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""well, you can have my article,""" start="00:04:49.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but of course for free,""" start="00:04:51.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm not going to pay for you to publish it.""" start="00:04:52.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And so that's what they did.""" start="00:04:55.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""They invited me and I submitted the paper and""" start="00:04:57.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it was a very good process.""" start="00:05:01.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That was a very, it was a good peer review""" start="00:05:02.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""critique. So I changed the paper quite a bit.""" start="00:05:04.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's still not a great paper.""" start="00:05:06.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's just a small case study.""" start="00:05:07.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's the kind of thing that you have a lot""" start="00:05:09.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""in medical research where also people don't""" start="00:05:12.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""have a lot of time to do research,""" start="00:05:14.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""proper research, which takes a very long""" start="00:05:17.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""time. And so that's why MDPI.""" start="00:05:19.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And they are in the most of the relevant""" start="00:05:21.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""citation indices. So they are reputable""" start="00:05:24.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""enough. I mean, normally I would say for""" start="00:05:27.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""anybody who does anything like this,""" start="00:05:30.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you might not even want to bother with the""" start="00:05:33.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""journal these days anymore.""" start="00:05:36.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""You just go straight to ArcSci,""" start="00:05:37.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""put out your preprint.""" start="00:05:40.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And in fact, what will happen if you're on""" start="00:05:41.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""ArcSci, if somebody finds it interesting,""" start="00:05:44.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""they're going to reach out to you to capture""" start="00:05:46.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""your paper and have it published under their""" start="00:05:49.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""heading. Oh yeah, actually the other reason""" start="00:05:54.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""why I wanted MDPI is because there were open""" start="00:05:56.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""access from the start.""" start="00:05:58.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And I really like, if you go to the paper,""" start="00:06:00.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I really like the way it's presented.""" start="00:06:02.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I looked at a few papers and I thought""" start="00:06:04.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's a really nice online access,""" start="00:06:07.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""online open access solution.""" start="00:06:12.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's the long answer,""" start="00:06:15.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""sorry.""" start="00:06:17.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: No, that was perfectly fine and you provided""" start="00:06:18.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""many details so it was far from a boring""" start="00:06:21.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""answer, let me reassure you.""" start="00:06:23.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Moving on to the question,""" start="00:06:26.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""we only have about 8 minutes left so I'd like""" start="00:06:27.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""to finish those 2 questions and let people in""" start="00:06:29.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the audience speak. So do you think immersion""" start="00:06:31.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""can be achieved on teaching other students""" start="00:06:35.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""with different backgrounds?""" start="00:06:37.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh yeah, that's a really good question.""" start="00:06:39.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I had actually a discussion last night with""" start="00:06:45.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""my wife in bed about this,""" start="00:06:48.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""about the use of textbooks which are famously""" start="00:06:49.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""non-immersive because they're consumed away""" start="00:06:53.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""from the class. Very rarely you sit in class""" start="00:06:55.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""like people used to do and read something""" start="00:06:58.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""together. Maybe they did that in English.""" start="00:07:00.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And that is of course instantly immersive.""" start="00:07:02.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But in computer science,""" start="00:07:05.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""many other topics, psychology,""" start="00:07:06.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know, biology and so on,""" start="00:07:08.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you cannot get immersion,""" start="00:07:10.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""at least not in a lecture theater.""" start="00:07:12.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""You get it in a lab because people solve the""" start="00:07:15.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""problem and then they're immersed in it.""" start="00:07:16.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So, but my answer would be,""" start="00:07:18.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""yes, I can think totally immersion can be""" start="00:07:20.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""achieved anywhere, but what you have to do is""" start="00:07:22.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you have to not lecture and you have to let""" start="00:07:25.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""students do work as you go along.""" start="00:07:29.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I used to lecture quite a bit because I""" start="00:07:31.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""was an insecure young professor and just read""" start="00:07:33.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""all my slides and my notes as I used to use,""" start="00:07:38.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""as everybody uses to when they start.""" start="00:07:41.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But as I went along, I realized,""" start="00:07:44.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know, I've got such a grasp of the topic""" start="00:07:46.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that I really everything I do now is prepared""" start="00:07:48.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""in Emacs in an interactive way so I start""" start="00:07:51.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""saying a few words and then the students""" start="00:07:53.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""immediately we get to work and they seem to""" start="00:07:55.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""love that because in most of the other""" start="00:07:58.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""classes people just talk at them they take""" start="00:07:59.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""their stuff home and work at home,""" start="00:08:01.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""which is of course is super.""" start="00:08:03.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But most of the students,""" start="00:08:05.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""if they have, in at least in a liberal arts""" start="00:08:06.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""college, they have 5 other classes,""" start="00:08:08.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""they do not take a lot of time to do the work""" start="00:08:10.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""at home. So it's, you know,""" start="00:08:13.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""yeah, It's kind of different.""" start="00:08:16.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's kind of risky, yeah,""" start="00:08:18.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but the main point I was trying to make is""" start="00:08:20.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Emacs and Org Mode really helped me to boil""" start="00:08:22.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that interactive session down to something""" start="00:08:26.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that will work in the classroom.""" start="00:08:29.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't have to jump around between""" start="00:08:30.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""platforms. For example,""" start="00:08:32.559" video="qanda-teaching" id="subtitle"]]
+[[!template text="""this term, and I didn't use Emacs in the""" start="00:08:33.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""class with the students,""" start="00:08:35.799" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I had to render using a package.""" start="00:08:37.159" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's actually a very nice package called,""" start="00:08:40.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""what's it called? Ox, what's it called?""" start="00:08:42.299" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Ox, Ox IPNB. It's called Ox IPNB.""" start="00:08:46.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So what it does is it renders in the usual""" start="00:08:50.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""way with Emacs, Org Mode does,""" start="00:08:53.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""renders interactive notebook files in""" start="00:08:55.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Jupyter. And that took me a lot of time.""" start="00:08:58.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And I immediately noticed as soon as the""" start="00:09:01.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""teacher has to fight platforms themselves,""" start="00:09:03.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""they take the ball off the immersion task,""" start="00:09:06.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know, to keep the student on the problem.""" start="00:09:09.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah. Oh, go on, please.""" start="00:09:16.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Yeah. I was going to remark that.""" start="00:09:19.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: So yeah, absolutely. Yeah,""" start="00:09:12.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I suppose it might be MIT style.""" start="00:09:23.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Big difference though,""" start="00:09:25.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""my classes are very, very short,""" start="00:09:26.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""small. So I have like between 10 and 15""" start="00:09:27.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""students per class. 1 of the reasons why I""" start="00:09:30.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""went to this college is because I was fed up""" start="00:09:32.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""teaching, trying to teach hundreds of""" start="00:09:35.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""students. Okay, sorry,""" start="00:09:36.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""do some of your students nag you about using""" start="00:09:40.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""VS Code? Yes, they do,""" start="00:09:42.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but their arguments aren't very good.""" start="00:09:43.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""They hadn't really compared Emacs and VS""" start="00:09:46.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Code. And what I do, actually I use RStudio""" start="00:09:48.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""as well, demonstrate VS Code,""" start="00:09:51.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""RStudio and Emacs. And I think it's very easy""" start="00:09:53.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""for them to see. And there are some videos""" start="00:10:01.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""about that as well, how much easier it is to""" start="00:10:02.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""get into Emacs to limit your investments to""" start="00:10:05.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""what you actually wanna do.""" start="00:10:08.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""When the problem with VS Code is it comes at""" start="00:10:09.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you with this sort of Microsoft store""" start="00:10:11.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""ideology, like a gazillion plugins,""" start="00:10:14.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""which if you're a developer,""" start="00:10:17.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know what you want.""" start="00:10:18.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And I mean, it's a bit like VS Code is like""" start="00:10:21.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Google search for as if you were programming""" start="00:10:24.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""in Google search, a complete waste of time.""" start="00:10:27.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Having said that, I've also seen some videos""" start="00:10:31.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""with people who really know how to use VS""" start="00:10:33.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Code. And of course, you know,""" start="00:10:36.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""if somebody gets on the inside of a tool and""" start="00:10:37.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""spends upwards of a thousand hours in the""" start="00:10:41.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""tool, they'll be great.""" start="00:10:44.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But that's not true for beginners.""" start="00:10:45.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So hold on, there's another 1.""" start="00:10:48.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm reading them, sorry.""" start="00:10:51.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Leo, I can see the questions,""" start="00:10:52.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but you may wanna turn them around.""" start="00:10:55.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: No, No, no, please, please,""" start="00:10:59.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you're free to read them.""" start="00:11:00.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm on your fasted computer.""" start="00:11:01.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Some of you, too, that's the nagging.""" start="00:11:02.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I teach simple programming at a vocational""" start="00:11:04.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""school, and even after showing the students""" start="00:11:06.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Vim, Vim, of course, is a contender,""" start="00:11:07.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and now I'm telling them I prefer Emacs.""" start="00:11:09.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""They still all choose VS Code as their""" start="00:11:12.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""editor. Well, okay, what I did is mandatory.""" start="00:11:14.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I didn't let them choose.""" start="00:11:17.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's what I did. And I thought that was""" start="00:11:19.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""quite risky, but in the end,""" start="00:11:21.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it turns out that the best students loved it""" start="00:11:23.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and keep using Emacs in their jobs.""" start="00:11:26.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I hear that now. The students in the middle""" start="00:11:28.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""were probably the ones who would pick VS Code""" start="00:11:33.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""because every tutorial they see,""" start="00:11:35.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""they learn a lot through YouTube and so""" start="00:11:38.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""everything they see is in VS Code.""" start="00:11:40.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""If there were more tutorials in Emacs,""" start="00:11:42.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm trying to make some,""" start="00:11:44.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""then of course that would be different.""" start="00:11:45.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But I think it's partly brainwashing and""" start="00:11:49.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""partly, of course, the other reason is there""" start="00:11:53.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""is no online Emacs. They use VS Code Dev,""" start="00:11:55.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right? And that's, of course,""" start="00:12:00.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""they use an online cloud solution.""" start="00:12:03.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Like most of the students in the high school,""" start="00:12:05.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I teach Python in the high school right now,""" start="00:12:07.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and the students only get Chromebooks that""" start="00:12:09.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""are completely cut down to nothing.""" start="00:12:11.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""They cannot have Linux on their Chromebooks.""" start="00:12:15.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So what are they supposed to do?""" start="00:12:18.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Their only choice really is Repl.""" start="00:12:19.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Repl.com is a possibility for them to do""" start="00:12:21.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that. But, you know, or they use code spaces,""" start="00:12:24.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""which is VS Code in GitHub.""" start="00:12:27.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Marcus, sorry for the interruption.""" start="00:12:31.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""We only have about 2 minutes left.""" start="00:12:32.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So if you could take 1 question,""" start="00:12:34.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that would be great. Sorry.""" start="00:12:35.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: So. I'm observing the same behavior.""" start="00:12:30.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Any more tutorials will be most welcome.""" start="00:12:38.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Yes, I I'd love to. I spent the rest of my""" start="00:12:40.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""days on this earth making Emacs tutorials if""" start="00:12:43.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: tutorials if I can.""" start="00:12:48.263" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: I can. Thank you. DMAX Thank you.""" start="00:12:46.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Approach to handling EDA.""" start="00:12:49.769" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Oh yeah, with white data sets.""" start="00:12:51.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Well, that's a good point.""" start="00:12:56.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: So Markus, I don't want to put you under too""" start="00:13:01.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: answer the question. The handling EDA,""" start="00:13:03.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know, if you look at the comments,""" start="00:13:07.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think these are on YouTube,""" start="00:13:08.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right, at some point, Leo?""" start="00:13:09.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: much pressure to Oh yes,""" start="00:13:03.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""they will definitely be on YouTube.""" start="00:13:12.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""answer the""" start="00:13:14.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm going to question you asked about the""" start="00:13:13.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""EDA, that's too long to go into right now,""" start="00:13:15.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""plus my cat is here. So I'm going to answer""" start="00:13:17.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that in the comments, all right?""" start="00:13:21.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Start up the conversation.""" start="00:13:23.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Yes, I'm going to post that in the comments""" start="00:13:24.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""as well.""" start="00:13:27.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sure, but Also, just to be clear,""" start="00:13:29.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Marcus, you're going to continue the""" start="00:13:31.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""discussion. It's just a stream that will be""" start="00:13:32.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""moving on to the next talk in about 50""" start="00:13:35.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""seconds. Marcus, feel free to keep answering""" start="00:13:37.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""questions inside this room.""" start="00:13:39.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""You also have people, we're going to check""" start="00:13:40.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""aside with the stream,""" start="00:13:42.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""we have a number of people in the room.""" start="00:13:44.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""You can see them on the left on the button""" start="00:13:46.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""who are probably going to unmute themselves""" start="00:13:48.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and ask you questions.""" start="00:13:51.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So feel free to stay in the room,""" start="00:13:52.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""answer as lengthy as you want the questions""" start="00:13:54.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""because that's more content for us and we""" start="00:13:57.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""love it obviously. But it's just that I""" start="00:13:58.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""personally will be leaving to take care of""" start="00:14:01.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the rest of the talks.""" start="00:14:03.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So, Markus, do you have any last words before""" start="00:14:04.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""we move on?""" start="00:14:06.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: No, just thank you for this wonderful...""" start="00:14:08.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm going to copy this.""" start="00:14:09.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't think I listened to the talk by""" start="00:14:11.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Sascha yet, but I'm going to do that because""" start="00:14:13.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I really want to copy this conference format.""" start="00:14:15.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think that is the conference format of the""" start="00:14:18.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""future, using volunteers to put together""" start="00:14:19.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""conferences. So I can't wait.""" start="00:14:21.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Nobody wants to come to Batesville where I""" start="00:14:23.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""am, but thank you so much.""" start="00:14:24.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That was really super professional.""" start="00:14:25.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I love that.""" start="00:14:27.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great. Okay, we are almost perfectly on time.""" start="00:14:28.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think we caught up about 1 or 2 seconds""" start="00:14:32.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""into the last sentence you said but otherwise""" start="00:14:35.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""we were splendidly on time.""" start="00:14:37.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So thank you so much Marcus.""" start="00:14:38.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: You're welcome. So I wanted to say a little""" start="00:14:40.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""bit about that question about handling EDA.""" start="00:14:43.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Can you see the chat on the left?""" start="00:14:51.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Because people have started asking questions""" start="00:14:52.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""on the left. Can you see the chat?""" start="00:14:54.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: I mean I used email. Sorry,""" start="00:14:49.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: So you've got multiple avenues for questions.""" start="00:14:58.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: You can""" start="00:15:01.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: still answer questions in the chat.""" start="00:15:01.166" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: sorry, sorry. Okay, I'm just going to go into""" start="00:14:57.053" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that. Yeah, that's fine.""" start="00:15:03.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sure, I'll need to go now.""" start="00:15:05.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So Marcus, have a great day and I'll probably""" start="00:15:06.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""see you later.""" start="00:15:08.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, thank you. Sorry.""" start="00:15:10.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Bye bye. There was a question about the,""" start="00:15:13.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I wanted to ask the answer the question about""" start="00:15:15.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""EDA, large data sets. So,""" start="00:15:17.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I mean, I teach undergraduate now,""" start="00:15:21.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""so there's a limited number of courses,""" start="00:15:25.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""like where I use, actually have big data""" start="00:15:28.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""issues. And I mean I'm not saying that I'm""" start="00:15:32.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""not that I don't run into performance issues""" start="00:15:36.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""with Emacs. I obviously do.""" start="00:15:38.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But like the performance issues in Emacs are""" start="00:15:40.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""comparable to performance issues for example""" start="00:15:43.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""when using R. In R everything is in memory So""" start="00:15:45.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you are limited to the available,""" start="00:15:49.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""what is it, 2 gigabyte or whatever memory of""" start="00:15:52.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""your computer. So you would have to find""" start="00:15:56.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""other infrastructure solutions anyway.""" start="00:15:58.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""The advantage of using Emacs is that I can,""" start="00:16:00.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""within 1 Org Mode file,""" start="00:16:05.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""connect to an external database.""" start="00:16:08.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I can even, as probably most of you know,""" start="00:16:11.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I can even use it as a text-based web browser""" start="00:16:13.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""if I want to. So I could look at individual""" start="00:16:17.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""files. And the other point of EDA of course""" start="00:16:22.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""is that you're not supposed to look at the""" start="00:16:26.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""tables. You're supposed to get the basic""" start="00:16:30.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""frame of your data. Is there a header?""" start="00:16:38.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""What's the approximate size and stuff like""" start="00:16:41.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that? And then you're supposed to import it""" start="00:16:43.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""into a data frame ideally,""" start="00:16:45.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""at least in portions. And I don't think,""" start="00:16:47.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""yeah, so that's it. But the full answer is""" start="00:16:53.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that I have not done big data analysis in""" start="00:16:56.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Emacs. So that's actually a really nice""" start="00:16:59.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""extension. I'm going to write that down as a""" start="00:17:02.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""thing to talk about in some future talk.""" start="00:17:06.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Okay, so ADA with big data.""" start="00:17:08.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Even though interesting would be to know what""" start="00:17:11.599" video="qanda-teaching" id="subtitle"]]
+[[!template text="""kind of size of data you're actually talking""" start="00:17:13.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""about. So I don't know,""" start="00:17:16.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""what is it, upwards of 1 terabyte or""" start="00:17:20.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""something like that, I don't know.""" start="00:17:25.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That'd be interesting to know.""" start="00:17:27.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Haven't done that in class.""" start="00:17:31.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So there's another question.""" start="00:17:39.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Proportion of students that you think would""" start="00:17:41.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""keep on using Emacs after your course?""" start="00:17:43.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's not a difficult question,""" start="00:17:44.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""because as I said, I have very small classes.""" start="00:17:46.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I've been here since 2 years.""" start="00:17:47.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I'm in touch with almost all the students.""" start="00:17:49.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""In fact, I'm getting them work after school.""" start="00:17:51.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So that's really cool.""" start="00:17:54.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And everybody who took to Emacs really""" start="00:17:56.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""seriously, so probably about 25% or so keep""" start="00:18:00.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""using Emacs after, afterwards.""" start="00:18:03.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I mean, even in the job,""" start="00:18:06.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right, in the professional field.""" start="00:18:08.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Who, those who keep using Emacs after the""" start="00:18:10.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""course, I think the number is greater,""" start="00:18:13.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but I have not followed up on that.""" start="00:18:15.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I have to, my guess is more than half,""" start="00:18:16.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I would say, half or more than half.""" start="00:18:23.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Oh, Aaron, thank you so much.""" start="00:18:26.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's very sweet. But I didn't think the""" start="00:18:27.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""presentation was great.""" start="00:18:31.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I was thinking about redoing it,""" start="00:18:32.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but this is actually the first take.""" start="00:18:33.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It was late, I had lots of other stuff to do.""" start="00:18:36.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think what I'm more interested in than""" start="00:18:40.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""papers is probably this idea of making""" start="00:18:44.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Emacs-based data science videos because there""" start="00:18:48.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""aren't many out there.""" start="00:18:51.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Most of the people who do,""" start="00:18:52.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and computer science, most people who do that""" start="00:18:54.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""are not either developers and certainly not""" start="00:18:57.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""teachers. So I think that's a good idea.""" start="00:18:59.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm gonna pick that up.""" start="00:19:02.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So to do more Remax based data science videos""" start="00:19:03.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Is there anything else?""" start="00:19:19.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""More people. There are some people here in""" start="00:19:20.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the room still.""" start="00:19:22.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: If you do a PSVL on work.""" start="00:19:23.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""What? Or wiki. What's my YouTube channel?""" start="00:19:27.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, yeah, I'm going to give you the,""" start="00:19:34.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I've got a bunch of different YouTube""" start="00:19:36.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""channels. I'm going to put them in the""" start="00:19:38.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""comments to my talk. Hold on,""" start="00:19:40.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the 1 where I have the latest Emacs videos,""" start="00:19:43.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you find my name, there's nobody in the world""" start="00:19:46.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""with my name. So if you look for Gerten Krag""" start="00:19:48.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""on YouTube, then you will find it.""" start="00:19:52.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But I got a bunch of them.""" start="00:19:59.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Hold on, I'm going to give you the...""" start="00:20:00.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""My channel. Okay, This 1 has only got a few""" start="00:20:13.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""videos. But so there's 1 with a lot more.""" start="00:20:20.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Few recent videos. And I'm going to post""" start="00:20:25.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""more. Other ones in the comments of this""" start="00:20:32.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""video. Okay, what else?""" start="00:20:41.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm trying to find my way back to the button.""" start="00:20:48.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Okay, cool. Oh, yes, thank you.""" start="00:20:55.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I will. That's very good.""" start="00:20:59.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Thank you so much. Of course,""" start="00:21:01.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I use Vork. I hadn't even thought of it.""" start="00:21:03.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Very good. It's interesting,""" start="00:21:06.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that's something that comes to my mind.""" start="00:21:15.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""When I was a young student,""" start="00:21:18.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right, people who used Emacs and the web""" start="00:21:19.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""wasn't particularly large.""" start="00:21:24.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So the volunteers would automatically make""" start="00:21:25.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""videos but not for commercial purposes.""" start="00:21:29.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Now you have an army of people who make""" start="00:21:31.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""commercial videos and the videos are usually""" start="00:21:34.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""good for the first 10% of every content,""" start="00:21:38.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but as soon as it gets a little more""" start="00:21:41.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""difficult, they either don't know what to do""" start="00:21:42.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""anymore or they don't do it because it's not""" start="00:21:44.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""commercially viable. The number of people who""" start="00:21:48.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""move on is gets smaller and smaller and""" start="00:21:50.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""smaller. So there's no commerce anymore.""" start="00:21:53.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But when I was a student,""" start="00:21:55.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""pretty much all the documentation everywhere""" start="00:21:58.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""was created by volunteers,""" start="00:22:01.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""just like this conference or like anything in""" start="00:22:02.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""org mode. And that doesn't seem to be much of""" start="00:22:04.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""a trend anymore, but maybe we can resurrect""" start="00:22:09.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it. So yes, I'm definitely gonna contribute""" start="00:22:12.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""to that. Multiple people are typing here.""" start="00:22:22.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Oh, sorry. Yes. Thank you so much.""" start="00:22:30.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm gonna put that, I'm gonna rectify that in""" start="00:22:37.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the comment. Having said that,""" start="00:22:40.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I am not 100% sure that I didn't lie here.""" start="00:22:45.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""May just be because I didn't have much time""" start="00:22:50.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""to put the presentation together.""" start="00:22:52.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And it's perfectly possible that that's""" start="00:22:54.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""actually Google slides and not all reveal.""" start="00:22:56.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""In the classroom when I present and just do""" start="00:23:00.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""lectures, I always do reveal,""" start="00:23:02.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but most of the time I do a tree slide.""" start="00:23:04.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's the quickest way to do it for me.""" start="00:23:08.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So, so presentation. Hold on,""" start="00:23:10.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Let me just copy this 1.""" start="00:23:15.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Make sure that this doesn't get lost.""" start="00:23:17.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Thank you so much for that.""" start="00:23:21.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And presentations in class.""" start="00:23:24.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I use sometimes org-present,""" start="00:23:28.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but there are issues with the font sometimes.""" start="00:23:30.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I use Treeslide most of the time and Org""" start="00:23:33.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: tool.""" start="00:23:44.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Reveal. But this 1 is my top Of course,""" start="00:23:36.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""this is not org, so forget about that.""" start="00:23:46.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Okay. Yeah, so you can send me your,""" start="00:24:02.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you've got my email, I think,""" start="00:24:10.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""on the end, if you're interested in following""" start="00:24:12.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""up or letting me know about your stuff.""" start="00:24:14.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It might be interesting to,""" start="00:24:16.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know, might be interesting to put""" start="00:24:18.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""together a conference or a little seminar""" start="00:24:20.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""just for educators.""" start="00:24:22.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""DF is still typing, I'm waiting.""" start="00:24:37.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm waiting.""" start="00:24:39.025" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Actually, our mod maintainer,""" start="00:24:44.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Bastien, was talking about possibility to""" start="00:24:46.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""have just org mod conference.""" start="00:24:52.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But the question is, is it worth making a""" start="00:24:55.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. A whole separate 1 what?""" start="00:24:54.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: whole separate 1? A whole separate org""" start="00:24:59.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, I see. Yeah, probably would be.""" start="00:25:07.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Actually.""" start="00:25:10.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: dedicated conference. It's just like you see""" start="00:25:05.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""how EmacsConf is well done.""" start="00:25:13.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So it's like creating anything that has good""" start="00:25:16.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes. No, I think that's a good idea.""" start="00:25:22.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Yeah, I mean.""" start="00:25:25.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: is tricky. I mean, Okay,""" start="00:25:19.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's anywhere, like half of Emacs is anywhere""" start="00:25:30.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""remote. So it's almost the same.""" start="00:25:32.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. Well, I suppose at this point,""" start="00:25:37.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know if that's what you mean.""" start="00:25:40.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Org Mode is probably what attracts people to""" start="00:25:41.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Emacs in the first place.""" start="00:25:45.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Like, I suppose Org Roam is the,""" start="00:25:47.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""maybe the biggest 1 for people even outside""" start="00:25:51.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""of computer science. I use Org.ROM""" start="00:25:54.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""for everything. But there are...""" start="00:25:58.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I mean, the thresholds...""" start="00:26:04.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think that the maintainer or maybe the""" start="00:26:06.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""creator of Org.MODE has claimed and said for""" start="00:26:07.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""many years that Org Mode itself doesn't""" start="00:26:10.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""actually necessarily need Emacs.""" start="00:26:13.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""You can have it as a completely separate""" start="00:26:14.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""application as well. But I,""" start="00:26:17.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""for a number of reasons,""" start="00:26:19.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't like that. I really like the idea to""" start="00:26:21.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: why- The current strategy is that It has to""" start="00:26:28.434" video="qanda-teaching" id="subtitle"]]
+[[!template text="""be Emacs because the configurability is 1 of""" start="00:26:30.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the strong points anyway.""" start="00:26:33.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: have it inside Emacs. The reason That's true.""" start="00:26:23.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: You cannot make a separate application.""" start="00:26:35.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""No,""" start="00:26:37.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: that's true. I was going to say that.""" start="00:26:38.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""The thing is you use the flexibility.""" start="00:26:39.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Plus, you also use the,""" start="00:26:41.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know if that's the right word,""" start="00:26:43.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but you use there's something about the free""" start="00:26:46.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""ideology of Emacs that is what attracted me""" start="00:26:48.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""to it in the first place when I was younger""" start="00:26:52.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and that I find even more important now.""" start="00:26:56.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So what they say the community aspect,""" start="00:27:00.765" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the reason, the main reason why Python is so""" start="00:27:06.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""big today, really. So yeah.""" start="00:27:08.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: But in terms of going out of Emacs,""" start="00:27:15.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's org syntax that is supposed to be like""" start="00:27:17.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""breaking out of Emacs.""" start="00:27:21.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So like there's a plan to lay out the actual""" start="00:27:24.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""standard document so that you can register""" start="00:27:28.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the format officially.""" start="00:27:31.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah. Yeah, I think I've heard that too.""" start="00:27:23.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I've not followed up on it much.""" start="00:27:34.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know what the,""" start="00:27:36.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I mean, that probably would,""" start="00:27:39.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it would strength, very likely,""" start="00:27:41.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""if you do that, it would at least for a short""" start="00:27:43.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""time, strengthen org mode and weaken emacs.""" start="00:27:45.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know what other examples,""" start="00:27:49.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""if there are other examples of applications""" start="00:27:51.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""pulled out of IDEs like that.""" start="00:27:55.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm not aware of any others.""" start="00:27:57.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Actually, people are trying to make""" start="00:28:00.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""three-seater drama. People are trying to make""" start="00:28:02.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""like some external parsers,""" start="00:28:04.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""a lot of them. And a lot of stuff is done on""" start="00:28:06.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""mobile part. I can draw it to iOS,""" start="00:28:10.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""especially recently. So things that are Emacs""" start="00:28:13.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""independent are demanded.""" start="00:28:17.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay, yeah. I have no doubt that there is a""" start="00:28:20.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Especially in the environment,""" start="00:28:25.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""like every time.""" start="00:28:27.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: demand. Yeah. I mean, I didn't get into that""" start="00:28:23.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""very much. I have some of my students have 0""" start="00:28:30.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""affinity with computers.""" start="00:28:35.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""They really don't know their way around their""" start="00:28:38.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""computers at all. And so for them,""" start="00:28:39.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It is quite important to learn how to find""" start="00:28:46.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""your way around Emacs because it's like a""" start="00:28:51.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""little operating system,""" start="00:28:56.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but it's not. It's an operating system""" start="00:28:57.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""without much of the obscurity.""" start="00:29:00.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And the alternative to that would be to""" start="00:29:05.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""simply let them work only on the command""" start="00:29:07.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""line, which is another possibility.""" start="00:29:10.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But, you know, there of course you are""" start="00:29:13.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""limited with regard to if you want to swap""" start="00:29:16.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""languages. So for example,""" start="00:29:20.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""quite often I find myself in the situation I""" start="00:29:23.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""teach data science in R and Python and in""" start="00:29:26.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Emacs org mode I can demonstrate both of""" start="00:29:28.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""these side by side in the same file.""" start="00:29:31.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And that's a great advantage.""" start="00:29:35.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Not to overburden the students when they are""" start="00:29:39.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""at the beginning with things that you don't""" start="00:29:43.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""want them to necessarily learn about.""" start="00:29:45.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And plus the thing what I like as a graduate""" start="00:29:48.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""student when I stepped onto Emacs was that it""" start="00:29:51.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""was infinite possibilities to lose myself in""" start="00:29:54.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Emacs and you know go on and learn more stuff""" start="00:30:00.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""about it. But it's such a long time ago that""" start="00:30:03.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I barely dare to mention it anymore.""" start="00:30:07.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: For command line, actually,""" start="00:30:11.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's since the Jupyter notebooks and that""" start="00:30:12.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Google thing they are running.""" start="00:30:17.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's getting so popular that it's clear that""" start="00:30:20.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""command line is just losing in popularity in""" start="00:30:23.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: well, yes and no. I mean,""" start="00:30:28.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: this. Yeah, of course,""" start="00:30:26.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Not the usage. People are still using it,""" start="00:30:36.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""obviously.""" start="00:30:38.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: I mean, in Google Colab,""" start="00:30:39.520" video="qanda-teaching" id="subtitle"]]
+[[!template text="""only the paid version allows you to go to the""" start="00:30:41.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""terminal and use the command line.""" start="00:30:43.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But of course, the traction,""" start="00:30:46.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and I think that's kind of interesting,""" start="00:30:48.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""1 of the reasons why IPython or any of the""" start="00:30:50.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Jupyter notebooks are so cool is because you""" start="00:30:54.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""can use a lot of shell commands from the""" start="00:30:56.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""IPython shell. There's a whole bunch of magic""" start="00:31:00.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""commands which are quite powerful.""" start="00:31:05.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I mean the the 1 that comes to mind is time.""" start="00:31:07.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""The time command for example you know gives""" start="00:31:10.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you a really nice performance quick""" start="00:31:12.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""performance check. There's a bunch of""" start="00:31:15.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""different, I think probably close to a""" start="00:31:17.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""hundred magic commands that you can use in""" start="00:31:19.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Jupyter. But I don't know JupyterLab too""" start="00:31:22.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""well, but I noticed that the companies that""" start="00:31:25.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""do online training, And they are usually the""" start="00:31:28.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""ones that are closest to what beginners want,""" start="00:31:31.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""especially in business.""" start="00:31:34.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And what those companies do is they,""" start="00:31:36.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know, they take, they take JupyterLab and""" start="00:31:38.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""turn it into a presentation of their own.""" start="00:31:41.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Another 1 is Notable, notable.io.""" start="00:31:43.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""That's another 1. They took JupyterLab and""" start="00:31:46.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""turned it into something commercial.""" start="00:31:49.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's boosted up a little bit.""" start="00:31:51.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And so the shell inside the JupyterLab has""" start="00:31:55.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""some of the most more important shell""" start="00:32:00.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""properties. And so people still use the""" start="00:32:03.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""command line without knowing that they use""" start="00:32:05.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the command line. But I also like doing,""" start="00:32:07.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""how do I use org-roam?""" start="00:32:13.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Well, I use it, I do not have not used it""" start="00:32:19.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""with the students yet,""" start="00:32:22.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""only the best students have sort of seen me""" start="00:32:23.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""use it and copied it. But I use it probably""" start="00:32:25.020" video="qanda-teaching" id="subtitle"]]
+[[!template text="""in a very naive, trivial way.""" start="00:32:29.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I can't say that I am,""" start="00:32:32.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that I have a very sophisticated use.""" start="00:32:34.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I basically, I like the fact that,""" start="00:32:37.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I mean, it's built on the original concept of""" start="00:32:39.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the, with the German word,""" start="00:32:43.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Zettelkasten, right? Which is that you do not""" start="00:32:44.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""have to think about a taxonomy because as you""" start="00:32:48.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""move along, your taxonomy changes all the""" start="00:32:50.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""time. You know, what you think is important""" start="00:32:53.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""at the beginning, your root node,""" start="00:32:55.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""as you go along, you realize,""" start="00:32:57.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""oh, that's not the root node at all.""" start="00:32:58.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""There's a higher level and a higher level.""" start="00:33:00.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And some of the lower levels are at the lower""" start="00:33:02.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""level, actually the higher level.""" start="00:33:04.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So you're beginning to create hierarchies""" start="00:33:06.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that are out of date as soon as you create""" start="00:33:10.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the hierarchy. So what is the idea of the""" start="00:33:14.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""tittle custom is that anything that comes to""" start="00:33:16.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""your mind you can throw in the custom the box""" start="00:33:18.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it literally means Box of notes and That's""" start="00:33:21.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""what I appreciate about it.""" start="00:33:26.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I create a I create a note pretty much for""" start="00:33:27.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""anything I do, but I've only used it for""" start="00:33:32.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""about a year and a half or so,""" start="00:33:35.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""or grown, maybe a year.""" start="00:33:38.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I can see that I'm coming up against the""" start="00:33:40.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Zettelkasten or note box problems,""" start="00:33:43.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""which is that I've got so many notes now that""" start="00:33:47.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""unless I have clever aliases,""" start="00:33:50.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""there is a chance that I might forget that I""" start="00:33:54.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: That's why you need meta notes.""" start="00:33:58.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: have a note. So I need a- Yes,""" start="00:33:56.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: In other words, a summarization is important,""" start="00:34:02.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""no matter what system you use.""" start="00:34:04.940" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: yes. But what I'm trying to say is that's a""" start="00:34:01.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""different approach than hierarchies,""" start="00:34:09.739" video="qanda-teaching" id="subtitle"]]
+[[!template text="""right? It's the same, it's the same,""" start="00:34:11.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's the same principle as a relational""" start="00:34:13.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""database versus a hierarchical database.""" start="00:34:16.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Same thing. So, yeah, and I've not used that.""" start="00:34:19.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I've not really used, actually I have cut""" start="00:34:23.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""meta notes, of course I do.""" start="00:34:25.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So notes that point to other notes.""" start="00:34:27.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Yes, of course. I use those.""" start="00:34:29.487" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I have not taught that part to the students""" start="00:34:35.412" video="qanda-teaching" id="subtitle"]]
+[[!template text="""because I do project work with the students,""" start="00:34:38.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but there's only so much time.""" start="00:34:45.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm already, I mean, already,""" start="00:34:46.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't think there's any class that where I""" start="00:34:48.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""am able to use more than 30% of my material.""" start="00:34:51.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And the reason is that when the students come""" start="00:34:55.880" video="qanda-teaching" id="subtitle"]]
+[[!template text="""to class, which is I pointed out in the""" start="00:34:57.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""video, they know so little.""" start="00:34:59.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And most of the students,""" start="00:35:01.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""at least in liberal arts,""" start="00:35:03.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""spend just too little time outside of class,""" start="00:35:04.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""getting there, you know,""" start="00:35:10.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""drilling down into the,""" start="00:35:11.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""into the, into the infrastructure,""" start="00:35:13.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""into the work. Only, only the best students""" start="00:35:14.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""do that. The ones that really catch fire.""" start="00:35:17.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Don't you have something like a course""" start="00:35:20.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""project at the end?""" start="00:35:22.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, I have course, not at the end.""" start="00:35:24.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I use Scrum. Maybe I shouldn't,""" start="00:35:25.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but I've used Scrum for many years.""" start="00:35:27.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I have course projects that start at the""" start="00:35:30.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""beginning and they do sprint reviews every 3""" start="00:35:32.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""or 4 weeks. So term end projects I find""" start="00:35:35.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""completely useless because the students do""" start="00:35:40.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the work at the very end of the term.""" start="00:35:43.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: no, by determined I mean they don't start at""" start="00:35:46.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the end, they just report at the end.""" start="00:35:49.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: And so I... Oh I use the IMRAD,""" start="00:35:45.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I use the IMRAD method.""" start="00:35:52.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So I use IMRAD, basically IMRAD plus,""" start="00:35:54.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""plus Scrum, right? So,""" start="00:35:58.700" video="qanda-teaching" id="subtitle"]]
+[[!template text="""So the first sprint review is introductory,""" start="00:36:00.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the research proposal,""" start="00:36:02.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the second 1 is about methodology,""" start="00:36:03.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the third 1 about results,""" start="00:36:05.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and the last 1 is their final presentation.""" start="00:36:06.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And so that's the way I manage the projects,""" start="00:36:09.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but that's about as much as I can do with""" start="00:36:11.160" video="qanda-teaching" id="subtitle"]]
+[[!template text="""them. It's a good idea.""" start="00:36:16.040" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I hadn't even thought about using Org-ROM""" start="00:36:17.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""with them, but to teach them that might be a""" start="00:36:19.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""good idea, actually.""" start="00:36:22.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, for Org-ROM, actually,""" start="00:36:25.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""what I found useful during my graduate is for""" start="00:36:27.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""literature review. Yes.""" start="00:36:32.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""The other part of our program that is not""" start="00:36:34.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""about your like noting down your thoughts is""" start="00:36:37.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""about writing about literature notes.""" start="00:36:40.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, that's a good idea actually.""" start="00:36:43.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And of course, I mean,""" start="00:36:45.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""there's more stuff that they should learn,""" start="00:36:46.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know, like another 1,""" start="00:36:48.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""since you mentioned literature,""" start="00:36:50.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you know, latex and Bibtech is another""" start="00:36:52.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""obvious extension of that.""" start="00:36:55.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But that is actually a good idea because the""" start="00:36:58.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""literature is what they have the hardest time""" start="00:37:01.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, like when you need to read like 50""" start="00:37:04.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""papers.""" start="00:37:06.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: with. Last term, since you mentioned that,""" start="00:37:03.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I had a really nice experience because 1 of""" start="00:37:12.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""our librarians, our digital librarian,""" start="00:37:16.220" video="qanda-teaching" id="subtitle"]]
+[[!template text="""came along and talked to the students,""" start="00:37:18.420" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and he taught me about a tool called""" start="00:37:19.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""litmap.com, which is basically,""" start="00:37:21.580" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know how it's implemented,""" start="00:37:24.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but it's basically a graph,""" start="00:37:25.460" video="qanda-teaching" id="subtitle"]]
+[[!template text="""a graph representation of papers organized by""" start="00:37:28.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""citation. It's very, very cool.""" start="00:37:31.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And the students who used to only find,""" start="00:37:35.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I don't know, 1 paper and otherwise,""" start="00:37:38.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""of course, 15 YouTube videos and 100 blogs,""" start="00:37:41.180" video="qanda-teaching" id="subtitle"]]
+[[!template text="""suddenly started finding and reading""" start="00:37:45.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""scientific papers. It was only because of""" start="00:37:49.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""this presentation. So you should take the,""" start="00:37:52.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think, I hope that is the right,""" start="00:37:55.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that's the right mode,""" start="00:37:58.320" video="qanda-teaching" id="subtitle"]]
+[[!template text="""litmaps. Okay, it's not litmap,""" start="00:38:00.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's called Litmaps. I'm gonna give you an""" start="00:38:02.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""example. I don't know if I can share this,""" start="00:38:05.640" video="qanda-teaching" id="subtitle"]]
+[[!template text="""if you can look at that.""" start="00:38:09.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But basically you create a,""" start="00:38:10.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""1 can use 1 of your papers as a seed,""" start="00:38:13.860" video="qanda-teaching" id="subtitle"]]
+[[!template text="""and then it will create a graph,""" start="00:38:16.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""graph representation of it for you.""" start="00:38:19.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And this is a powerful tool in itself.""" start="00:38:21.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""But what I'm saying is that the students""" start="00:38:25.400" video="qanda-teaching" id="subtitle"]]
+[[!template text="""suddenly, their use of literature and that""" start="00:38:27.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""citation goes to the roof.""" start="00:38:30.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And I've been waiting for that for probably""" start="00:38:33.080" video="qanda-teaching" id="subtitle"]]
+[[!template text="""15 years since I've started teaching.""" start="00:38:36.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's crazy. That's really cool.""" start="00:38:38.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Here is the same tool,""" start="00:38:46.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""it's called connected papers.""" start="00:38:47.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's based on the open source citation data.""" start="00:38:49.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I know that as well,""" start="00:38:54.140" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think.""" start="00:38:56.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: It's actually very useful when you just start""" start="00:39:00.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""learning the topic. It's like you find 1""" start="00:39:01.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""paper, then you look into the connections.""" start="00:39:03.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""You can quickly narrow down to the most""" start="00:39:05.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""cited, the core papers.""" start="00:39:08.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Of course. And that is exactly their""" start="00:39:10.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""situation, you know, and they're always at""" start="00:39:12.500" video="qanda-teaching" id="subtitle"]]
+[[!template text="""the beginning. As you go on,""" start="00:39:14.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you develop different ways,""" start="00:39:17.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""but for these complete beginners,""" start="00:39:18.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that's a good idea. Thank you so much for""" start="00:39:20.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""that. Okay, guys, anything else?""" start="00:39:22.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I've enjoyed the conversation,""" start="00:39:31.240" video="qanda-teaching" id="subtitle"]]
+[[!template text="""so you should definitely,""" start="00:39:32.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I'm going to take some of these things away.""" start="00:39:36.000" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Thank you so much for that.""" start="00:39:38.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Have you done, Yanta, have you done org mode""" start="00:39:42.340" video="qanda-teaching" id="subtitle"]]
+[[!template text="""documentations yourself on WOC?""" start="00:39:46.300" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Or do you have a sort of a favorite 1?""" start="00:39:48.900" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I mean, I often on walk,""" start="00:39:52.120" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I often use the documentation for code""" start="00:39:53.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""blocks. I used to when I started doing that""" start="00:39:56.740" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, because it's only on work.""" start="00:40:00.760" video="qanda-teaching" id="subtitle"]]
+[[!template text="""It's not part of the manual.""" start="00:40:02.800" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: for the first time. Yeah,""" start="00:39:59.620" video="qanda-teaching" id="subtitle"]]
+[[!template text="""yeah. And so I've used that a lot.""" start="00:40:05.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Have I done? Not really,""" start="00:40:07.780" video="qanda-teaching" id="subtitle"]]
+[[!template text="""mostly fixing the errors.""" start="00:40:09.720" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Okay.""" start="00:40:12.260" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I think that's a really good idea.""" start="00:40:14.280" video="qanda-teaching" id="subtitle"]]
+[[!template text="""All right. Well, thank you very much.""" start="00:40:16.440" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And it's great to be at this conference.""" start="00:40:19.960" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I think I'm going to get on.""" start="00:40:22.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 2]: Thanks for answering all the questions.""" start="00:40:27.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And for the talk, It was quite interesting to""" start="00:40:29.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""see our modules in actual teaching.""" start="00:40:32.560" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, thank you. And I got to thank Daniel""" start="00:40:36.200" video="qanda-teaching" id="subtitle"]]
+[[!template text="""German from Canada, the 1 of,""" start="00:40:38.600" video="qanda-teaching" id="subtitle"]]
+[[!template text="""I had him on 1 of the slides because he,""" start="00:40:40.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""he inspired me to do that.""" start="00:40:43.660" video="qanda-teaching" id="subtitle"]]
+[[!template text="""And, and I wouldn't be at the conference if I""" start="00:40:45.380" video="qanda-teaching" id="subtitle"]]
+[[!template text="""hadn't contacted him and said oh here's my""" start="00:40:47.540" video="qanda-teaching" id="subtitle"]]
+[[!template text="""paper and he said oh you should come to the""" start="00:40:49.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""conference and so that's why I came to the""" start="00:40:50.980" video="qanda-teaching" id="subtitle"]]
+[[!template text="""conference. Thank you very much and as they""" start="00:40:52.680" video="qanda-teaching" id="subtitle"]]
+[[!template text="""say keep in touch. You're welcome.""" start="00:40:58.480" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Okay bye-bye. You're welcome.""" start="00:41:04.100" video="qanda-teaching" id="subtitle"]]
+[[!template text="""Okay, bye-bye. Take a copy of the chat before""" start="00:41:05.060" video="qanda-teaching" id="subtitle"]]
+[[!template text="""you go, if you can. Happy weekend to just bye""" start="00:41:15.820" video="qanda-teaching" id="subtitle"]]
+[[!template text="""bye.""" start="00:41:22.360" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 0]: You are currently the only person in this""" start="00:41:34.920" video="qanda-teaching" id="subtitle"]]
+[[!template text="""conference.""" start="00:41:36.840" video="qanda-teaching" id="subtitle"]]
+[[!template text="""[Speaker 1]: You""" start="00:42:00.060" video="qanda-teaching" id="subtitle"]]
+
+Questions or comments? Please e-mail [birkenkrahe@lyon.edu](mailto:birkenkrahe@lyon.edu?subject=Comment%20for%20EmacsConf%202023%20teaching%3A%20Teaching%20computer%20and%20data%20science%20with%20literate%20programming%20tools)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/teaching-before.md b/2023/info/teaching-before.md
new file mode 100644
index 00000000..6a5fa970
--- /dev/null
+++ b/2023/info/teaching-before.md
@@ -0,0 +1,37 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-min talk; Q&A: BigBlueButton conference room
+Status: TO_INDEX_QA
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="teaching-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="teaching-mainVideo" data="""
+00:00.000 Introduction
+00:54.160 My interest in this topic
+02:08.040 What is data science?
+03:47.640 Computer science is a craft
+04:52.840 The problem
+05:36.560 The solution: Emacs + Org-mode
+06:24.120 Emacs configuration file
+07:30.360 Story + code = source + documentation
+08:22.040 What is literate programming?
+09:59.880 Emacs as a literate programming tool
+11:18.960 Case study: basic setup
+12:11.280 Emacs + Org-mode notebooks
+12:45.800 Onboarding: simplified Emacs tutorial
+13:40.840 Instruction + interaction
+14:48.720 Assignments + projects
+16:15.280 Overall results positive
+18:19.800 Conclusion & outlook
+
+"""]]<div></div>Duration: 19:27 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main.opus">Download --main.opus (14MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main.webm">Download --main.webm (44MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe.odp">Download .odp (15MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe.org">Download .org</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe.pdf">Download .pdf (2.9MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe.pptx">Download .pptx (15MB)</a></li><li><a href="https://toobnix.org/w/b4eLjcLo9vcewVTzrv95L8">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="teaching-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="teaching-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.opus"></audio></div><div></div>Duration: 42:23 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.json">Download --answers.json (1.8MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.opus">Download --answers.opus (22MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--answers.webm">Download --answers.webm (199MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/teaching-nav.md b/2023/info/teaching-nav.md
new file mode 100644
index 00000000..bf06e887
--- /dev/null
+++ b/2023/info/teaching-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/uni">Authoring and presenting university courses with Emacs and a full libre software stack</a>
+Next by track: <a href="/2023/talks/table">Who needs Excel? Managing your students qualifications with org-table</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/test-after.md b/2023/info/test-after.md
new file mode 100644
index 00000000..413f1f6d
--- /dev/null
+++ b/2023/info/test-after.md
@@ -0,0 +1,991 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="test-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:03.120" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Hi everyone! I'm Mats Lidell.""" start="00:00:03.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I'm going to talk about my journey""" start="00:00:07.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""writing test cases for GNU Hyperbole""" start="00:00:09.880" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and what I learned on the way.""" start="00:00:12.481" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So, why write tests for GNU Hyperbole?""" start="00:00:19.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""There is some background.""" start="00:00:24.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I'm the co-maintainer of GNU Hyperbole""" start="00:00:25.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""together with Bob Weiner. Bob is the author of the package.""" start="00:00:27.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The package is available through""" start="00:00:33.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the Emacs package manager and GNU Elpa""" start="00:00:34.681" video="mainVideo-test" id="subtitle"]]
+[[!template text="""if you would want to try it out.""" start="00:00:38.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The package has some age. I think it dates back to""" start="00:00:42.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""a first release around 1993, which is also""" start="00:00:46.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""when I got in contact with the package the first time.""" start="00:00:50.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I was a user of the package for many years.""" start="00:00:54.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Later, I became the maintainer of the package for the FSF.""" start="00:00:58.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""That was although I did not have""" start="00:01:03.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""much knowledge of Emacs Lisp,""" start="00:01:04.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and I still have a lot to learn.""" start="00:01:09.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""A few years ago, we started to work actively on the package,""" start="00:01:12.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with setting up goals and having meetings.""" start="00:01:15.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So my starting point is that I had experience""" start="00:01:20.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with test automation from development""" start="00:01:24.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""in C++, Java and Python""" start="00:01:27.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""using different x-unit frameworks like cppunit, junit.""" start="00:01:30.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""That was in my daytime work where""" start="00:01:37.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the technique of using pull requests""" start="00:01:40.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with changes backed up by tests were the daily routine.""" start="00:01:41.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It was really a requirement for a change to go in""" start="00:01:46.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to have supporting test cases.""" start="00:01:49.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I believe, a quite common setup and requirement these days.""" start="00:01:52.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I also had been an Emacs user for many years,""" start="00:01:58.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""but with focus on being a user.""" start="00:02:02.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So as I mentioned, I have limited Emacs Lisp knowledge.""" start="00:02:04.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""When we decided to start""" start="00:02:09.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to work actively on Hyperbole again,""" start="00:02:11.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""it was natural for me to look into""" start="00:02:13.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""raising the quality by adding unit tests.""" start="00:02:15.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This also goes hand in hand""" start="00:02:18.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with running these regularly as part of a build process.""" start="00:02:20.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""All in all, following the current best practice""" start="00:02:25.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""of software development.""" start="00:02:28.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""But since Hyperbole had no tests at all,""" start="00:02:31.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""it would not be enough just to add tests""" start="00:02:36.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""for new or changed functionality.""" start="00:02:38.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We wanted to add it even broader; ideally, everywhere.""" start="00:02:41.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So work started with adding tests here and there""" start="00:02:44.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""based on our gut feeling where it would be most useful.""" start="00:02:48.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This work is still ongoing.""" start="00:02:52.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So this is where my journey starts""" start="00:02:55.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with much functionality to test,""" start="00:02:58.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""no knowledge of what testing frameworks existed,""" start="00:03:00.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and not really knowing a lot about Emacs Lisp at all.""" start="00:03:03.360" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""ERT: Emacs Lisp Regression Testing""" start="00:03:11.160" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Luckily there is a package for writing tests in Emacs.""" start="00:03:11.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It is called ERT: Emacs Lisp Regression Testing.""" start="00:03:13.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It contains both support for defining tests and running them.""" start="00:03:17.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Defining a test is done with the macro `ert-deftest`.""" start="00:03:20.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In its simplest form, a test has a name, a doc string, and a body.""" start="00:03:24.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The doc string is where you typically can give""" start="00:03:28.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""a detailed description of the test""" start="00:03:31.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and has space for more info""" start="00:03:33.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""than what can be given in the test name.""" start="00:03:35.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The body is where all the interesting things happen.""" start="00:03:42.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It is here you prepare the test, run it and verify the outcome.""" start="00:03:45.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Schematically, it looks like this.""" start="00:03:51.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""You have the ert-deftest, you have the test name,""" start="00:03:54.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and the doc string, and then the body.""" start="00:04:00.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It is in the body where everything interesting happens.""" start="00:04:02.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The test is prepared, the function of the test is executed,""" start="00:04:06.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and the outcome of the test is evaluated.""" start="00:04:09.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Did the test succeed or not?""" start="00:04:13.120" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Assertions with `should`""" start="00:04:14.360" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""The verification of a test is performed with""" start="00:04:14.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""one or more so-called assertions.""" start="00:04:18.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In ERT, they are implemented""" start="00:04:21.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with the macro `should`""" start="00:04:25.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""together with a set of related macros.""" start="00:04:26.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""`should` takes a form as argument,""" start="00:04:33.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and if the form evaluates to nil,""" start="00:04:35.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the test has failed. So let's look at an example.""" start="00:04:37.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This simple test verifies that the function `+`""" start="00:04:48.581" video="mainVideo-test" id="subtitle"]]
+[[!template text="""can add the numbers 2 and 3 and get the result 5.""" start="00:04:51.920" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Running a test case""" start="00:04:56.920" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""So now we have defined a test case. How do we run it?""" start="00:04:56.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The ERT package has the function (or""" start="00:05:01.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""rather convenience alias) `ert`. It takes a test selector.""" start="00:05:03.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The test name works as a selector for running just one test.""" start="00:05:09.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So here we have the example. Let's evaluate it.""" start="00:05:19.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We define it and then we run it using ERT.""" start="00:05:27.901" video="mainVideo-test" id="subtitle"]]
+[[!template text="""As you see, we get prompted for a test selector""" start="00:05:34.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""but we only have one test case defined at the moment.""" start="00:05:42.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It's the example 0. So let's hit RET.""" start="00:05:46.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""As you see here, we get some output""" start="00:05:55.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""describing what we have just done.""" start="00:05:58.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""There is one test case it has passed, zero failed,""" start="00:06:01.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""zero skipped, total 1 of 1 test case""" start="00:06:04.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and some time stamps for the execution.""" start="00:06:07.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We also see this green mark here indicating one test case""" start="00:06:14.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and that it was successful.""" start="00:06:18.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""For inspecting the test, we can hit the letter `l`""" start="00:06:23.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""which shows all the `should` forms""" start="00:06:29.660" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that was executed during this test case.""" start="00:06:32.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So here we see that we have the `should`,""" start="00:06:37.780" video="mainVideo-test" id="subtitle"]]
+[[!template text="""one `should` executed, and we see the form equals to 2,""" start="00:06:39.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and it was 5 equals to 5.""" start="00:06:48.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So a good example of a successful test case.""" start="00:06:49.800" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Debug a test""" start="00:06:54.560" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""So now we've seen how we can run a test case.""" start="00:06:54.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Can we debug it? Yes. For debugging a test case,""" start="00:06:57.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the `ert-deftest` can be set up using `edebug-defun`,""" start="00:07:03.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""just as a function or macro is set up""" start="00:07:07.940" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or instrumented for debugging. So let's try that.""" start="00:07:10.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So we try `edebug-defun` here.""" start="00:07:18.820" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Now it's instrumented for debugging.""" start="00:07:24.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And we run it, `ert`, and we're inside the debugger,""" start="00:07:28.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and we can inspect here what's happening.""" start="00:07:35.660" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Step through it and yes it succeeded just as before.""" start="00:07:40.680" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Commercial break: Hyperbole""" start="00:07:50.380" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""It's time for a commercial break!""" start="00:07:50.380" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Hyperbole itself can help with running tests""" start="00:07:56.880" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and also help with running them in debug mode.""" start="00:08:00.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""That is because hyperbole identifies the `ert-deftest`""" start="00:08:03.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""as an implicit button. An implicit button is basically""" start="00:08:08.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""a string or pattern""" start="00:08:12.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that Hyperbole has assigned some meaning to.""" start="00:08:13.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""For the string `ert-deftest`, it is to run the test case.""" start="00:08:16.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""You activate the button with the action-key.""" start="00:08:19.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The standard binding is the middle mouse button,""" start="00:08:24.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or from the keyboard, M-RET.""" start="00:08:27.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So let's try that.""" start="00:08:33.041" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We move the cursor here and then we type M-RET.""" start="00:08:34.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And boom, the test case was executed.""" start="00:08:42.220" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And to run it in debug mode we type C-u M-RET""" start="00:08:47.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to get the assist key, and then we're in the debugger.""" start="00:08:54.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So that's pretty useful and convenient.""" start="00:08:57.720" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Instrument function on the fly""" start="00:09:10.480" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""A related useful feature here is the step-in functionality""" start="00:09:10.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""bound to the letter i in `debug-mode`.""" start="00:09:13.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It allows you to step into a function""" start="00:09:16.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and continue debugging from there.""" start="00:09:18.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""For the cases where your test does not do what you want,""" start="00:09:20.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""looking at what happens in the function of the test""" start="00:09:22.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""can be really useful. Let's try that with another example.""" start="00:09:25.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So here we have two helper functions, one `f1-add`,""" start="00:09:37.260" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that use the built-in `+` function""" start="00:09:43.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and then we have `my-add` that uses that function.""" start="00:09:47.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So we're going to test myadd.""" start="00:09:52.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And then let's run this.""" start="00:09:59.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Let's run this using hyperbole in debug mode""" start="00:10:02.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""C-u M-RET. We're in the debugger again,""" start="00:10:05.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and let's step up front to my function under test""" start="00:10:10.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and then press `i` for getting it instrumented""" start="00:10:15.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and going into it for debugging.""" start="00:10:19.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And here we can expect that it's getting""" start="00:10:23.020" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the arguments 1 and 3,""" start="00:10:25.140" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and it returns the result 4 as expected.""" start="00:10:26.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And yes, of course, our test case will then succeed.""" start="00:10:31.000" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Mocking""" start="00:10:39.120" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""The next tool in our toolbox is mocking.""" start="00:10:39.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Mocking is needed when we want to simulate the response""" start="00:10:41.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""from a function used by the function under test.""" start="00:10:46.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""That is the implementation of the function.""" start="00:10:49.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This could be for various reasons.""" start="00:10:53.140" video="mainVideo-test" id="subtitle"]]
+[[!template text="""One example could be because it would be hard or impossible""" start="00:10:56.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""in the test setup to get the behavior you want to test for,""" start="00:11:00.880" video="mainVideo-test" id="subtitle"]]
+[[!template text="""like an external error case.""" start="00:11:04.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""But the mock can also be used to verify""" start="00:11:06.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that the function is called with a specific argument.""" start="00:11:08.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We can view it as a way to isolate the function on the test""" start="00:11:11.620" video="mainVideo-test" id="subtitle"]]
+[[!template text="""from its dependencies.""" start="00:11:14.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So in order to test the function in isolation,""" start="00:11:16.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""we need to cut out any dependencies to external behavior.""" start="00:11:18.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Most obvious would be dependencies to external resources,""" start="00:11:22.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""such as web pages. As an example:""" start="00:11:25.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Hyperbole contains functionality to link you to""" start="00:11:27.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""social media resources and other resources on the net.""" start="00:11:30.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Testing that would require the test system to call out""" start="00:11:34.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to the social media resources""" start="00:11:37.900" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and would depend on it being available, etc.""" start="00:11:39.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Nothing technically stops a test case""" start="00:11:43.540" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to depend on the external resources,""" start="00:11:45.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""but would, if nothing else, be flaky or slow.""" start="00:11:47.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It could be part of an end-to-end suite""" start="00:11:51.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""where we want to test that it works all the way.""" start="00:11:53.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In this case, we want to look at the isolated case""" start="00:11:57.180" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that can be run with no dependency on external resources.""" start="00:11:59.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""What you want to do is to replace the function with a mock""" start="00:12:04.100" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that behaves as the real function would do.""" start="00:12:06.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The package I have found""" start="00:12:10.340" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and have used for mocking is `el-mock`.""" start="00:12:11.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The workhorse in this package is the `with-mock` macro.""" start="00:12:14.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It looks like this: `with-mock` followed by a body.""" start="00:12:21.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In the execution of the body, stubs and mocks""" start="00:12:26.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""defined in the body is respected.""" start="00:12:30.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Let's look at some examples to make that clearer.""" start="00:12:32.900" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In this case, we have the macro `with-mock`.""" start="00:12:39.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It works so that the expression""" start="00:12:42.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""`stub + => 10` is interpreted""" start="00:12:43.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""so that the function `+` will be replaced with the stub.""" start="00:12:48.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The stub will return 10 regardless how it is called.""" start="00:12:51.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Note that the stub function""" start="00:12:56.780" video="mainVideo-test" id="subtitle"]]
+[[!template text="""does not have to be called at this level""" start="00:12:58.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""but could be called at any level in the call chain.""" start="00:13:00.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""By knowing how the function under test is implemented""" start="00:13:02.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and how the implementation works,""" start="00:13:07.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""you can find function calls you want to mock""" start="00:13:09.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to force certain behavior that you want to test,""" start="00:13:11.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or to avoid calls to external resources, slow calls, etc.""" start="00:13:15.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Simply isolate the function under test""" start="00:13:19.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and simulate its environment.""" start="00:13:21.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Mock is a little bit more sophisticated""" start="00:13:26.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and depends on the arguments""" start="00:13:28.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that the mock function is called with.""" start="00:13:30.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Or more precise, it is checked""" start="00:13:31.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""after the `with-mock` clause""" start="00:13:33.848" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that the arguments match the arguments it was called with""" start="00:13:35.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or even if it was called at all.""" start="00:13:38.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""If it is called with other arguments""" start="00:13:39.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""there will be an error,""" start="00:13:41.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and if it's not called, it is also an error.""" start="00:13:43.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So this way, we are sure that the function""" start="00:13:46.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""we were expected to be called actually was called.""" start="00:13:48.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""An important piece of the testing.""" start="00:13:51.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So we are sure that the mock we have provided""" start="00:13:53.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""actually is triggered by the test case.""" start="00:13:56.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So here we have an example of `with-mock`""" start="00:14:04.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""where the `f1-add` function is mocked,""" start="00:14:08.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""so that if it's called with 2 and 3 as arguments,""" start="00:14:18.880" video="mainVideo-test" id="subtitle"]]
+[[!template text="""it will return 10. Then we have a test case""" start="00:14:22.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""where we try the `my-add` function,""" start="00:14:24.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""as you might remember, and call that with 2 and 3""" start="00:14:28.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and see that it should also then return 10""" start="00:14:30.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""because it's using `f1-add`.""" start="00:14:32.800" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""cl-letf""" start="00:14:41.240" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Moving over to `cl-letf`.""" start="00:14:41.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In rare occasions, the limitations of `el-mock` means""" start="00:14:44.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""you would want to implement a full-fledged function""" start="00:14:47.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to be used under test.""" start="00:14:50.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Then the macro `cl-letf` can be useful.""" start="00:14:52.980" video="mainVideo-test" id="subtitle"]]
+[[!template text="""However, you need to handle the case yourself""" start="00:14:55.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""if the function was not called.""" start="00:14:57.880" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Looking through the test cases where I have used `cl-letf`,""" start="00:15:00.100" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I think most can be implemented using plain mocking.""" start="00:15:03.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Cases left is where the args to the mock might be different""" start="00:15:06.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""due to environment issues.""" start="00:15:11.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In that case, a static mock will not work.""" start="00:15:13.740" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Hooks""" start="00:15:24.100" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Another trick is that functions that uses hooks.""" start="00:15:24.100" video="mainVideo-test" id="subtitle"]]
+[[!template text="""You can overload or replace the hooks to do the testing.""" start="00:15:30.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So you can use the hook function just to do the verification""" start="00:15:35.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and not do anything useful in the hook.""" start="00:15:40.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Also, here you need to be careful""" start="00:15:43.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to make sure the test handler is called and nothing else.""" start="00:15:45.080" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Side effects and initial buffer state""" start="00:15:55.720" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""So far we have been talking about testing""" start="00:15:55.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and what the function returns.""" start="00:15:57.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In the best of words, we have a pure function""" start="00:15:59.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that only depends on its arguments""" start="00:16:01.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and produces no side effects.""" start="00:16:02.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Many operations produce side effects""" start="00:16:04.940" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or operate on the contents of buffers""" start="00:16:06.900" video="mainVideo-test" id="subtitle"]]
+[[!template text="""such as writing a message in the message buffer,""" start="00:16:09.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""change the state of a buffer, move point etc.""" start="00:16:12.380" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Hyperbole is not an exception. Quite the contrary.""" start="00:16:15.660" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Much of the functions creating links""" start="00:16:18.860" video="mainVideo-test" id="subtitle"]]
+[[!template text="""are just about updating buffers.""" start="00:16:20.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This poses a special problem for tests.""" start="00:16:24.421" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The test gets longer""" start="00:16:28.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""since you need to create buffers and files,""" start="00:16:29.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""initialize the contents.""" start="00:16:31.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Verifying the outcome becomes trickier""" start="00:16:33.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""since you need to make sure you look at the right place.""" start="00:16:35.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""At the end of the test, you need to clean up,""" start="00:16:39.020" video="mainVideo-test" id="subtitle"]]
+[[!template text="""both for not leaving a lot of garbage""" start="00:16:41.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""in buffers and files around,""" start="00:16:43.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and even worse, not cause later tests""" start="00:16:45.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to depend on the leftovers from the other tests.""" start="00:16:48.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Here are some functions and variables""" start="00:16:50.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I have found useful for this.""" start="00:16:53.080" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""with-temp-buffer""" start="00:17:05.100" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""For creating tests: `with-temp-buffer`:""" start="00:17:05.100" video="mainVideo-test" id="subtitle"]]
+[[!template text="""it provides you a temp buffer that you visit,""" start="00:17:09.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and afterwards, there is no need to clean up.""" start="00:17:11.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This is the first choice if that is all you need.""" start="00:17:13.720" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""make-temp-file""" start="00:17:16.520" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""`make-temp-file`: If you need a file,""" start="00:17:16.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""this is the function to use.""" start="00:17:20.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It creates a temp file or a directory.""" start="00:17:21.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The file can be filled with initial contents.""" start="00:17:24.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This needs to be cleaned up after a test.""" start="00:17:26.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Moving on to verifying and debugging:""" start="00:17:31.020" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""buffer-string""" start="00:17:33.288" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""`buffer-string`: returns the full contents""" start="00:17:33.288" video="mainVideo-test" id="subtitle"]]
+[[!template text="""of the buffer as a string.""" start="00:17:38.248" video="mainVideo-test" id="subtitle"]]
+[[!template text="""That can sound a bit voluminous,""" start="00:17:39.500" video="mainVideo-test" id="subtitle"]]
+[[!template text="""but since tests are normally small, this often works well.""" start="00:17:41.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I have in particular found good use of comparing""" start="00:17:46.140" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the contents of buffers with the empty string.""" start="00:17:48.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""That would give an error, but as we have seen""" start="00:17:50.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with the output produced by the `should` assertion,""" start="00:17:53.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""this is almost like a print statement""" start="00:17:56.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and can be compared with the good old technique""" start="00:17:58.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""of debugging with print statements.""" start="00:18:01.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""There might be other ways to do the same""" start="00:18:04.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""as we saw with debugging.""" start="00:18:06.248" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""buffer-name""" start="00:18:09.920" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""buffer-name: Getting the buffer name is good""" start="00:18:09.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to verify what buffer we are looking at.""" start="00:18:13.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I often found it useful to check""" start="00:18:16.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that my assumptions on what buffer I am acting on""" start="00:18:18.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""is correct by adding `should` clauses""" start="00:18:21.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""in the middle of the test execution""" start="00:18:23.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or after preparing the test input.""" start="00:18:25.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Sometimes Emacs can switch buffers in strange ways,""" start="00:18:27.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""maybe because the test case is badly written,""" start="00:18:31.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and making sure your assumptions are correct""" start="00:18:34.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""is a good sanity check.""" start="00:18:37.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Even the ert package does""" start="00:18:40.340" video="mainVideo-test" id="subtitle"]]
+[[!template text="""some buffer and windows manipulation for its reporting""" start="00:18:42.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that I have not fully learned how to master,""" start="00:18:44.880" video="mainVideo-test" id="subtitle"]]
+[[!template text="""so assertion for checking the sanity of the test is good.""" start="00:18:47.488" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""major-mode""" start="00:18:51.980" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Finally, `major-mode`: Verify the buffer has the proper mode.""" start="00:18:51.980" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Can also be very useful and is a good sanity check.""" start="00:18:55.680" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""unwind-protect""" start="00:19:02.680" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Finally, cleaning up. `unwind-protect`.""" start="00:19:02.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The tool for cleaning up is the `unwind-protect` form""" start="00:19:06.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""which ensures that the unwind forms""" start="00:19:09.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""always are executed regardless of the outcome of the body.""" start="00:19:12.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So if your test fails, you are sure the cleanup is executed.""" start="00:19:15.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Let's look at unwind-protect together with""" start="00:19:20.420" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the temporary file example. Many tests look like this.""" start="00:19:22.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""You create some resource, you call `unwind-protect`,""" start="00:19:30.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""you do the test, and then afterwards you do the cleanup.""" start="00:19:35.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The cleanup for a file and a buffer is so common,""" start="00:19:42.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""so I have created a helper for that.""" start="00:19:46.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It looks like this.""" start="00:19:51.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The trick with the `buffer-modified` flag""" start="00:19:56.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""is to avoid getting prompted""" start="00:19:59.180" video="mainVideo-test" id="subtitle"]]
+[[!template text="""for killing a buffer that is not saved.""" start="00:20:00.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The test buffers are often in the state""" start="00:20:03.220" video="mainVideo-test" id="subtitle"]]
+[[!template text="""where they have not been saved but modified.""" start="00:20:05.440" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Input, with-simulated-input""" start="00:20:15.100" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Another problem for tests are input.""" start="00:20:15.100" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In the middle of execution a function""" start="00:20:19.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""might want to have some interaction with the user.""" start="00:20:21.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Testing this poses a problem, not only in that""" start="00:20:24.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""the input matters, but also as how even to get the test case""" start="00:20:26.960" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to recognize the input!?""" start="00:20:31.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Ideally the tests are run in batch mode,""" start="00:20:34.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""which in some sense means no user interaction.""" start="00:20:36.040" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In batch mode, there is no event loop running.""" start="00:20:38.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Fortunately, there is a package `with-simulated-input`""" start="00:20:43.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that gets you around these issues.""" start="00:20:47.180" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This is a macro that allows us""" start="00:20:53.260" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to define a set of characters""" start="00:20:55.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that will be read by the function under the test,""" start="00:20:57.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and all of this works in batch mode. It looks like this.""" start="00:20:59.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We have `with-simulated-input`,""" start="00:21:02.580" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and then a string of characters, and then a body.""" start="00:21:04.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The form takes a string of keys""" start="00:21:09.840" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and runs the rest of the body,""" start="00:21:11.648" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and if there are input required,""" start="00:21:13.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""it is picked from the string of keys.""" start="00:21:15.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""In our example, the `read-string` call""" start="00:21:18.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""will read up until RET,""" start="00:21:20.422" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and then return the characters read.""" start="00:21:21.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""As you see in the example, space needs to be provided""" start="00:21:26.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""by the string SPC, as return by the string RET.""" start="00:21:29.640" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Running all tests""" start="00:21:38.460" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""So now we have seen ways to create test cases""" start="00:21:38.460" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and even make it possible to run some of them""" start="00:21:40.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that has I/O in batch mode.""" start="00:21:43.220" video="mainVideo-test" id="subtitle"]]
+[[!template text="""But the initial goal was to run them all at once.""" start="00:21:44.680" video="mainVideo-test" id="subtitle"]]
+[[!template text="""How do you do that?""" start="00:21:47.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Let's go back to the `ert` command.""" start="00:21:48.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""It prompts for a test selector.""" start="00:21:51.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""If we give it the selector `t`,""" start="00:21:53.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""it will run all tests we have currently defined.""" start="00:21:56.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Let's try that with the subset of the Hyperbole tests.""" start="00:21:59.260" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Here is the test folder in the Hyperbole directory.""" start="00:22:05.780" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Let's go up here and load all the demo tests.""" start="00:22:09.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And then try to run `ert`.""" start="00:22:18.820" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Now we see that we have a bunch of test cases.""" start="00:22:21.208" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We can all run them individually,""" start="00:22:26.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""but we can run them with `t` instead.""" start="00:22:27.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We will run them all at once.""" start="00:22:31.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So now, ert is executing all our test cases.""" start="00:22:35.460" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So here we have a nice green display""" start="00:22:51.420" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with all the test cases.""" start="00:22:57.080" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Batch mode""" start="00:23:03.220" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""So that was fine, but we were still running it manually""" start="00:23:03.220" video="mainVideo-test" id="subtitle"]]
+[[!template text="""by calling ert. How could we run it from the command line?""" start="00:23:08.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Ert comes with functions for running it in batch mode.""" start="00:23:17.180" video="mainVideo-test" id="subtitle"]]
+[[!template text="""For Hyperbole, we use `make` for repetitive tasks.""" start="00:23:21.500" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So we have a make target""" start="00:23:25.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that uses the ert batch functionality,""" start="00:23:27.120" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and this is the line from the Makefile.""" start="00:23:29.280" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This is a bit detailed,""" start="00:23:33.260" video="mainVideo-test" id="subtitle"]]
+[[!template text="""but you see that we have a part here""" start="00:23:35.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""where we load the test dependencies.""" start="00:23:37.540" video="mainVideo-test" id="subtitle"]]
+[[!template text="""For getting the packages""" start="00:23:40.780" video="mainVideo-test" id="subtitle"]]
+[[!template text="""such as `el-mock` and `with-simulated-input` etc. loaded.""" start="00:23:43.521" video="mainVideo-test" id="subtitle"]]
+[[!template text="""We also have... I also want to point out here the call to""" start="00:23:48.460" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or the setting of `auto-save-default` to `nil`""" start="00:23:53.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to get away with the prompt for excessive backup files""" start="00:23:58.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""that can pile up after running the tests a few times.""" start="00:24:02.440" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Skipping tests""" start="00:24:05.060" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""Even with the help of simulated input,""" start="00:24:05.060" video="mainVideo-test" id="subtitle"]]
+[[!template text="""not all tests can be run in batch mode.""" start="00:24:06.880" video="mainVideo-test" id="subtitle"]]
+[[!template text="""They would simply not work there""" start="00:24:08.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and have to be run in an interactive Emacs""" start="00:24:10.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with the running event loop.""" start="00:24:12.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""One trick still to be able to use batch mode for automation""" start="00:24:14.180" video="mainVideo-test" id="subtitle"]]
+[[!template text="""is to put the guard at the top of each test case""" start="00:24:17.920" video="mainVideo-test" id="subtitle"]]
+[[!template text="""as the first thing to be executed,""" start="00:24:20.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""so that it kicks in before anything else and stops Emacs""" start="00:24:22.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to try to run the test case.""" start="00:24:25.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Now, it looks like this: `(skip-unless (not noninteractive))`.""" start="00:24:27.200" video="mainVideo-test" id="subtitle"]]
+[[!template text="""So when ert sees that the test should be skipped, it skips it""" start="00:24:35.520" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and makes a note of that,""" start="00:24:38.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""so you will see how many tests that have been skipped.""" start="00:24:40.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Too bad. We have a number of test cases defined,""" start="00:24:44.580" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and to run them, we need to run them manually. Well sort of.""" start="00:24:47.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""Not being able to run all tests easily""" start="00:24:51.360" video="mainVideo-test" id="subtitle"]]
+[[!template text="""is a bit counterproductive""" start="00:24:53.808" video="mainVideo-test" id="subtitle"]]
+[[!template text="""since our goal is to run all tests.""" start="00:24:58.420" video="mainVideo-test" id="subtitle"]]
+[[!template text="""There is however no ert function to run tests in batch mode""" start="00:25:01.000" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with an interactive Emacs.""" start="00:25:04.720" video="mainVideo-test" id="subtitle"]]
+[[!template text="""The closest I have got is either""" start="00:25:06.780" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to start the Emacs from the command line""" start="00:25:08.480" video="mainVideo-test" id="subtitle"]]
+[[!template text="""calling the ert function as we just have seen,""" start="00:25:10.080" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and then killing it manually when done;""" start="00:25:12.440" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or add a function to extract the contents of the ERT buffer""" start="00:25:14.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""when done and echo it to standard output.""" start="00:25:19.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""This is how it looks in the Makefile""" start="00:25:24.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to get the behavior of cutting and paste,""" start="00:25:27.801" video="mainVideo-test" id="subtitle"]]
+[[!template text="""getting the ERT output into a file""" start="00:25:31.208" video="mainVideo-test" id="subtitle"]]
+[[!template text="""so we can then kill Emacs""" start="00:25:34.581" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and spit out the content of the ERT buffer.""" start="00:25:36.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""One final word here is that""" start="00:25:44.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""when you run this in a continuous integration pipeline,""" start="00:25:47.740" video="mainVideo-test" id="subtitle"]]
+[[!template text="""you might not have a TTY for getting Emacs to start,""" start="00:25:54.560" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and that is then another problem""" start="00:25:59.400" video="mainVideo-test" id="subtitle"]]
+[[!template text="""with getting the interactive mode.""" start="00:26:03.201" video="mainVideo-test" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:26:08.460" video="mainVideo-test" id="subtitle"]]
+
+[[!template text="""We have reached the end of the talk.""" start="00:26:08.460" video="mainVideo-test" id="subtitle"]]
+[[!template text="""If you have any new ideas""" start="00:26:11.121" video="mainVideo-test" id="subtitle"]]
+[[!template text="""or have some suggestions for improvements,""" start="00:26:14.160" video="mainVideo-test" id="subtitle"]]
+[[!template text="""feel free to reach out""" start="00:26:16.760" video="mainVideo-test" id="subtitle"]]
+[[!template text="""because I am still on the learning curve of writing,""" start="00:26:18.240" video="mainVideo-test" id="subtitle"]]
+[[!template text="""how to write good test cases.""" start="00:26:21.101" video="mainVideo-test" id="subtitle"]]
+[[!template text="""If you look at the test cases we have in Hyperbole""" start="00:26:25.300" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and you think they might contradict what I am saying here,""" start="00:26:27.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""it is OK. It is probably right.""" start="00:26:29.800" video="mainVideo-test" id="subtitle"]]
+[[!template text="""I have changed the style as I go""" start="00:26:32.580" video="mainVideo-test" id="subtitle"]]
+[[!template text="""and we have not yet refactored all tests""" start="00:26:34.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""to benefit from new designs.""" start="00:26:36.640" video="mainVideo-test" id="subtitle"]]
+[[!template text="""That is also the beauty of the test case.""" start="00:26:38.580" video="mainVideo-test" id="subtitle"]]
+[[!template text="""As long as it serves its purpose, it is not terrible""" start="00:26:40.600" video="mainVideo-test" id="subtitle"]]
+[[!template text="""if it is not optimal or not having the best style.""" start="00:26:43.320" video="mainVideo-test" id="subtitle"]]
+[[!template text="""And yes, thanks for listening. Bye.""" start="00:26:47.800" video="mainVideo-test" id="subtitle"]]
+
+<a name="test-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Do we have any listeners?""" start="00:00:08.740" video="qanda-test" id="subtitle"]]
+[[!template text="""It's you and I. I have a question.""" start="00:00:13.340" video="qanda-test" id="subtitle"]]
+[[!template text="""How many tests do you have for hyperbole and""" start="00:00:16.420" video="qanda-test" id="subtitle"]]
+[[!template text="""How would you rate the test coverage compared""" start="00:00:18.800" video="qanda-test" id="subtitle"]]
+[[!template text="""to other packages? Well,""" start="00:00:21.279" video="qanda-test" id="subtitle"]]
+[[!template text="""that's a tricky 1. Shall I spell it out loud""" start="00:00:28.279" video="qanda-test" id="subtitle"]]
+[[!template text="""and then maybe type it at the same time?""" start="00:00:31.100" video="qanda-test" id="subtitle"]]
+[[!template text="""So, I believe it's around like more than 300""" start="00:00:36.420" video="qanda-test" id="subtitle"]]
+[[!template text="""test cases now. But I cannot compare the test""" start="00:00:43.660" video="qanda-test" id="subtitle"]]
+[[!template text="""coverage to any other""" start="00:00:45.220" video="qanda-test" id="subtitle"]]
+[[!template text="""other package. Maybe I can type that later.""" start="00:01:00.020" video="qanda-test" id="subtitle"]]
+[[!template text="""What do you say, Badal?""" start="00:01:01.560" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: package. I have no knowledge of any Yeah,""" start="00:01:02.660" video="qanda-test" id="subtitle"]]
+[[!template text="""sure, yeah, that's totally fine.""" start="00:01:03.840" video="qanda-test" id="subtitle"]]
+[[!template text="""Feel free to just answer them with voice.""" start="00:01:05.660" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, yeah. There's another question.""" start="00:01:08.720" video="qanda-test" id="subtitle"]]
+[[!template text="""1 small suggestion to me,""" start="00:01:10.520" video="qanda-test" id="subtitle"]]
+[[!template text="""should means optional,""" start="00:01:11.440" video="qanda-test" id="subtitle"]]
+[[!template text="""where shall or must means required.""" start="00:01:13.660" video="qanda-test" id="subtitle"]]
+[[!template text="""Not sure if it is too late to make a major""" start="00:01:15.940" video="qanda-test" id="subtitle"]]
+[[!template text="""grammar change like that.""" start="00:01:17.220" video="qanda-test" id="subtitle"]]
+[[!template text="""Very nice presentation.""" start="00:01:18.080" video="qanda-test" id="subtitle"]]
+[[!template text="""So thanks for presentation,""" start="00:01:19.840" video="qanda-test" id="subtitle"]]
+[[!template text="""but the package ERT, well,""" start="00:01:24.380" video="qanda-test" id="subtitle"]]
+[[!template text="""it's not something that we have come up with.""" start="00:01:27.920" video="qanda-test" id="subtitle"]]
+[[!template text="""It's a standard package.""" start="00:01:28.920" video="qanda-test" id="subtitle"]]
+[[!template text="""So I believe it has been around for a long""" start="00:01:32.320" video="qanda-test" id="subtitle"]]
+[[!template text="""time. So, but please feel free to make""" start="00:01:37.760" video="qanda-test" id="subtitle"]]
+[[!template text="""suggestions and maybe you can,""" start="00:01:39.680" video="qanda-test" id="subtitle"]]
+[[!template text="""you know, like do a copy or like an alias for""" start="00:01:43.660" video="qanda-test" id="subtitle"]]
+[[!template text="""that. If you believe it makes more sense for""" start="00:01:46.080" video="qanda-test" id="subtitle"]]
+[[!template text="""your test cases to have that instead.""" start="00:01:48.080" video="qanda-test" id="subtitle"]]
+[[!template text="""And then we have another question here.""" start="00:01:53.540" video="qanda-test" id="subtitle"]]
+[[!template text="""For your info, you may find this helpful for""" start="00:01:55.540" video="qanda-test" id="subtitle"]]
+[[!template text="""running MX test lint both from a command line""" start="00:01:58.780" video="qanda-test" id="subtitle"]]
+[[!template text="""and from within MX with a transit menu.""" start="00:02:01.220" video="qanda-test" id="subtitle"]]
+[[!template text="""GitHub alpha papa make sure,""" start="00:02:03.600" video="qanda-test" id="subtitle"]]
+[[!template text="""yes. It also works on remote CI.""" start="00:02:06.760" video="qanda-test" id="subtitle"]]
+[[!template text="""Yeah, thank you, Alpha Papa.""" start="00:02:08.240" video="qanda-test" id="subtitle"]]
+[[!template text="""I think I've looked into that,""" start="00:02:10.580" video="qanda-test" id="subtitle"]]
+[[!template text="""but we haven't made any use of that.""" start="00:02:13.440" video="qanda-test" id="subtitle"]]
+[[!template text="""But maybe you'll inspire me to give it""" start="00:02:17.920" video="qanda-test" id="subtitle"]]
+[[!template text="""another look.""" start="00:02:18.400" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: Hey guys.""" start="00:02:29.260" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: I remember, I recognize that voice.""" start="00:02:34.120" video="qanda-test" id="subtitle"]]
+[[!template text="""Hi, Bob. Hey, how are you?""" start="00:02:37.160" video="qanda-test" id="subtitle"]]
+[[!template text="""Congratulations, man. Thanks,""" start="00:02:40.240" video="qanda-test" id="subtitle"]]
+[[!template text="""Hugh. Thank you. I have another question""" start="00:02:43.020" video="qanda-test" id="subtitle"]]
+[[!template text="""here. It is easy to run ad hoc tests inside""" start="00:02:45.520" video="qanda-test" id="subtitle"]]
+[[!template text="""an Emacs session given the command line""" start="00:02:48.400" video="qanda-test" id="subtitle"]]
+[[!template text="""scripts you need to run to get the batch test""" start="00:02:51.180" video="qanda-test" id="subtitle"]]
+[[!template text="""session running? You said it's to run an""" start="00:02:54.960" video="qanda-test" id="subtitle"]]
+[[!template text="""ad-hoc test. I'm not sure I understand that""" start="00:03:05.680" video="qanda-test" id="subtitle"]]
+[[!template text="""question. Yes, please.""" start="00:03:14.440" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: Maybe I can rephrase. Sure.""" start="00:03:15.660" video="qanda-test" id="subtitle"]]
+[[!template text="""So I think what I understand is that since""" start="00:03:19.900" video="qanda-test" id="subtitle"]]
+[[!template text="""you have to use some of these command lines""" start="00:03:22.540" video="qanda-test" id="subtitle"]]
+[[!template text="""scripts to get a batch test session running,""" start="00:03:25.440" video="qanda-test" id="subtitle"]]
+[[!template text="""is it easy to run ad hoc tests in an Emacs""" start="00:03:28.780" video="qanda-test" id="subtitle"]]
+[[!template text="""session or does that, like in your""" start="00:03:30.700" video="qanda-test" id="subtitle"]]
+[[!template text="""experience, has that been difficult?""" start="00:03:32.040" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, from the command line,""" start="00:03:36.820" video="qanda-test" id="subtitle"]]
+[[!template text="""if you look at the command line,""" start="00:03:38.660" video="qanda-test" id="subtitle"]]
+[[!template text="""you'll see that it's only like a few image""" start="00:03:44.160" video="qanda-test" id="subtitle"]]
+[[!template text="""functions to call to get that behavior to run""" start="00:03:46.480" video="qanda-test" id="subtitle"]]
+[[!template text="""the batch tests. So I think we made some""" start="00:03:55.080" video="qanda-test" id="subtitle"]]
+[[!template text="""support function for that in hyperbole.""" start="00:03:57.100" video="qanda-test" id="subtitle"]]
+[[!template text="""So it's not, I don't think it's possible out""" start="00:04:02.800" video="qanda-test" id="subtitle"]]
+[[!template text="""of the box to do it, but it's not complicated""" start="00:04:05.540" video="qanda-test" id="subtitle"]]
+[[!template text="""to do it.""" start="00:04:08.060" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: You can define a test anytime,""" start="00:04:12.190" video="qanda-test" id="subtitle"]]
+[[!template text="""right? Just like a new function.""" start="00:04:14.780" video="qanda-test" id="subtitle"]]
+[[!template text="""So that's ad hoc. You just write your test""" start="00:04:18.899" video="qanda-test" id="subtitle"]]
+[[!template text="""and you can run it.""" start="00:04:20.019" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, yeah, I mean, of course,""" start="00:04:22.900" video="qanda-test" id="subtitle"]]
+[[!template text="""but I got the impression it was about running""" start="00:04:25.900" video="qanda-test" id="subtitle"]]
+[[!template text="""all your tests like we did with the command""" start="00:04:28.620" video="qanda-test" id="subtitle"]]
+[[!template text="""line. Well, so the question is more about how""" start="00:04:35.740" video="qanda-test" id="subtitle"]]
+[[!template text="""would you run all your test cases from within""" start="00:04:38.260" video="qanda-test" id="subtitle"]]
+[[!template text="""Emacs? And the easy answer to that is""" start="00:04:44.860" video="qanda-test" id="subtitle"]]
+[[!template text="""actually you load all your test case files,""" start="00:04:48.420" video="qanda-test" id="subtitle"]]
+[[!template text="""and then you run ERT with the T as the test""" start="00:04:51.760" video="qanda-test" id="subtitle"]]
+[[!template text="""selector and then it will run all your test""" start="00:04:53.600" video="qanda-test" id="subtitle"]]
+[[!template text="""cases.""" start="00:04:53.880" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. And I think they have expanded on""" start="00:05:01.780" video="qanda-test" id="subtitle"]]
+[[!template text="""their question a little bit as well,""" start="00:05:03.180" video="qanda-test" id="subtitle"]]
+[[!template text="""clarifying that. In other words,""" start="00:05:04.960" video="qanda-test" id="subtitle"]]
+[[!template text="""can you tweak tests in an Emacs session and""" start="00:05:07.200" video="qanda-test" id="subtitle"]]
+[[!template text="""run them right away? Which I believe,""" start="00:05:08.860" video="qanda-test" id="subtitle"]]
+[[!template text="""if I understand correctly what Bob was""" start="00:05:11.400" video="qanda-test" id="subtitle"]]
+[[!template text="""saying, you can basically define or redefine""" start="00:05:13.820" video="qanda-test" id="subtitle"]]
+[[!template text="""functions on the fly and then have them be""" start="00:05:15.920" video="qanda-test" id="subtitle"]]
+[[!template text="""run, right?""" start="00:05:16.440" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, yes. You just go into that test case and""" start="00:05:22.200" video="qanda-test" id="subtitle"]]
+[[!template text="""you just change it and you run it again.""" start="00:05:24.120" video="qanda-test" id="subtitle"]]
+[[!template text="""And either you have to sort of load it or you""" start="00:05:29.060" video="qanda-test" id="subtitle"]]
+[[!template text="""can use like the commercial thing I did.""" start="00:05:31.560" video="qanda-test" id="subtitle"]]
+[[!template text="""You use hyperbole and just hit meta return on""" start="00:05:36.140" video="qanda-test" id="subtitle"]]
+[[!template text="""the test case and it will load it and run the""" start="00:05:38.560" video="qanda-test" id="subtitle"]]
+[[!template text="""test case again. So that's of course what you""" start="00:05:42.240" video="qanda-test" id="subtitle"]]
+[[!template text="""normally do when you're defining a test or""" start="00:05:44.220" video="qanda-test" id="subtitle"]]
+[[!template text="""debug a test case or develop a test case.""" start="00:05:47.440" video="qanda-test" id="subtitle"]]
+[[!template text="""Just start with something small,""" start="00:05:49.960" video="qanda-test" id="subtitle"]]
+[[!template text="""just make sure maybe you can prepare the test""" start="00:05:52.700" video="qanda-test" id="subtitle"]]
+[[!template text="""properly and run it again and again and again""" start="00:05:55.320" video="qanda-test" id="subtitle"]]
+[[!template text="""until you're ready with it.""" start="00:05:56.720" video="qanda-test" id="subtitle"]]
+[[!template text="""That's a good point. You can definitely do""" start="00:05:59.760" video="qanda-test" id="subtitle"]]
+[[!template text="""that and that's part of how I normally""" start="00:06:02.800" video="qanda-test" id="subtitle"]]
+[[!template text="""develop the test cases that I mean start with""" start="00:06:06.420" video="qanda-test" id="subtitle"]]
+[[!template text="""something small so I can see that I get there""" start="00:06:09.160" video="qanda-test" id="subtitle"]]
+[[!template text="""maybe the right input in the buffer that I""" start="00:06:12.180" video="qanda-test" id="subtitle"]]
+[[!template text="""want to test on or something and I expand on""" start="00:06:14.180" video="qanda-test" id="subtitle"]]
+[[!template text="""that more and more and add more and more more""" start="00:06:18.160" video="qanda-test" id="subtitle"]]
+[[!template text="""and more more""" start="00:06:18.460" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: tests to it. You might tell them a bit about""" start="00:06:31.040" video="qanda-test" id="subtitle"]]
+[[!template text="""how many test cases you have.""" start="00:06:33.280" video="qanda-test" id="subtitle"]]
+[[!template text="""I guess you commented on that and like what""" start="00:06:36.020" video="qanda-test" id="subtitle"]]
+[[!template text="""happens, you know, with the CICD pipeline,""" start="00:06:40.320" video="qanda-test" id="subtitle"]]
+[[!template text="""every time we commit, you know,""" start="00:06:43.780" video="qanda-test" id="subtitle"]]
+[[!template text="""across all the versions and what you have set""" start="00:06:46.360" video="qanda-test" id="subtitle"]]
+[[!template text="""up there because you know I wish people could""" start="00:06:48.760" video="qanda-test" id="subtitle"]]
+[[!template text="""see it. You can go and check on GitHub and""" start="00:06:53.940" video="qanda-test" id="subtitle"]]
+[[!template text="""you can see the logs right of any of the""" start="00:06:57.440" video="qanda-test" id="subtitle"]]
+[[!template text="""builds and but tell them a bit about that""" start="00:06:59.760" video="qanda-test" id="subtitle"]]
+[[!template text="""Mats because I think that's pretty""" start="00:07:01.080" video="qanda-test" id="subtitle"]]
+[[!template text="""impressive.""" start="00:07:01.320" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, that's part of more the CI,""" start="00:07:07.280" video="qanda-test" id="subtitle"]]
+[[!template text="""CD, part of how we developed this using""" start="00:07:11.760" video="qanda-test" id="subtitle"]]
+[[!template text="""GitHub and workflows that you get out of the""" start="00:07:15.460" video="qanda-test" id="subtitle"]]
+[[!template text="""box from there. So this more than 300 test""" start="00:07:20.740" video="qanda-test" id="subtitle"]]
+[[!template text="""cases on our round for I think 5 different""" start="00:07:23.440" video="qanda-test" id="subtitle"]]
+[[!template text="""versions of Emacs when we do a pull request""" start="00:07:26.480" video="qanda-test" id="subtitle"]]
+[[!template text="""or a commit. So that's a good way to ensure""" start="00:07:33.900" video="qanda-test" id="subtitle"]]
+[[!template text="""that it works from version 27.2""" start="00:07:38.040" video="qanda-test" id="subtitle"]]
+[[!template text="""up to the latest master version because""" start="00:07:42.240" video="qanda-test" id="subtitle"]]
+[[!template text="""there's some changes in Emacs over different""" start="00:07:45.860" video="qanda-test" id="subtitle"]]
+[[!template text="""versions that can affect your functions or""" start="00:07:48.940" video="qanda-test" id="subtitle"]]
+[[!template text="""your code.""" start="00:07:49.600" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: They all run in parallel and so typically in""" start="00:07:56.580" video="qanda-test" id="subtitle"]]
+[[!template text="""under 60 seconds I think you've got all of""" start="00:08:00.580" video="qanda-test" id="subtitle"]]
+[[!template text="""them run so you've got pretty extensive""" start="00:08:03.960" video="qanda-test" id="subtitle"]]
+[[!template text="""testing which does catch interesting bugs""" start="00:08:08.860" video="qanda-test" id="subtitle"]]
+[[!template text="""here and there, right?""" start="00:08:09.760" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, of course it does.""" start="00:08:13.320" video="qanda-test" id="subtitle"]]
+[[!template text="""I mean, you normally develop with 1 version""" start="00:08:18.060" video="qanda-test" id="subtitle"]]
+[[!template text="""and then you think everything is okay.""" start="00:08:20.280" video="qanda-test" id="subtitle"]]
+[[!template text="""But then when you're tested with the""" start="00:08:21.720" video="qanda-test" id="subtitle"]]
+[[!template text="""different versions, you find out that there""" start="00:08:23.460" video="qanda-test" id="subtitle"]]
+[[!template text="""are some changes and there are things you""" start="00:08:26.080" video="qanda-test" id="subtitle"]]
+[[!template text="""might not sort of keep track of what's""" start="00:08:30.140" video="qanda-test" id="subtitle"]]
+[[!template text="""happening also. So that's a way to get""" start="00:08:34.340" video="qanda-test" id="subtitle"]]
+[[!template text="""noticed that the core developers of Emacs""" start="00:08:38.559" video="qanda-test" id="subtitle"]]
+[[!template text="""have changed something that you sort of based""" start="00:08:41.120" video="qanda-test" id="subtitle"]]
+[[!template text="""your code on. Now I got another question""" start="00:08:44.380" video="qanda-test" id="subtitle"]]
+[[!template text="""here. Did you have to change hyperbole code""" start="00:08:47.900" video="qanda-test" id="subtitle"]]
+[[!template text="""and design to be more readily testable as you""" start="00:08:50.580" video="qanda-test" id="subtitle"]]
+[[!template text="""were increasing your test coverage?""" start="00:08:52.160" video="qanda-test" id="subtitle"]]
+[[!template text="""Well, we haven't done that to a lot,""" start="00:08:55.520" video="qanda-test" id="subtitle"]]
+[[!template text="""to a big degree, although I believe that that""" start="00:09:00.160" video="qanda-test" id="subtitle"]]
+[[!template text="""is an important thing for sort of the future""" start="00:09:03.760" video="qanda-test" id="subtitle"]]
+[[!template text="""to do that because some of the hyperbolic""" start="00:09:06.020" video="qanda-test" id="subtitle"]]
+[[!template text="""functions are very complicated and long and""" start="00:09:08.520" video="qanda-test" id="subtitle"]]
+[[!template text="""that makes testing them rather difficult.""" start="00:09:10.640" video="qanda-test" id="subtitle"]]
+[[!template text="""So, at a few places we have sort of broken up""" start="00:09:14.660" video="qanda-test" id="subtitle"]]
+[[!template text="""functions in smaller pieces so it'd be easier""" start="00:09:17.260" video="qanda-test" id="subtitle"]]
+[[!template text="""to do like unit tests of the different parts""" start="00:09:20.280" video="qanda-test" id="subtitle"]]
+[[!template text="""of it. But there's a lot of more work that""" start="00:09:27.740" video="qanda-test" id="subtitle"]]
+[[!template text="""has to be done there.""" start="00:09:28.680" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: 1 of the nice things is you know the great""" start="00:09:33.820" video="qanda-test" id="subtitle"]]
+[[!template text="""environment in Lisp where we're able to do a""" start="00:09:36.760" video="qanda-test" id="subtitle"]]
+[[!template text="""lot of interactive bottom-up testing before""" start="00:09:40.520" video="qanda-test" id="subtitle"]]
+[[!template text="""we even get to lighting tech pieces.""" start="00:09:42.840" video="qanda-test" id="subtitle"]]
+[[!template text="""So it does tend to be more higher level bugs,""" start="00:09:48.740" video="qanda-test" id="subtitle"]]
+[[!template text="""I think, that get caught in cross-functional""" start="00:09:51.140" video="qanda-test" id="subtitle"]]
+[[!template text="""interaction. We had 1 recently that was an""" start="00:09:55.940" video="qanda-test" id="subtitle"]]
+[[!template text="""Emacs version change. It had been a function""" start="00:09:58.100" video="qanda-test" id="subtitle"]]
+[[!template text="""that had existed for a long time.""" start="00:10:01.100" video="qanda-test" id="subtitle"]]
+[[!template text="""It had an and rest in it,""" start="00:10:03.340" video="qanda-test" id="subtitle"]]
+[[!template text="""in its argument list, so it would assemble""" start="00:10:05.740" video="qanda-test" id="subtitle"]]
+[[!template text="""the list of arguments from individual""" start="00:10:08.600" video="qanda-test" id="subtitle"]]
+[[!template text="""arguments that you would give it,""" start="00:10:10.320" video="qanda-test" id="subtitle"]]
+[[!template text="""and they decided in a recent version,""" start="00:10:13.100" video="qanda-test" id="subtitle"]]
+[[!template text="""I think with Stefan's input,""" start="00:10:15.200" video="qanda-test" id="subtitle"]]
+[[!template text="""to change that to a list and allow the prior""" start="00:10:19.400" video="qanda-test" id="subtitle"]]
+[[!template text="""behavior, but it would issue a warning if you""" start="00:10:22.740" video="qanda-test" id="subtitle"]]
+[[!template text="""use the prior behavior.""" start="00:10:23.620" video="qanda-test" id="subtitle"]]
+[[!template text="""So all of a sudden, the way you were supposed""" start="00:10:25.560" video="qanda-test" id="subtitle"]]
+[[!template text="""to do it became semi-invalid.""" start="00:10:27.180" video="qanda-test" id="subtitle"]]
+[[!template text="""And so we started getting the warning,""" start="00:10:30.440" video="qanda-test" id="subtitle"]]
+[[!template text="""and we've tried to eliminate all those""" start="00:10:32.760" video="qanda-test" id="subtitle"]]
+[[!template text="""warnings in recent hyperbole developments.""" start="00:10:35.600" video="qanda-test" id="subtitle"]]
+[[!template text="""So we're like, what do we do?""" start="00:10:37.120" video="qanda-test" id="subtitle"]]
+[[!template text="""You know, because we wanted to be backward""" start="00:10:39.020" video="qanda-test" id="subtitle"]]
+[[!template text="""compatible to where you couldn't use a list.""" start="00:10:42.140" video="qanda-test" id="subtitle"]]
+[[!template text="""It required you to use individual arguments.""" start="00:10:44.620" video="qanda-test" id="subtitle"]]
+[[!template text="""And now it's sort of requiring you to do""" start="00:10:48.380" video="qanda-test" id="subtitle"]]
+[[!template text="""that. And all of that was caused by the""" start="00:10:51.660" video="qanda-test" id="subtitle"]]
+[[!template text="""automatic testing on it.""" start="00:10:52.940" video="qanda-test" id="subtitle"]]
+[[!template text="""So you said, Max, you were going to tell us""" start="00:11:08.680" video="qanda-test" id="subtitle"]]
+[[!template text="""what you learned. So what are the major""" start="00:11:12.740" video="qanda-test" id="subtitle"]]
+[[!template text="""things that you learned in doing all of this""" start="00:11:15.368" video="qanda-test" id="subtitle"]]
+[[!template text="""work? All of this work?""" start="00:11:15.680" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, I tried to cover some of it in the""" start="00:11:26.520" video="qanda-test" id="subtitle"]]
+[[!template text="""presentation, but as I was going along,""" start="00:11:29.380" video="qanda-test" id="subtitle"]]
+[[!template text="""the presentation became like twice as long as""" start="00:11:33.420" video="qanda-test" id="subtitle"]]
+[[!template text="""fitted into the time we had so I had to cut""" start="00:11:36.180" video="qanda-test" id="subtitle"]]
+[[!template text="""it out. But I think some of the core things""" start="00:11:42.380" video="qanda-test" id="subtitle"]]
+[[!template text="""still is in the presentation.""" start="00:11:44.340" video="qanda-test" id="subtitle"]]
+[[!template text="""From a personal perspective,""" start="00:11:49.560" video="qanda-test" id="subtitle"]]
+[[!template text="""And this might not be hard to realize,""" start="00:11:52.440" video="qanda-test" id="subtitle"]]
+[[!template text="""but forcing yourself to test functions,""" start="00:11:56.960" video="qanda-test" id="subtitle"]]
+[[!template text="""test code really forces you to understand the""" start="00:12:02.900" video="qanda-test" id="subtitle"]]
+[[!template text="""code a little bit better in a way that sort""" start="00:12:05.080" video="qanda-test" id="subtitle"]]
+[[!template text="""of makes it easier than just to read the""" start="00:12:07.300" video="qanda-test" id="subtitle"]]
+[[!template text="""code. I don't know how it is for the rest""" start="00:12:11.460" video="qanda-test" id="subtitle"]]
+[[!template text="""listening to this, but for me it works so""" start="00:12:13.780" video="qanda-test" id="subtitle"]]
+[[!template text="""that if I just read the code then I don't""" start="00:12:16.580" video="qanda-test" id="subtitle"]]
+[[!template text="""sort of become as sharp as I should be but if""" start="00:12:20.140" video="qanda-test" id="subtitle"]]
+[[!template text="""I try to write the test case for it then I""" start="00:12:22.500" video="qanda-test" id="subtitle"]]
+[[!template text="""really need to understand better of all the""" start="00:12:24.680" video="qanda-test" id="subtitle"]]
+[[!template text="""edge cases and all the sort of states and etc""" start="00:12:27.660" video="qanda-test" id="subtitle"]]
+[[!template text="""that is involved and I think that's That's""" start="00:12:30.060" video="qanda-test" id="subtitle"]]
+[[!template text="""what's sort of 1 of the learning things I""" start="00:12:33.080" video="qanda-test" id="subtitle"]]
+[[!template text="""wanted to communicate as well that I don't""" start="00:12:34.960" video="qanda-test" id="subtitle"]]
+[[!template text="""think I covered in detail in the""" start="00:12:38.940" video="qanda-test" id="subtitle"]]
+[[!template text="""presentation. Maybe all this,""" start="00:12:41.480" video="qanda-test" id="subtitle"]]
+[[!template text="""but try it. 1 other sort of more from the fun""" start="00:12:48.060" video="qanda-test" id="subtitle"]]
+[[!template text="""side is that I really think it's fun to write""" start="00:12:50.740" video="qanda-test" id="subtitle"]]
+[[!template text="""the test. So if you haven't tests in your""" start="00:12:55.080" video="qanda-test" id="subtitle"]]
+[[!template text="""package, you should start doing that because""" start="00:12:58.020" video="qanda-test" id="subtitle"]]
+[[!template text="""it is fun. It might feel like some extra""" start="00:13:05.740" video="qanda-test" id="subtitle"]]
+[[!template text="""work, but it really pays off in the long run,""" start="00:13:08.080" video="qanda-test" id="subtitle"]]
+[[!template text="""especially if you have it in like a pipeline""" start="00:13:10.320" video="qanda-test" id="subtitle"]]
+[[!template text="""and where you can run it regularly when you""" start="00:13:12.520" video="qanda-test" id="subtitle"]]
+[[!template text="""do new commits, et cetera.""" start="00:13:13.940" video="qanda-test" id="subtitle"]]
+[[!template text="""So, I mean, that's maybe obvious from,""" start="00:13:16.560" video="qanda-test" id="subtitle"]]
+[[!template text="""if you look from the commercial side or your""" start="00:13:19.160" video="qanda-test" id="subtitle"]]
+[[!template text="""work side to do it like that.""" start="00:13:21.080" video="qanda-test" id="subtitle"]]
+[[!template text="""But even for your hobby project,""" start="00:13:22.260" video="qanda-test" id="subtitle"]]
+[[!template text="""it can be very sort of pay off really well.""" start="00:13:26.260" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: It's worked really well when we're adding new""" start="00:13:32.900" video="qanda-test" id="subtitle"]]
+[[!template text="""functionality or we're changing some of the""" start="00:13:35.020" video="qanda-test" id="subtitle"]]
+[[!template text="""plumbing in the system.""" start="00:13:36.560" video="qanda-test" id="subtitle"]]
+[[!template text="""You know, you go and you do some surgery and""" start="00:13:40.400" video="qanda-test" id="subtitle"]]
+[[!template text="""then you run the tests.""" start="00:13:41.320" video="qanda-test" id="subtitle"]]
+[[!template text="""And sometimes 6 to 10 tests will fail.""" start="00:13:45.400" video="qanda-test" id="subtitle"]]
+[[!template text="""And you find there, you know,""" start="00:13:48.260" video="qanda-test" id="subtitle"]]
+[[!template text="""it tends to be they're all interconnected and""" start="00:13:50.460" video="qanda-test" id="subtitle"]]
+[[!template text="""it leads you back to the single source.""" start="00:13:52.920" video="qanda-test" id="subtitle"]]
+[[!template text="""You fix that and you know it could be an edge""" start="00:13:56.660" video="qanda-test" id="subtitle"]]
+[[!template text="""case and off by 1 or Sometimes it's an""" start="00:14:00.560" video="qanda-test" id="subtitle"]]
+[[!template text="""assumption about the way something is used""" start="00:14:03.520" video="qanda-test" id="subtitle"]]
+[[!template text="""and it's not actually always true.""" start="00:14:05.980" video="qanda-test" id="subtitle"]]
+[[!template text="""And so, Matt's just really good at""" start="00:14:09.520" video="qanda-test" id="subtitle"]]
+[[!template text="""identifying some of those scenarios and""" start="00:14:13.540" video="qanda-test" id="subtitle"]]
+[[!template text="""keeping us honest, I guess I would say.""" start="00:14:17.480" video="qanda-test" id="subtitle"]]
+[[!template text="""So I love, I run it as much as I before,""" start="00:14:22.900" video="qanda-test" id="subtitle"]]
+[[!template text="""you know, even before I commit something.""" start="00:14:26.400" video="qanda-test" id="subtitle"]]
+[[!template text="""So I get to see, you know,""" start="00:14:29.960" video="qanda-test" id="subtitle"]]
+[[!template text="""if anything has progressed.""" start="00:14:30.940" video="qanda-test" id="subtitle"]]
+[[!template text="""So yeah, I really recommend this process to""" start="00:14:39.480" video="qanda-test" id="subtitle"]]
+[[!template text="""people. I haven't seen it done.""" start="00:14:42.120" video="qanda-test" id="subtitle"]]
+[[!template text="""I don't think that, I don't know any other""" start="00:14:45.720" video="qanda-test" id="subtitle"]]
+[[!template text="""package that has done it to this level.""" start="00:14:47.800" video="qanda-test" id="subtitle"]]
+[[!template text="""And it's been working really great for us.""" start="00:14:51.560" video="qanda-test" id="subtitle"]]
+[[!template text="""And I think, well, we'll see too when we""" start="00:14:55.440" video="qanda-test" id="subtitle"]]
+[[!template text="""release to the general public.""" start="00:14:56.780" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: But Bob, also, maybe the test part of""" start="00:15:04.380" video="qanda-test" id="subtitle"]]
+[[!template text="""different packages is not the first thing you""" start="00:15:06.400" video="qanda-test" id="subtitle"]]
+[[!template text="""look at. So I know there are packages that""" start="00:15:08.900" video="qanda-test" id="subtitle"]]
+[[!template text="""have testing, a lot of testing,""" start="00:15:10.960" video="qanda-test" id="subtitle"]]
+[[!template text="""but how much, much testing they have or not,""" start="00:15:13.860" video="qanda-test" id="subtitle"]]
+[[!template text="""I don't know. It's not what you normally look""" start="00:15:16.060" video="qanda-test" id="subtitle"]]
+[[!template text="""into when you look at someone's else code.""" start="00:15:17.900" video="qanda-test" id="subtitle"]]
+[[!template text="""You look maybe on the functionality side but""" start="00:15:20.600" video="qanda-test" id="subtitle"]]
+[[!template text="""not on how they've done the sort of the""" start="00:15:22.760" video="qanda-test" id="subtitle"]]
+[[!template text="""quality side. So there could be other""" start="00:15:26.540" video="qanda-test" id="subtitle"]]
+[[!template text="""packages out there that are well equipped.""" start="00:15:28.780" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: I hope so. I hope so.""" start="00:15:31.800" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: What's the craziest bug you found when""" start="00:15:39.860" video="qanda-test" id="subtitle"]]
+[[!template text="""writing these tests? Well,""" start="00:15:44.700" video="qanda-test" id="subtitle"]]
+[[!template text="""What springs to my mind just now is that we""" start="00:15:50.760" video="qanda-test" id="subtitle"]]
+[[!template text="""were doing some tests or I would do some""" start="00:15:52.760" video="qanda-test" id="subtitle"]]
+[[!template text="""tests for when you narrow,""" start="00:15:55.920" video="qanda-test" id="subtitle"]]
+[[!template text="""what do you say that? When you,""" start="00:15:57.940" video="qanda-test" id="subtitle"]]
+[[!template text="""in outlining, when you sort of compress""" start="00:16:04.500" video="qanda-test" id="subtitle"]]
+[[!template text="""things in an outline, so you just,""" start="00:16:06.480" video="qanda-test" id="subtitle"]]
+[[!template text="""sorry Bob, maybe you have it,""" start="00:16:08.540" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: When you hide text.""" start="00:16:12.100" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: What I'm looking for? Yeah,""" start="00:16:12.740" video="qanda-test" id="subtitle"]]
+[[!template text="""when you hide. So I was doing some cursor""" start="00:16:15.580" video="qanda-test" id="subtitle"]]
+[[!template text="""movement over that. And I always assume that""" start="00:16:17.780" video="qanda-test" id="subtitle"]]
+[[!template text="""if you do like a prefix argument to like a""" start="00:16:22.540" video="qanda-test" id="subtitle"]]
+[[!template text="""simple cursor movement,""" start="00:16:23.800" video="qanda-test" id="subtitle"]]
+[[!template text="""like control F moving 1 character position,""" start="00:16:26.420" video="qanda-test" id="subtitle"]]
+[[!template text="""and you would give it the,""" start="00:16:28.340" video="qanda-test" id="subtitle"]]
+[[!template text="""and then the prefix, like you want to move""" start="00:16:36.580" video="qanda-test" id="subtitle"]]
+[[!template text="""like 2 or 3 positions,""" start="00:16:39.140" video="qanda-test" id="subtitle"]]
+[[!template text="""you would do like control U 3 and then""" start="00:16:43.040" video="qanda-test" id="subtitle"]]
+[[!template text="""control F and you move 3.""" start="00:16:44.240" video="qanda-test" id="subtitle"]]
+[[!template text="""I always assumed that that would be exactly""" start="00:16:46.560" video="qanda-test" id="subtitle"]]
+[[!template text="""the same as if you just hit the key control F""" start="00:16:49.240" video="qanda-test" id="subtitle"]]
+[[!template text="""3 times, but it's not.""" start="00:16:50.740" video="qanda-test" id="subtitle"]]
+[[!template text="""So it's not the bug, it's a feature,""" start="00:16:53.160" video="qanda-test" id="subtitle"]]
+[[!template text="""but that was the craziest thing.""" start="00:16:54.620" video="qanda-test" id="subtitle"]]
+[[!template text="""I spent the night trying to figure out why""" start="00:16:58.180" video="qanda-test" id="subtitle"]]
+[[!template text="""our code was wrong, but It turns out that's""" start="00:17:00.720" video="qanda-test" id="subtitle"]]
+[[!template text="""how Emacs behaves. Try it out yourself.""" start="00:17:03.560" video="qanda-test" id="subtitle"]]
+[[!template text="""Try to move over the 3 dots at the end of""" start="00:17:07.920" video="qanda-test" id="subtitle"]]
+[[!template text="""that and see what happens.""" start="00:17:09.140" video="qanda-test" id="subtitle"]]
+[[!template text="""Do it with cursor hitting the key or using a""" start="00:17:14.060" video="qanda-test" id="subtitle"]]
+[[!template text="""prefix argument and you see it behaves""" start="00:17:16.260" video="qanda-test" id="subtitle"]]
+[[!template text="""differently. That was the craziest thing.""" start="00:17:18.720" video="qanda-test" id="subtitle"]]
+[[!template text="""I think there was some other crazy thing or""" start="00:17:21.960" video="qanda-test" id="subtitle"]]
+[[!template text="""deep learning also, but I can't come up with""" start="00:17:24.280" video="qanda-test" id="subtitle"]]
+[[!template text="""it at the moment. So maybe I can write it in""" start="00:17:26.599" video="qanda-test" id="subtitle"]]
+[[!template text="""the Q&A later.""" start="00:17:27.900" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: I think we're out of time on the stream,""" start="00:17:31.200" video="qanda-test" id="subtitle"]]
+[[!template text="""but people are welcome to join Mats and Bob""" start="00:17:33.360" video="qanda-test" id="subtitle"]]
+[[!template text="""here on BigBlueButton to further discuss""" start="00:17:35.280" video="qanda-test" id="subtitle"]]
+[[!template text="""this. Thank you both.""" start="00:17:36.480" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, thank you. Thanks,""" start="00:17:38.674" video="qanda-test" id="subtitle"]]
+[[!template text="""Makaay. Thank you. I don't know,""" start="00:17:46.100" video="qanda-test" id="subtitle"]]
+[[!template text="""Is it only me and Bob here?""" start="00:17:48.740" video="qanda-test" id="subtitle"]]
+[[!template text="""So Bob, do you want to say something?""" start="00:17:50.680" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, I think it's been a great day.""" start="00:17:57.440" video="qanda-test" id="subtitle"]]
+[[!template text="""And I'm glad we did this.""" start="00:18:00.720" video="qanda-test" id="subtitle"]]
+[[!template text="""It takes a lot of energy.""" start="00:18:02.280" video="qanda-test" id="subtitle"]]
+[[!template text="""I'm just really excited about the progress""" start="00:18:15.140" video="qanda-test" id="subtitle"]]
+[[!template text="""that this, and we're actually doing a lot of""" start="00:18:20.580" video="qanda-test" id="subtitle"]]
+[[!template text="""QA at work and my professional software work""" start="00:18:23.940" video="qanda-test" id="subtitle"]]
+[[!template text="""and looking at you know how we can do more""" start="00:18:28.500" video="qanda-test" id="subtitle"]]
+[[!template text="""test driven development and so everybody's""" start="00:18:32.980" video="qanda-test" id="subtitle"]]
+[[!template text="""talking about this you know we've got AI over""" start="00:18:35.980" video="qanda-test" id="subtitle"]]
+[[!template text="""here that can generate test cases.""" start="00:18:37.540" video="qanda-test" id="subtitle"]]
+[[!template text="""But, you know, strangely enough,""" start="00:18:40.200" video="qanda-test" id="subtitle"]]
+[[!template text="""with the rapidity of development and web""" start="00:18:43.100" video="qanda-test" id="subtitle"]]
+[[!template text="""applications, I think the level of testing""" start="00:18:46.720" video="qanda-test" id="subtitle"]]
+[[!template text="""has gone down in recent years compared to""" start="00:18:50.140" video="qanda-test" id="subtitle"]]
+[[!template text="""where it used to be, right?""" start="00:18:51.500" video="qanda-test" id="subtitle"]]
+[[!template text="""Because the pace has gone up.""" start="00:18:53.040" video="qanda-test" id="subtitle"]]
+[[!template text="""And so I think it's starting to turn again""" start="00:18:57.340" video="qanda-test" id="subtitle"]]
+[[!template text="""where people are saying,""" start="00:18:58.740" video="qanda-test" id="subtitle"]]
+[[!template text="""we can't just release crap into the""" start="00:19:01.940" video="qanda-test" id="subtitle"]]
+[[!template text="""Webisphere and we have to better ourselves.""" start="00:19:08.120" video="qanda-test" id="subtitle"]]
+[[!template text="""And with all these advanced tool sets that""" start="00:19:13.620" video="qanda-test" id="subtitle"]]
+[[!template text="""you have, that you can do CICD testing,""" start="00:19:16.100" video="qanda-test" id="subtitle"]]
+[[!template text="""you know, I just, I just see it coming""" start="00:19:19.860" video="qanda-test" id="subtitle"]]
+[[!template text="""around, you know, as people develop new""" start="00:19:21.900" video="qanda-test" id="subtitle"]]
+[[!template text="""things. So That's kind of exciting to me""" start="00:19:24.000" video="qanda-test" id="subtitle"]]
+[[!template text="""because I came from a manufacturing culture""" start="00:19:26.980" video="qanda-test" id="subtitle"]]
+[[!template text="""originally where we, our company actually""" start="00:19:30.300" video="qanda-test" id="subtitle"]]
+[[!template text="""started a lot of the manufacturing quality""" start="00:19:33.800" video="qanda-test" id="subtitle"]]
+[[!template text="""efforts that you saw in Japan and elsewhere""" start="00:19:37.420" video="qanda-test" id="subtitle"]]
+[[!template text="""in America for a long time and that was you""" start="00:19:40.600" video="qanda-test" id="subtitle"]]
+[[!template text="""know entirely through testing.""" start="00:19:42.040" video="qanda-test" id="subtitle"]]
+[[!template text="""We used to just build incredible test cases""" start="00:19:46.640" video="qanda-test" id="subtitle"]]
+[[!template text="""because we were combining software with""" start="00:19:49.120" video="qanda-test" id="subtitle"]]
+[[!template text="""hardware. And if, you know,""" start="00:19:51.100" video="qanda-test" id="subtitle"]]
+[[!template text="""the hardware doesn't work and you ship a""" start="00:19:53.460" video="qanda-test" id="subtitle"]]
+[[!template text="""million units, you're,""" start="00:19:55.080" video="qanda-test" id="subtitle"]]
+[[!template text="""you're in trouble. So,""" start="00:19:57.340" video="qanda-test" id="subtitle"]]
+[[!template text="""that was just something we had to do.""" start="00:20:00.260" video="qanda-test" id="subtitle"]]
+[[!template text="""And so it's nice to start to see that curve""" start="00:20:04.280" video="qanda-test" id="subtitle"]]
+[[!template text="""come around. And I think,""" start="00:20:07.020" video="qanda-test" id="subtitle"]]
+[[!template text="""you know, Matt Vance is very modest,""" start="00:20:10.380" video="qanda-test" id="subtitle"]]
+[[!template text="""but I think he's really the 1 that started us""" start="00:20:16.680" video="qanda-test" id="subtitle"]]
+[[!template text="""down this path and really made it into a""" start="00:20:20.400" video="qanda-test" id="subtitle"]]
+[[!template text="""reality. So everybody else just gets to""" start="00:20:24.620" video="qanda-test" id="subtitle"]]
+[[!template text="""benefit from that work.""" start="00:20:25.760" video="qanda-test" id="subtitle"]]
+[[!template text="""So thanks.""" start="00:20:27.540" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's awesome.""" start="00:20:32.760" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thanks. Okay. Yeah. So if there's nothing""" start="00:20:39.960" video="qanda-test" id="subtitle"]]
+[[!template text="""more here, then maybe we should just close""" start="00:20:43.200" video="qanda-test" id="subtitle"]]
+[[!template text="""this and I go over to write in the etherpad""" start="00:20:45.440" video="qanda-test" id="subtitle"]]
+[[!template text="""the replies we had.""" start="00:20:47.960" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right, yeah, I think, let's see,""" start="00:20:51.900" video="qanda-test" id="subtitle"]]
+[[!template text="""I see 1 other person here,""" start="00:20:53.520" video="qanda-test" id="subtitle"]]
+[[!template text="""I believe Ihor just joined us.""" start="00:20:55.080" video="qanda-test" id="subtitle"]]
+[[!template text="""Yeah. Yeah, so if you do want to discuss with""" start="00:20:58.780" video="qanda-test" id="subtitle"]]
+[[!template text="""Mats and Bob, you're welcome to,""" start="00:21:00.220" video="qanda-test" id="subtitle"]]
+[[!template text="""otherwise, yeah, we can close the room now.""" start="00:21:02.200" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 3]: Well, I think I missed most of the talk""" start="00:21:05.800" video="qanda-test" id="subtitle"]]
+[[!template text="""because I had power outage,""" start="00:21:06.900" video="qanda-test" id="subtitle"]]
+[[!template text="""but the part I heard was about the mock""" start="00:21:12.180" video="qanda-test" id="subtitle"]]
+[[!template text="""library. And you mentioned that you don't""" start="00:21:16.860" video="qanda-test" id="subtitle"]]
+[[!template text="""like CL-let, but instead you use mock.""" start="00:21:20.200" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I was more saying that you have to do a""" start="00:21:29.700" video="qanda-test" id="subtitle"]]
+[[!template text="""lot more work when you use the CL letdef.""" start="00:21:31.560" video="qanda-test" id="subtitle"]]
+[[!template text="""It's for more ambitious and maybe more""" start="00:21:34.540" video="qanda-test" id="subtitle"]]
+[[!template text="""complicated cases where you want to really""" start="00:21:37.000" video="qanda-test" id="subtitle"]]
+[[!template text="""make a new implementation,""" start="00:21:38.840" video="qanda-test" id="subtitle"]]
+[[!template text="""test implementation. If you use the mock,""" start="00:21:41.940" video="qanda-test" id="subtitle"]]
+[[!template text="""you get a lot of things out of the box,""" start="00:21:44.380" video="qanda-test" id="subtitle"]]
+[[!template text="""verifying that you actually,""" start="00:21:47.440" video="qanda-test" id="subtitle"]]
+[[!template text="""like the mock was actually called for""" start="00:21:50.820" video="qanda-test" id="subtitle"]]
+[[!template text="""instance, whereas if you do with the CLLatf,""" start="00:21:53.320" video="qanda-test" id="subtitle"]]
+[[!template text="""you would have to take correct track of that""" start="00:21:56.520" video="qanda-test" id="subtitle"]]
+[[!template text="""yourself. And so, so a lot of more work.""" start="00:22:02.020" video="qanda-test" id="subtitle"]]
+[[!template text="""Oh yeah.""" start="00:22:03.760" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 3]: I'm saying that most of the time CLLess is""" start="00:22:07.940" video="qanda-test" id="subtitle"]]
+[[!template text="""used for simple cases actually.""" start="00:22:09.720" video="qanda-test" id="subtitle"]]
+[[!template text="""Because, just for example,""" start="00:22:12.320" video="qanda-test" id="subtitle"]]
+[[!template text="""the function always returns the same.""" start="00:22:15.100" video="qanda-test" id="subtitle"]]
+[[!template text="""And it tends to be simple lambda that ignores""" start="00:22:17.980" video="qanda-test" id="subtitle"]]
+[[!template text="""all the input arguments.""" start="00:22:19.040" video="qanda-test" id="subtitle"]]
+[[!template text="""So that's really trivial most of the time but""" start="00:22:23.000" video="qanda-test" id="subtitle"]]
+[[!template text="""I actually thought the opposite that mock is""" start="00:22:25.520" video="qanda-test" id="subtitle"]]
+[[!template text="""supposed to be used for non-trivial cases.""" start="00:22:27.640" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sorry, what was the question?""" start="00:22:32.280" video="qanda-test" id="subtitle"]]
+[[!template text="""Mock was supposed to be used for non-trivial.""" start="00:22:35.280" video="qanda-test" id="subtitle"]]
+[[!template text="""Yeah I mean I don't know how to explain this.""" start="00:22:47.680" video="qanda-test" id="subtitle"]]
+[[!template text="""I mean, CLF can be used for non-trivial""" start="00:22:50.140" video="qanda-test" id="subtitle"]]
+[[!template text="""definitely. You can define then any behavior""" start="00:22:54.400" video="qanda-test" id="subtitle"]]
+[[!template text="""you want. You can write your own function,""" start="00:22:56.180" video="qanda-test" id="subtitle"]]
+[[!template text="""but you need to keep track of whether that""" start="00:22:58.440" video="qanda-test" id="subtitle"]]
+[[!template text="""function is called or not,""" start="00:22:59.620" video="qanda-test" id="subtitle"]]
+[[!template text="""for instance. So you have to make note of""" start="00:23:06.260" video="qanda-test" id="subtitle"]]
+[[!template text="""that the function was called so you can fire""" start="00:23:08.440" video="qanda-test" id="subtitle"]]
+[[!template text="""sort of an error in case your function wasn't""" start="00:23:12.440" video="qanda-test" id="subtitle"]]
+[[!template text="""called because that would be 1 error case.""" start="00:23:16.960" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 3]: So you mean the mock fires an error if the""" start="00:23:20.660" video="qanda-test" id="subtitle"]]
+[[!template text="""mocked function was actually not called?""" start="00:23:22.580" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, it does. Yes. So if your assumptions,""" start="00:23:30.060" video="qanda-test" id="subtitle"]]
+[[!template text="""you sort of document with the mock also your""" start="00:23:33.900" video="qanda-test" id="subtitle"]]
+[[!template text="""assumptions how your code is going to be""" start="00:23:37.080" video="qanda-test" id="subtitle"]]
+[[!template text="""called. And if those are wrong,""" start="00:23:40.020" video="qanda-test" id="subtitle"]]
+[[!template text="""you will get an error.""" start="00:23:41.120" video="qanda-test" id="subtitle"]]
+[[!template text="""So you would, so if the implementation would""" start="00:23:43.680" video="qanda-test" id="subtitle"]]
+[[!template text="""maybe change, for instance,""" start="00:23:44.840" video="qanda-test" id="subtitle"]]
+[[!template text="""and not call the thing you're mocking,""" start="00:23:46.640" video="qanda-test" id="subtitle"]]
+[[!template text="""then you will notice that.""" start="00:23:50.460" video="qanda-test" id="subtitle"]]
+[[!template text="""But if you see a letdef,""" start="00:23:53.100" video="qanda-test" id="subtitle"]]
+[[!template text="""then you will have to keep track of that""" start="00:23:54.840" video="qanda-test" id="subtitle"]]
+[[!template text="""yourself. Okay, I see.""" start="00:23:57.560" video="qanda-test" id="subtitle"]]
+[[!template text="""I see.""" start="00:23:58.260" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 3]: And you know, our mode also uses a lot of""" start="00:24:01.240" video="qanda-test" id="subtitle"]]
+[[!template text="""test. In our mode, we have a lot of tests""" start="00:24:09.340" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Ah, okay. Yeah. Yeah. I'm sure I have.""" start="00:24:13.940" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 3]: also. We rely on CLLatF for,""" start="00:24:15.900" video="qanda-test" id="subtitle"]]
+[[!template text="""we don't use third-party libraries at all.""" start="00:24:19.220" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, you use CLLatF, okay.""" start="00:24:22.140" video="qanda-test" id="subtitle"]]
+[[!template text="""Yeah. Yeah. Yeah. At First I found it very""" start="00:24:26.680" video="qanda-test" id="subtitle"]]
+[[!template text="""powerful to use that, but then I sort of,""" start="00:24:29.480" video="qanda-test" id="subtitle"]]
+[[!template text="""I learned more about how we can use the""" start="00:24:32.120" video="qanda-test" id="subtitle"]]
+[[!template text="""mocking library for what I needed.""" start="00:24:34.340" video="qanda-test" id="subtitle"]]
+[[!template text="""And I prefer that at the moment.""" start="00:24:36.900" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 3]: I see, that is interesting.""" start="00:24:40.560" video="qanda-test" id="subtitle"]]
+[[!template text="""Because I had seen it,""" start="00:24:42.500" video="qanda-test" id="subtitle"]]
+[[!template text="""but I didn't consider that it's gonna be""" start="00:24:45.440" video="qanda-test" id="subtitle"]]
+[[!template text="""useful even in simple cases.""" start="00:24:46.800" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: It has its limitations.""" start="00:24:52.640" video="qanda-test" id="subtitle"]]
+[[!template text="""So it's like life, how you turn depends.""" start="00:24:58.260" video="qanda-test" id="subtitle"]]
+[[!template text="""But maybe I should look more into the org""" start="00:25:03.740" video="qanda-test" id="subtitle"]]
+[[!template text="""mode and the test case to learn more about""" start="00:25:05.880" video="qanda-test" id="subtitle"]]
+[[!template text="""that. So thanks for pointing that out.""" start="00:25:07.480" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 3]: We are trying to cover as much as we can.""" start="00:25:14.620" video="qanda-test" id="subtitle"]]
+[[!template text="""It's almost impossible for org.""" start="00:25:17.520" video="qanda-test" id="subtitle"]]
+[[!template text="""But yeah, we keep adding more tests.""" start="00:25:20.500" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's great.""" start="00:25:22.780" video="qanda-test" id="subtitle"]]
+[[!template text="""Someone's typing. I don't know.""" start="00:25:52.720" video="qanda-test" id="subtitle"]]
+[[!template text="""Any more questions? No?""" start="00:25:54.340" video="qanda-test" id="subtitle"]]
+[[!template text="""Okay, then I'll go back and try to document""" start="00:26:01.060" video="qanda-test" id="subtitle"]]
+[[!template text="""this in the etherpad. Thank you everybody for""" start="00:26:05.200" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you guys. Great work.""" start="00:26:08.860" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 0]: joining. Great. Thank you.""" start="00:26:09.400" video="qanda-test" id="subtitle"]]
+[[!template text="""Take care. Bye-bye.""" start="00:26:11.100" video="qanda-test" id="subtitle"]]
+[[!template text="""[Speaker 1]: Take care. Bye. Silence.""" start="00:26:15.060" video="qanda-test" id="subtitle"]]
+
+Questions or comments? Please e-mail [matsl@gnu.org](mailto:matsl@gnu.org?subject=Comment%20for%20EmacsConf%202023%20test%3A%20What%20I%20learned%20by%20writing%20test%20cases%20for%20GNU%20Hyperbole)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/test-before.md b/2023/info/test-before.md
new file mode 100644
index 00000000..8b140aad
--- /dev/null
+++ b/2023/info/test-before.md
@@ -0,0 +1,42 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 27-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="test-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="test-mainVideo" data="""
+00:03.120 Introduction
+03:11.160 ERT: Emacs Lisp Regression Testing
+04:14.360 Assertions with `should`
+04:56.920 Running a test case
+06:54.560 Debug a test
+07:50.380 Commercial break: Hyperbole
+09:10.480 Instrument function on the fly
+10:39.120 Mocking
+14:41.240 cl-letf
+15:24.100 Hooks
+15:55.720 Side effects and initial buffer state
+17:05.100 with-temp-buffer
+17:16.520 make-temp-file
+17:33.288 buffer-string
+18:09.920 buffer-name
+18:51.980 major-mode
+19:02.680 unwind-protect
+20:15.100 Input, with-simulated-input
+21:38.460 Running all tests
+23:03.220 Batch mode
+24:05.060 Skipping tests
+26:08.460 Conclusion
+
+"""]]<div></div>Duration: 26:55 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--main.opus">Download --main.opus (13MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--transcript.txt">Download --transcript.txt</a></li><li><a href="https://toobnix.org/w/4XmcGSe3TQrJJNUqQXqK2B">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="test-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="test-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--answers.opus"></audio></div><div></div>Duration: 26:22 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--answers.json">Download --answers.json (1MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--answers.opus">Download --answers.opus (9MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-test--what-i-learned-by-writing-test-cases-for-gnu-hyperbole--mats-lidell--answers.webm">Download --answers.webm (41MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/test-nav.md b/2023/info/test-nav.md
new file mode 100644
index 00000000..a595b88c
--- /dev/null
+++ b/2023/info/test-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/lspocaml">Writing a language server in OCaml for Emacs, fun, and profit</a>
+Next by track: <a href="/2023/talks/emacsconf">EmacsConf.org: How we use Org Mode and TRAMP to organize and run a multi-track conference</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/unentangling-after.md b/2023/info/unentangling-after.md
new file mode 100644
index 00000000..f6e4924f
--- /dev/null
+++ b/2023/info/unentangling-after.md
@@ -0,0 +1,273 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="unentangling-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""Hello, I'm Alexey Bychkadov,""" start="00:00:01.220" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and I'm talking about unentangling projects""" start="00:00:03.740" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and repositories, or maybe entangling them,""" start="00:00:06.899" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""depending on how you look at that.""" start="00:00:09.679" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So there's going to be a short workflow note.""" start="00:00:12.980" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I work as a researcher,""" start="00:00:16.619" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So there are 3 main components to my work,""" start="00:00:19.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I guess. First, I think,""" start="00:00:23.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""so I try to come up with a new ideas that""" start="00:00:26.000" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""usually results in some collection of notes I""" start="00:00:28.140" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""have. Second, I try things out.""" start="00:00:31.580" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So it usually means that I write code.""" start="00:00:33.760" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And third, I communicate.""" start="00:00:36.820" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So I prepare papers, presentations,""" start="00:00:38.739" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""memos, and so on and so forth.""" start="00:00:41.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And so The workflow problem I had is""" start="00:00:44.120" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""sometimes all this does not really fit into a""" start="00:00:49.160" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""concept of a single repository per project.""" start="00:00:53.000" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So I might want to have,""" start="00:00:56.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""for example, a source code in 1 repository""" start="00:00:58.180" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and then I would like to have a paper in""" start="00:01:01.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""another 1 and then I want to have a""" start="00:01:03.480" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""collection of notes somewhere unrelated to""" start="00:01:05.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""those 2. Emacs is pretty good at supporting""" start="00:01:08.620" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""your workflows and I figured I should share""" start="00:01:12.500" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""what I used and what works for me.""" start="00:01:16.240" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So, from the technical perspective,""" start="00:01:20.560" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""things are pretty easy.""" start="00:01:26.479" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So I use a collection of pretty standard""" start="00:01:27.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""components of Emacs. So it's a projectile org""" start="00:01:30.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""mode with this capture templates and other""" start="00:01:33.240" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""things. Then I sustained a collection of""" start="00:01:35.360" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""nodes in something that is called org-roam,""" start="00:01:38.100" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""which is essentially it's a glorified""" start="00:01:40.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""collection of org mode files.""" start="00:01:43.580" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Then I used directory local variables,""" start="00:01:46.100" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""maybe a C text to jump through the source""" start="00:01:48.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""code and very, very little LELisp glue to""" start="00:01:51.140" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""make this all work, but that's not really""" start="00:01:54.920" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""rocket science. So that's the workflow I""" start="00:01:58.620" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""would like to talk about today.""" start="00:02:00.400" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So what I mean by all that,""" start="00:02:04.860" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""it's pretty straightforward to make Emacs,""" start="00:02:07.960" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""to make it easy to jump around a single""" start="00:02:10.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""repository in Emacs. So if I,""" start="00:02:12.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Now I have Doom Emacs,""" start="00:02:15.060" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""but that's not really specific to a Doom""" start="00:02:16.640" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""that'll work in any Emacs configuration.""" start="00:02:19.120" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Well, key bindings might be different,""" start="00:02:23.400" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""but that's not the point,""" start="00:02:27.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I guess, for the workflow.""" start="00:02:28.820" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So if I hit space 2 times,""" start="00:02:30.060" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I have all the list of files within my""" start="00:02:31.960" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""project, right? So if I create a couple of""" start="00:02:34.640" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""custom shortcuts, so if I press a magic""" start="00:02:38.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""button, hyper-OP, don't worry about""" start="00:02:42.780" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""hyper-key. So I want it to have a modifier""" start="00:02:45.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""key all to myself, so that would,""" start="00:02:47.560" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""no program on my computer would use that""" start="00:02:50.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""except Emacs. Emacs would use that only when""" start="00:02:53.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I tell it to, so I have a hyper key instead""" start="00:02:55.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""of caps lock. That's pretty easy to do in GNU""" start="00:02:57.540" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Linux system. So when I press this magic""" start="00:03:00.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""keys, I have a menu that's a normal key""" start="00:03:04.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""binding. Yeah, essentially an Emacs.""" start="00:03:07.400" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And if I hit, for example,""" start="00:03:10.240" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""R, I end up in a readme file within this""" start="00:03:12.540" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""specific repository I was sitting in,""" start="00:03:15.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? So if I want to document something""" start="00:03:17.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""real quick, I go to the readme file.""" start="00:03:19.000" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Then I could go to a change log file,""" start="00:03:21.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? So I have a list of changes and the""" start="00:03:25.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""way it works usually, for example,""" start="00:03:27.440" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""if I'm working in some code,""" start="00:03:29.480" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I created a couple of dummy files in there,""" start="00:03:32.220" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""so I'm working in some code and then I""" start="00:03:34.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""implemented something and I can just use the""" start="00:03:36.560" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""org mode capture mechanisms to keep track of""" start="00:03:42.020" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""what I want to discuss with colleagues next""" start="00:03:46.860" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""time. For example, I could just hit capture""" start="00:03:48.880" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""repo specific changelog entry and I""" start="00:03:52.440" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""implemented a feature and I can continue""" start="00:03:56.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""working without this context switching.""" start="00:04:02.620" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And then if I want to go to the change log,""" start="00:04:04.340" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""well, it is there. And next time I talk to""" start="00:04:06.880" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""the colleagues about the source code,""" start="00:04:11.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I can open the change log and go through""" start="00:04:12.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""entries 1 by 1 and discuss what I haven't""" start="00:04:14.340" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""implemented last time.""" start="00:04:16.800" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I could go to project specific,""" start="00:04:19.540" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""sorry, to repo specific to-do list.""" start="00:04:24.100" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And I have list of to-dos that would leave""" start="00:04:26.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""within a repository. And for example,""" start="00:04:29.020" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I could have a high level structure here,""" start="00:04:31.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""work distribution between team members and""" start="00:04:34.640" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""other things that sort of face outer world,""" start="00:04:36.460" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""so to speak. And of course,""" start="00:04:39.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""there are very many ways to jump through the""" start="00:04:42.840" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""source code conveniently.""" start="00:04:45.400" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I ended up not using language servers I use a""" start="00:04:46.560" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""special program called ctags and so the way""" start="00:04:49.960" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""it works is just I call projectile regenerate""" start="00:04:53.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""tags and it creates the special tags file""" start="00:04:56.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""within the repository and then I can again""" start="00:05:00.460" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""run it I usually just hit a single keystroke""" start="00:05:06.240" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and here is all the symbols that are there in""" start="00:05:11.520" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""my source code, regardless of the language,""" start="00:05:14.060" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? So I can jump to the main function and""" start="00:05:17.160" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""that'll be a C++ file.""" start="00:05:19.540" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Or I could go to the super function,""" start="00:05:21.020" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""which I had in my Python file.""" start="00:05:22.740" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And this comes in pretty convenient if I have""" start="00:05:25.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""a mixture of languages.""" start="00:05:27.120" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Sometimes I can have some algorithm specific""" start="00:05:28.360" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""code in Julia, and then I can have some""" start="00:05:30.800" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Python glue within the same source code""" start="00:05:33.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""repository, it makes it really convenient to""" start="00:05:35.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""jump between all of those.""" start="00:05:39.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""But I have a few problems here.""" start="00:05:43.080" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So just to give you a little bit of context,""" start="00:05:47.360" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""for example, here is a real project that""" start="00:05:49.860" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""corresponds to real paper.""" start="00:05:53.100" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I have a single note about that project where""" start="00:05:55.840" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I keep all the things related to that project""" start="00:05:59.060" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""here, but that's a private note.""" start="00:06:01.780" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So for example, again,""" start="00:06:03.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I hit a special key that invokes my org-roam""" start="00:06:04.860" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""function that gives me a menu of my notes.""" start="00:06:08.640" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And so here is the paper,""" start="00:06:13.080" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""essentially. And I can have a paper timeline,""" start="00:06:15.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and I can have a list of all the dates what""" start="00:06:17.900" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""happened to the paper with links to my email,""" start="00:06:21.180" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? So for example if I hit this link that""" start="00:06:24.060" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""will open a specific email and that doesn't""" start="00:06:27.700" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""work outside of my computer,""" start="00:06:30.160" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""doesn't make any sense to keep it in the""" start="00:06:31.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""outer world facing repository,""" start="00:06:33.340" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""for example. So that's something to myself,""" start="00:06:35.500" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? Sometimes I want to have like this""" start="00:06:37.360" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""list of working notes,""" start="00:06:41.480" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right, that contain like,""" start="00:06:43.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""for example, yeah, I might produce this kind""" start="00:06:45.780" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""of things for internal discussion,""" start="00:06:49.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? It has some marks,""" start="00:06:50.640" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""it has some margin notes and things like""" start="00:06:52.500" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""that. Maybe again, health-based ideas that""" start="00:06:54.620" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""may or may not end up in a repository,""" start="00:06:57.620" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""in the final paper or in a source code,""" start="00:07:01.020" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""but still I want to have it somewhere.""" start="00:07:03.220" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And well, long story short,""" start="00:07:07.120" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I need a project folder that would be""" start="00:07:08.800" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""unrelated to the source code or to the source""" start="00:07:11.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""code repository or to the paper itself or a""" start="00:07:16.120" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""final report, right? And 1 way,""" start="00:07:19.440" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""as usual, there are multiple ways to achieve""" start="00:07:22.960" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""that, I suppose. And 1 way to do that is,""" start="00:07:24.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""so I create a special folder within my""" start="00:07:29.040" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""org-roam storage. So it's a special folder""" start="00:07:33.160" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""outside of Henry Postories that got backed up""" start="00:07:38.240" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""to my hard drive with certain redundancy,""" start="00:07:40.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""but I don't really need like version control,""" start="00:07:44.080" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""full blown version control for that.""" start="00:07:46.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I'm okay with just having a couple of""" start="00:07:48.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""backups, right? So this is the folder you see""" start="00:07:49.760" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""here. So PKB stands for personal knowledge""" start="00:07:52.900" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""base, and I have a folder project notes in""" start="00:07:55.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""there, right? So, and How does it work?""" start="00:07:58.020" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So I have a folder per project in there,""" start="00:08:01.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""essentially. And here I can have all the""" start="00:08:05.020" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""stuff that kind of belongs to me and I do not""" start="00:08:07.900" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""publish it anywhere. And then,""" start="00:08:11.480" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""For example, a source code repository knows""" start="00:08:15.420" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""about that folder and a paper repository""" start="00:08:20.460" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""knows about that folder.""" start="00:08:23.460" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And anything else that might leave in""" start="00:08:25.120" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""separate places all over my system can know""" start="00:08:26.820" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""about that folder. How do I achieve that?""" start="00:08:28.820" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Well, essentially this is 1 of the use cases""" start="00:08:30.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""for the directory local variables,""" start="00:08:34.400" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? So for example,""" start="00:08:36.360" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""how does it work from the user perspective?""" start="00:08:39.520" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So if I hit a special key,""" start="00:08:41.580" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""oh, sorry, if I hit a special key,""" start="00:08:44.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""that would be open project.""" start="00:08:48.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And then for example, org mode file,""" start="00:08:51.680" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? So this is my personal notes about the""" start="00:08:55.920" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""maxconf, not specifically about this very""" start="00:08:58.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""talk, but I can have, you know,""" start="00:09:01.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""the house baked ideas here again,""" start="00:09:02.580" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""presentation tools and things like that.""" start="00:09:04.760" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And how does that happen?""" start="00:09:07.440" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""If we try to like look at the code,""" start="00:09:09.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""the e-list magic here,""" start="00:09:13.080" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""what is happening is it's just a couple of""" start="00:09:15.040" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""lines of code, in fact,""" start="00:09:17.560" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""so let me just press Control,""" start="00:09:18.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""help key. And so the key I was pressing is""" start="00:09:22.540" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""open project or my file.""" start="00:09:28.140" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And so what we see here,""" start="00:09:30.480" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""there is a single, so it's just a call to a""" start="00:09:32.220" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""find file function. So I opened that file and""" start="00:09:34.760" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""there is a special function that figures out""" start="00:09:37.200" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""what is the like umbrella project nose file""" start="00:09:40.580" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and that's, again, that's very easy.""" start="00:09:44.620" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So essentially if a variable describing this,""" start="00:09:47.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""the name for that project is defined,""" start="00:09:51.820" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""then I use that as my project folder name.""" start="00:09:54.860" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""If not, I take the project name from the""" start="00:09:57.440" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""project tile. Well, that's pretty much it.""" start="00:10:00.480" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And how do I define this variable?""" start="00:10:03.340" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Is essentially there is this magical file in""" start="00:10:09.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""a folder called dear locals,""" start="00:10:12.500" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""elist. And I just put it there.""" start="00:10:14.440" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And then whenever I go into that folder or""" start="00:10:17.440" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""any of its children folders,""" start="00:10:20.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I get this variable defined.""" start="00:10:22.300" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And that's pretty much it.""" start="00:10:24.840" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""That's how it works for me.""" start="00:10:26.280" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""I guess 1 thing that I wanted to emphasize""" start="00:10:31.860" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""specifically about that is of course,""" start="00:10:35.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""it is a time tracking,""" start="00:10:37.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""right? So what is I find especially important""" start="00:10:39.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""when I work in something and I want to clock""" start="00:10:42.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""time, I usually do not want this information""" start="00:10:44.340" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""to be in a source code repository or in a""" start="00:10:47.800" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""paper repository because other people I work""" start="00:10:50.340" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""with will not be particularly happy about""" start="00:10:52.600" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""that, especially if most of them do not use""" start="00:10:54.840" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Emacs and they'll see this long list of org""" start="00:10:57.540" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""clocked data and that doesn't look nice in a""" start="00:11:00.720" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""plain text format. So what I usually do if I""" start="00:11:03.820" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""want to clock in some time and then later""" start="00:11:07.540" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""analyze what I've been spending time on,""" start="00:11:10.240" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""so I go to my org mode file and I go to the,""" start="00:11:12.560" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""my current project to-dos and I clock in""" start="00:11:16.880" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""there. And that's how it works.""" start="00:11:21.820" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So again, what comes in handy,""" start="00:11:23.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""if I hit Control O, I just go back to the""" start="00:11:28.860" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""file I jumped in into and that's I jumped""" start="00:11:31.500" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""from so that's also pretty handy.""" start="00:11:34.240" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So again no no rocket science in there.""" start="00:11:36.220" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So I create a directory local variable that""" start="00:11:40.380" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""helps me to figure out what umbrella project""" start="00:11:42.660" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""does this particular folder belongs to.""" start="00:11:46.620" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And this way I make Emacs aware of,""" start="00:11:49.940" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""for example, facts like,""" start="00:11:53.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""so this source code belongs to that project.""" start="00:11:54.480" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And this paper, this repository with a paper""" start="00:11:56.740" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""also belongs to that project.""" start="00:11:59.180" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And I can have capture templates that would""" start="00:12:01.060" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""save my notes into the my private notes file""" start="00:12:04.060" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and my to-dos and go to my private note files""" start="00:12:07.800" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""and so on and so forth.""" start="00:12:10.920" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""So I find it pretty simple but that really""" start="00:12:12.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""helps to reduce this context switching.""" start="00:12:15.520" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And I don't believe it allows me to save""" start="00:12:19.600" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""time, but that probably helps me to stay""" start="00:12:22.040" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""focused. And this is what is really""" start="00:12:26.260" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""important, I believe. So thank you very much.""" start="00:12:28.420" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""And if you have any comments or suggestions""" start="00:12:31.400" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""to that, please do jump into the discussion.""" start="00:12:33.320" video="mainVideo-unentangling" id="subtitle"]]
+[[!template text="""Yeah, after the talk, thank you.""" start="00:12:37.120" video="mainVideo-unentangling" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20unentangling%3A%20%28Un%29entangling%20projects%20and%20repos)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/unentangling-before.md b/2023/info/unentangling-before.md
new file mode 100644
index 00000000..d8a2318c
--- /dev/null
+++ b/2023/info/unentangling-before.md
@@ -0,0 +1,12 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 13-min talk; Q&A: Etherpad
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="unentangling-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 12:39 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--main.opus">Download --main.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--main.webm">Download --main.webm (68MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-unentangling--unentangling-projects-and-repos--alexey-bochkarev--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/wLxyZBoFAad575Lp4PGyoF">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/unentangling-nav.md b/2023/info/unentangling-nav.md
new file mode 100644
index 00000000..24e0a4b0
--- /dev/null
+++ b/2023/info/unentangling-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/ref">Org-Mode workflow: informal reference tracking</a>
+Next by track: <a href="/2023/talks/devel">Emacs development updates</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/uni-after.md b/2023/info/uni-after.md
new file mode 100644
index 00000000..2bfe8152
--- /dev/null
+++ b/2023/info/uni-after.md
@@ -0,0 +1,971 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="uni-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""Hello everyone. I'm James Howell.""" start="00:00:00.000" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I teach biochemistry and""" start="00:00:01.940" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""molecular biology at Penn State University.""" start="00:00:03.540" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I'm going to talk today""" start="00:00:07.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""about using Emacs to make all of""" start="00:00:08.880" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the materials for presenting""" start="00:00:11.480" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""course meetings in my courses.""" start="00:00:13.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Everything that you're going to see today is""" start="00:00:15.680" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""what I've made using""" start="00:00:18.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the methods that I'm going to describe.""" start="00:00:20.440" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""The main point is that you can take""" start="00:00:26.200" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""an Org document and""" start="00:00:29.720" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""with a single Emacs document,""" start="00:00:32.080" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""make both a pretty text document""" start="00:00:34.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that a student can have""" start="00:00:39.080" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""on the desk and take notes on.""" start="00:00:40.380" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And also, I hope,""" start="00:00:42.040" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""fairly useful and attractive slides""" start="00:00:44.440" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""like the ones that I'm presenting right now.""" start="00:00:49.040" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Both of these""" start="00:00:51.340" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""from a single source document.""" start="00:00:52.860" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Okay. If you'd like""" start="00:00:56.660" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to see the handout that goes along with this,""" start="00:00:59.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""you can download it""" start="00:01:00.920" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""at the [Sourcehut] repository where""" start="00:01:02.800" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I've put— everything's here.""" start="00:01:04.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So if you'd like to go look at it,""" start="00:01:05.960" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""you can follow with the handout.""" start="00:01:07.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So I promised to talk about""" start="00:01:09.940" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""both authoring and presenting.""" start="00:01:11.240" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Presenting""" start="00:01:12.440" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""And first I'm going to talk about presenting.""" start="00:01:12.440" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I'm not the only one who does this.""" start="00:01:14.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You might have seen System Crafters [David Wilson]""" start="00:01:16.600" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""or Prot's [Protesilaos Stavrou's] channel or""" start="00:01:19.300" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Mike Zemansky's channel on Youtube.""" start="00:01:20.640" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""(Prot actually is going to be presenting tomorrow.)""" start="00:01:23.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Maybe you've seen this""" start="00:01:26.680" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""chemical engineer at Carnegie Mellon,""" start="00:01:28.420" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""John Kitchin or Eric Fraga""" start="00:01:30.180" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""or Olivier Berger all have made""" start="00:01:32.160" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""blog posts about using Org mode""" start="00:01:34.140" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to produce course materials.""" start="00:01:36.520" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This pair Ro and Namkoon""" start="00:01:39.420" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""actually published a peer reviewed paper.""" start="00:01:41.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's prior art here""" start="00:01:43.740" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that I'd like to acknowledge.""" start="00:01:45.740" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Hardware""" start="00:01:47.820" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""Let me talk about my practices:""" start="00:01:47.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""First, the hardware.""" start="00:01:50.840" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This is the hardware that I'm using to""" start="00:01:51.520" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""record this recording at the very moment,""" start="00:01:55.340" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but also I carry these""" start="00:01:59.740" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""into every course meeting.""" start="00:02:01.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I've done this for quite a while,""" start="00:02:05.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""this entire semester,""" start="00:02:07.120" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and a few previous semesters""" start="00:02:09.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""where everything fits in a backpack.""" start="00:02:11.440" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I do every meeting with this tablet—""" start="00:02:14.240" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""it's a Microsoft Surface that I put""" start="00:02:18.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""a Linux distribution on—and this laptop.""" start="00:02:20.840" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I've got a bag full of""" start="00:02:26.600" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""dongles and connectors and so forth.""" start="00:02:29.600" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""It all fits in a backpack.""" start="00:02:34.080" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This is very mobile.""" start="00:02:35.340" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I can set it up and tear it down""" start="00:02:36.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""before and after every class""" start="00:02:38.180" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""with just a couple minutes.""" start="00:02:39.700" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's the laptop and the""" start="00:02:41.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""tablet with a stylus.""" start="00:02:42.740" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Where's my stylus?""" start="00:02:45.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So that I can draw...""" start="00:02:46.580" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""... which is very useful.""" start="00:02:51.500" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Obviously, I need a camera.""" start="00:02:52.520" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Today, I'm using a desk mic,""" start="00:02:55.860" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but when I'm remote,""" start="00:02:57.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I use a lapel mic.""" start="00:02:59.100" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and a video converter,""" start="00:03:01.740" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and I'll show you why that's important.""" start="00:03:02.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And then all of the ancillary equipment.""" start="00:03:04.380" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""One thing that's nice about using""" start="00:03:09.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""a completely free software stack is""" start="00:03:11.140" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that it tends to run""" start="00:03:14.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""on underpowered hardware,""" start="00:03:15.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and none of the software cost anything.""" start="00:03:18.320" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I could have spent much less than this""" start="00:03:20.540" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""on a used computer and""" start="00:03:23.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""a used tablet. And everything else,""" start="00:03:25.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""these are high estimates.""" start="00:03:28.200" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I spent way less than""" start="00:03:30.300" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""$1,000 for all of this equipment.""" start="00:03:31.680" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And it's my equipment,""" start="00:03:34.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""so I have hardware""" start="00:03:35.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and software control over it,""" start="00:03:37.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Which is nice.""" start="00:03:38.960" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""If you have an attitude of upcycling and building,""" start="00:03:41.100" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and [if] this is a hobby anyway,""" start="00:03:43.240" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""this is an easy way—""" start="00:03:45.190" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""what I'm saying is—""" start="00:03:47.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the entry into using these things,""" start="00:03:48.650" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""there's certainly a very low cost barrier.""" start="00:03:51.370" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Because the hardware is so weak,""" start="00:03:58.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I have the tablet for doing tablet stuff,""" start="00:04:01.430" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and then I use the laptop to""" start="00:04:05.250" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""do all of the streaming and recording.""" start="00:04:06.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I take the video output""" start="00:04:08.910" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""of the tablet and convert it to""" start="00:04:11.610" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""USB input into the laptop.""" start="00:04:13.830" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Just to give you a diagram here,""" start="00:04:19.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""there's a laptop and there's a tablet.""" start="00:04:21.930" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""The tablet has a stylus.""" start="00:04:23.710" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""They both run GNU/Linux distributions.""" start="00:04:25.930" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You've got a webcam that""" start="00:04:29.450" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""goes into the laptop.""" start="00:04:30.950" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You've got video output""" start="00:04:32.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""from the tablet that goes into the laptop.""" start="00:04:33.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's a microphone that""" start="00:04:37.890" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""goes into the laptop,""" start="00:04:39.350" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and then audio and video come out of""" start="00:04:40.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the laptop and go into""" start="00:04:43.210" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""some AV system or another.""" start="00:04:44.410" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Example setup""" start="00:04:46.610" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""Okay. This was Wednesday,""" start="00:04:46.610" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""teaching microbiology.""" start="00:04:49.070" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's the tablet, there's the laptop.""" start="00:04:51.070" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's the external screen""" start="00:04:53.230" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""in the podium here you can""" start="00:04:55.370" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""plug into the AV system.""" start="00:04:57.210" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There it is. From where I stand,""" start="00:05:00.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""this is what the screen looks like.""" start="00:05:04.210" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This is what students are seeing,""" start="00:05:06.010" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""on the live stream""" start="00:05:08.225" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and later on the recording.""" start="00:05:09.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And students in the room""" start="00:05:10.780" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""can see this as well.""" start="00:05:11.720" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So you notice this is kind of meta,""" start="00:05:12.640" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but the camera and""" start="00:05:15.100" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the contents of the screen are""" start="00:05:17.140" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""there when I wander around,""" start="00:05:18.760" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and when I stand in front of the screen,""" start="00:05:20.500" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the students who aren't in the room can""" start="00:05:22.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""still see what I'm pointing to on the screen.""" start="00:05:23.940" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Nobody gets left out.""" start="00:05:27.400" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Presentation software: flexibility in function""" start="00:05:30.520" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""Let's talk about""" start="00:05:30.520" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the software that I use.""" start="00:05:31.480" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's a lot of different things that""" start="00:05:33.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I want to be able to show.""" start="00:05:35.980" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And so I need a few different""" start="00:05:37.640" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""software packages— besides Emacs.""" start="00:05:39.300" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""For drawing on the tablet, I use""" start="00:05:42.400" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""(I don't know quite how this is pronounced:""" start="00:05:45.080" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I think it's) Xournal++""" start="00:05:48.360" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I use the web quite a bit,""" start="00:05:51.200" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""especially if I want to just""" start="00:05:54.040" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""spontaneously look something up.""" start="00:05:55.720" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Often I use video,""" start="00:05:57.760" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""especially molecular animations.""" start="00:05:59.680" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And that's incredibly powerful.""" start="00:06:01.500" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And then now and again, I want to look at text.""" start="00:06:04.700" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Especially in""" start="00:06:06.940" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the English course that I teach,""" start="00:06:08.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""there's quite a bit of text.""" start="00:06:09.800" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I'll use Emacs for that.""" start="00:06:11.840" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""The video compositor, the thing that""" start="00:06:15.000" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""puts this video and me in the green screen.""" start="00:06:18.440" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and all of this stuff together, is called""" start="00:06:22.480" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""OBS Studio—and that also does recording.""" start="00:06:25.420" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""It's ALMOST a completely free software stack.""" start="00:06:34.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I use Zoom to do""" start="00:06:37.510" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the streaming and video""" start="00:06:38.750" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""conferencing because all of""" start="00:06:39.930" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the students are forced to use it for""" start="00:06:41.030" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""their other classes and""" start="00:06:42.410" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I've gone along with it.""" start="00:06:44.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""But a good alternative is""" start="00:06:45.410" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Jitsi Meet. There are others.""" start="00:06:46.670" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Okay. Again, here's""" start="00:06:48.860" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the hardware setup. On the tablet,""" start="00:06:50.730" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I'm running Xournal++. On the laptop,""" start="00:06:53.790" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I've got Firefox and VLC, and Emacs.""" start="00:06:56.590" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""OBS is compositing that together.""" start="00:07:00.230" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And I use Zoom, but you could use Jitsi.""" start="00:07:02.890" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Live demonstration""" start="00:07:05.950" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""All right, let's""" start="00:07:05.950" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""demonstrate this live. Here we go.""" start="00:07:07.930" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Here goes, nothing. The drawing program""" start="00:07:09.690" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""is really good because I can draw""" start="00:07:13.610" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""with the stylus on a tablet.""" start="00:07:15.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""It's a remarkable thing—""" start="00:07:17.970" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I teach in these big lecture halls,""" start="00:07:20.090" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and I guess they want them to be fancy?""" start="00:07:22.410" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And so they don't have blackboards and""" start="00:07:24.410" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""whiteboards! If I want to be able to draw,""" start="00:07:25.970" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""if I want to do anything approaching analog,""" start="00:07:29.010" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""it has to be with this software!""" start="00:07:32.170" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""In this presentation, I""" start="00:07:35.290" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""don't have very many diagrams,""" start="00:07:37.810" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but in my courses, most of""" start="00:07:39.490" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the slides are complicated diagrams.""" start="00:07:41.510" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Being able to annotate them""" start="00:07:44.250" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""is really important.""" start="00:07:45.810" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This is why I don't use Emacs for""" start="00:07:47.550" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""presenting these kinds of documents,""" start="00:07:50.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""because I want to be able""" start="00:07:54.530" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to mark them up visually.""" start="00:07:55.810" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I can show you what that looks like.""" start="00:07:57.450" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""OBS""" start="00:07:59.850" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""By the way, here's how OBS works:""" start="00:07:59.850" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I can go from different &quot;scenes&quot;""" start="00:08:02.830" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So I can just do just me,""" start="00:08:04.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""or I can show you the slides,""" start="00:08:06.070" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""or I can show you what I see on the tablet.""" start="00:08:08.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""On the tablet, I can go""" start="00:08:10.790" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""through all of the— notice here,""" start="00:08:12.270" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I'm scrolling through all""" start="00:08:14.230" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""of the different slides.""" start="00:08:16.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I've got all kinds of different markup tools,""" start="00:08:17.350" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and tools for controlling""" start="00:08:19.990" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""zoom and what page I'm on,""" start="00:08:23.170" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but you don't have to see that.""" start="00:08:24.830" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Firefox""" start="00:08:27.190" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""Okay. Firefox, boy, I do a lot of this.""" start="00:08:27.190" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""All of the quizzes,""" start="00:08:32.390" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""quizzes and exams in my courses""" start="00:08:36.790" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""are online on this""" start="00:08:38.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""web platform called Canvas,""" start="00:08:40.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""which is good enough.""" start="00:08:43.370" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""It's based on a GPL3 package,""" start="00:08:45.430" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but this one is proprietary for Penn State.""" start="00:08:49.590" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Notice that there's a quiz""" start="00:08:53.070" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""every day, and this quiz,""" start="00:08:55.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""every quiz has a recording from""" start="00:08:57.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that day and you notice""" start="00:08:59.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""there's a picture of me teaching,""" start="00:09:00.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""pointing to the slides.""" start="00:09:01.890" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's the slides themselves.""" start="00:09:05.030" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I use OBS to composite in""" start="00:09:06.970" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the Zoom chat because I teach this hybrid.""" start="00:09:09.590" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's people in the room""" start="00:09:12.770" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and there's people at""" start="00:09:13.710" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""other campuses who are in this course.""" start="00:09:14.570" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Having the Zoom chat in""" start="00:09:17.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the live feed is very useful.""" start="00:09:19.390" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Then the quiz—""" start="00:09:22.650" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""at the next class meeting,""" start="00:09:25.730" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""we'll go through this quiz.""" start="00:09:26.670" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Here's some experimental data""" start="00:09:27.890" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and here's a question where they're""" start="00:09:30.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""supposed to interpret these data.""" start="00:09:31.650" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""We can in class together,""" start="00:09:36.590" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""we can review those.""" start="00:09:38.850" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""That's why Firefox is useful.""" start="00:09:41.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Being able to inhabit,""" start="00:09:47.970" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""being able to inhabit""" start="00:09:50.570" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""figures like this is incredibly powerful.""" start="00:09:52.830" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This is the silver lining of being""" start="00:09:56.870" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""forced to teach online during the pandemic,""" start="00:09:59.350" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""because I couldn't do""" start="00:10:02.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""this before I had a green screen.""" start="00:10:03.070" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""But even more powerful than this—""" start="00:10:05.760" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""For years, I showed students""" start="00:10:09.540" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""this figure by standing in front""" start="00:10:10.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""of it or by having a""" start="00:10:12.340" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""projector screen above me.""" start="00:10:13.700" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And I said, &quot;This is the B form of DNA.&quot;""" start="00:10:15.240" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""&quot;This is the most common form of DNA.&quot;""" start="00:10:18.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""&quot;You see here that there's this minor groove.&quot;""" start="00:10:20.380" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""&quot;And then this feature""" start="00:10:22.580" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""is called the major groove.&quot;""" start="00:10:23.420" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And students couldn't see it.""" start="00:10:24.420" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Animation""" start="00:10:26.060" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""But if you animate it—""" start="00:10:26.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""if you just have it""" start="00:10:29.440" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""move, the apparent movement,""" start="00:10:30.280" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""It's not really movement,""" start="00:10:33.320" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""it's apparent movement.""" start="00:10:34.400" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And it tricks your visual cortex into""" start="00:10:35.380" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""adding three dimensional structure to this.""" start="00:10:37.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You can see this feature is""" start="00:10:40.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the major groove and that feature""" start="00:10:42.580" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""is the minor groove. And a static""" start="00:10:45.340" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""image just can't provide""" start="00:10:47.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that understanding, while moving image can.""" start="00:10:48.320" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Emacs""" start="00:10:55.790" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""I use Emacs to look at text.""" start="00:10:55.790" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Where's Emacs? Here's Emacs! We read""" start="00:10:58.180" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Vonnegut in this English class that I""" start="00:11:02.520" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""teach and I'm going to tab over to Emacs.""" start="00:11:04.280" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""It's nice to be able""" start="00:11:07.760" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to have text jump""" start="00:11:09.860" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""around and be dynamic, right?""" start="00:11:12.420" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""If you, if you want to look""" start="00:11:14.160" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""at this passage and I'll""" start="00:11:16.860" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""have somebody read it aloud.""" start="00:11:18.040" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And then we talk about why he chose""" start="00:11:19.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""this word and why he chose that word,""" start="00:11:20.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and the cadence, and the alliteration.""" start="00:11:22.500" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Then we can go to another particular excerpt""" start="00:11:25.180" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and pick that apart on the screen together.""" start="00:11:30.840" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""That would be difficult to do with""" start="00:11:33.440" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""other software that would be very tedious""" start="00:11:34.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to do on the chalkboard.""" start="00:11:36.820" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So Emacs is really good for that sort of thing.""" start="00:11:39.400" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Making slides and handouts with Org Mode""" start="00:11:42.260" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""Mostly what I use Emacs for is not to""" start="00:11:42.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""present but to make slides and handouts.""" start="00:11:45.380" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Okay. Again, the thing that I want to""" start="00:11:50.340" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""stress is that the slides""" start="00:11:52.360" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and the handouts can be produced from""" start="00:11:54.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""a single Org mode document.""" start="00:11:56.740" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This entire presentation""" start="00:12:01.180" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""was assembled in Emacs.""" start="00:12:04.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I'll show you how I did that.""" start="00:12:05.700" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I think everybody""" start="00:12:08.420" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""probably knows what Org mode is.""" start="00:12:11.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""But for our purposes, it's a way""" start="00:12:13.160" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to write documents in plain text.""" start="00:12:14.640" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""That's very important because one of""" start="00:12:16.120" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the biggest advantages of this is""" start="00:12:19.840" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""being able to do version control.""" start="00:12:22.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I don't have Powerpoint decks""" start="00:12:24.740" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""everywhere with slides that""" start="00:12:27.780" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""there's no way to keep track of them.""" start="00:12:29.360" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Having these be plain text""" start="00:12:31.240" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""means that I can just put them in""" start="00:12:32.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""a git repository.""" start="00:12:33.580" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Very clean and human readable markup""" start="00:12:36.140" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""including handling tables""" start="00:12:37.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""which is just incredibly powerful.""" start="00:12:41.160" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You can manage projects and tasks.""" start="00:12:43.340" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""But the fact that it's an outline""" start="00:12:45.460" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that you can produce a document that's""" start="00:12:47.300" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""hierarchical and fold and""" start="00:12:48.980" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""reveal different parts of it.""" start="00:12:51.280" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""But to produce a book length lectures for""" start="00:12:52.980" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""an entire semester and use""" start="00:12:57.120" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""those to produce both slides and handouts,""" start="00:12:58.920" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that's very powerful,""" start="00:13:01.400" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""at least for my brain. To be able to""" start="00:13:03.180" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""put it all together and have it be""" start="00:13:05.000" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""discursive rather""" start="00:13:06.780" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""than having to be graphical.""" start="00:13:08.400" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You can export to""" start="00:13:09.920" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""a million different formats including""" start="00:13:11.880" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""PDF documents like the handouts as""" start="00:13:15.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""LaTeX, and slides like these through Beamer export.""" start="00:13:17.000" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Pedagogy first""" start="00:13:22.680" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""The approach is to think""" start="00:13:22.680" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""about pedagogy rather than thinking""" start="00:13:24.920" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""about software or thinking""" start="00:13:26.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""about graphic design.""" start="00:13:28.280" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""To think about how can""" start="00:13:31.000" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I make the best argument?""" start="00:13:32.600" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""How can I make the best,""" start="00:13:34.380" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the most effective sequence of ideas?""" start="00:13:35.980" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""All I've done is make a few tweaks to""" start="00:13:40.880" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the export backends for LaTeX and""" start="00:13:45.000" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Beamer to customize them""" start="00:13:47.980" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""for my particular needs.""" start="00:13:49.980" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And I'll show you what I've done.""" start="00:13:51.500" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You've seen this already. I'll put""" start="00:13:54.600" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""one idea in big text on the screen.""" start="00:13:58.060" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I find it to be effective to""" start="00:14:00.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""make a single idea explicit at one time.""" start="00:14:04.620" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Now, some concepts can""" start="00:14:09.120" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""be explained with words or text,""" start="00:14:12.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but many ideas are best just illustrated.""" start="00:14:14.800" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""In contrast, we've""" start="00:14:20.260" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""all used Powerpoint, right?""" start="00:14:22.540" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And Edward Tufte has taught us""" start="00:14:23.980" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""about how Powerpoint is so""" start="00:14:25.700" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""terrible from a cognitive point of""" start="00:14:27.480" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""view and from a communications point of view.""" start="00:14:29.240" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So using Org mode is much better.""" start="00:14:31.800" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""How is it better?""" start="00:14:35.400" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Well, Tufte also tells us that""" start="00:14:36.760" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""any oral presentation that is substantive at all""" start="00:14:42.040" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""has to have some physical handout""" start="00:14:49.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that the audience can use to take notes on.""" start="00:14:52.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Slides are terrible handouts.""" start="00:14:55.710" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And notes are usually terrible slides.""" start="00:14:59.030" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Having one document where you""" start="00:15:02.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""can produce both and have them be,""" start="00:15:03.690" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""have the same organization,""" start="00:15:05.850" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but different structures and""" start="00:15:08.410" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""different visual organization is""" start="00:15:10.350" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""something that I wanted""" start="00:15:14.750" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""for a long time and I can only do it""" start="00:15:16.610" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""with Emacs.""" start="00:15:18.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Being able""" start="00:15:20.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""also for my brain to""" start="00:15:21.410" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""separate the work of writing and developing""" start="00:15:22.730" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""ideas and developing explanations""" start="00:15:25.310" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and developing arguments""" start="00:15:28.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and scaffolding them.""" start="00:15:30.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""That's jargon in pedagogy""" start="00:15:31.430" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""for bringing the student along.""" start="00:15:33.690" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Separate that work from wrangling slides.""" start="00:15:36.890" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""That's super helpful for me.""" start="00:15:41.350" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Again, you have""" start="00:15:44.530" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""an Org document that makes""" start="00:15:46.710" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""both the handouts and the slides.""" start="00:15:48.230" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""What's beautiful about it is""" start="00:15:51.370" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that everything is an outline.""" start="00:15:53.450" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And again, it's very discursive.""" start="00:15:54.650" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Here's Tufte's famous poster where he's making""" start="00:15:56.430" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""fun of the psychology of Powerpoint.""" start="00:15:59.110" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I don't know about you, but I have the kind of brain""" start="00:16:02.010" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and I'm in the kind of job""" start="00:16:05.750" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and I'm at the age where I don't have extra""" start="00:16:07.610" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""cognitive function! You know?""" start="00:16:09.910" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""So streamlining this workflow""" start="00:16:12.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""has been really helpful.""" start="00:16:15.730" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""org-teach""" start="00:16:17.790" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""All right, so let me show""" start="00:16:17.790" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""you what I've developed.""" start="00:16:19.310" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Let's look at the Org doc.""" start="00:16:21.650" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Okay. So what you see is you have""" start="00:16:24.490" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""a typical Org mode buffer.""" start="00:16:25.830" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""There's two headings here.""" start="00:16:30.770" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""One of them is stuff that I've deleted and""" start="00:16:32.850" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the other is the talk.""" start="00:16:35.530" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And so all of these subheadings have""" start="00:16:39.270" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""various things underneath including""" start="00:16:43.110" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""these macros that I wrote like `include-slide`,""" start="00:16:46.390" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""`impact-slide`, `subsection-slide`,""" start="00:16:48.970" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""et cetera, and then a bunch of stuff.""" start="00:16:51.230" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Then I've got this include""" start="00:16:54.950" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""file that just has""" start="00:16:59.310" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the macros that I've written.""" start="00:17:01.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""You can look at this on the repo.""" start="00:17:03.290" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I'm not going to take""" start="00:17:05.450" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the time to walk through it and""" start="00:17:06.290" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""explain what all the LaTeX means.""" start="00:17:07.570" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""But the upshot is""" start="00:17:10.370" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that by including that file""" start="00:17:16.510" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that has all the macro definitions,""" start="00:17:20.550" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""you get things like this macro pause""" start="00:17:22.430" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""or newline or whitespace-break,""" start="00:17:25.650" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""which just allow—""" start="00:17:27.690" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""pause splits a slide into two frames,""" start="00:17:30.810" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""so you can get these overlays,""" start="00:17:33.010" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""so you can go through paragraphs one by one.""" start="00:17:34.570" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""These just put""" start="00:17:36.310" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""white space in.""" start="00:17:38.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Text-slides: This thing here, this title""" start="00:17:44.650" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""is level three heading.""" start="00:17:47.110" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Figure-slides:""" start="00:17:49.170" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the same thing are level three headings.""" start="00:17:50.190" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""One of the most powerful things""" start="00:17:52.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""is that I can take other files,""" start="00:17:54.010" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I can take other Org files that have level""" start="00:17:56.230" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""three headings that are slides and those can""" start="00:18:00.150" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""be in some other repository.""" start="00:18:02.790" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I only need to have one version of""" start="00:18:06.210" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that slide that I""" start="00:18:08.510" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""can use in multiple courses.""" start="00:18:09.910" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Just that functionality is""" start="00:18:13.230" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""incredibly helpful for keeping""" start="00:18:17.110" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""track of work from a few years ago.""" start="00:18:19.910" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""All of these I'm going to""" start="00:18:22.810" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""explain in the next few slides.""" start="00:18:24.270" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""The section slides""" start="00:18:25.930" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""correspond to course modules.""" start="00:18:27.710" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Each of these is going to""" start="00:18:29.910" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""be a few weeks of a course.""" start="00:18:31.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This is a major division of a course.""" start="00:18:32.550" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I have some macros so that I can decorate""" start="00:18:34.630" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""this with relevant information.""" start="00:18:36.910" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Then for every subsection,""" start="00:18:41.390" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""level two headline, that""" start="00:18:43.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""corresponds to a major""" start="00:18:45.570" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""course topic in the module.""" start="00:18:46.730" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Then text slides, again,""" start="00:18:48.590" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""level three headlines become""" start="00:18:50.210" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""titles for the slide,""" start="00:18:52.850" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and level four headlines become text elements.""" start="00:18:53.970" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Most of my slides look like this.""" start="00:18:58.900" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""They're figures.""" start="00:19:01.680" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Here's the glycolytic pathway.""" start="00:19:03.140" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Level three gives you the title.""" start="00:19:06.020" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""It's missing here actually,""" start="00:19:11.420" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""but there's a way you can put in captions.""" start="00:19:14.280" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""This line here just tells""" start="00:19:16.720" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the LaTeX export backend""" start="00:19:18.960" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""how big you want it and stuff like that.""" start="00:19:21.040" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Impact slides, they have to go under H1 or H2.""" start="00:19:24.220" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And they just give you one of these text slides.""" start="00:19:29.140" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""For an entire slide being an image,""" start="00:19:32.450" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""you can use this image-slide macro.""" start="00:19:35.650" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Blank slides""" start="00:19:38.330" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""I often put in blank slides to""" start="00:19:38.330" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""remind myself that this is a time to stop.""" start="00:19:41.130" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Often there's something for me to""" start="00:19:43.270" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""draw here with the stylus.""" start="00:19:44.790" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Animations""" start="00:19:50.050" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""I often use— it used to be Powerpoint,""" start="00:19:50.050" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""now I use LibreOffice Impress—to make""" start="00:19:53.150" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""multi slide animations like""" start="00:19:56.070" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the sphere and the donut and the GI tract.""" start="00:19:58.310" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""And this hardware thing""" start="00:20:01.310" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that I did for you today,""" start="00:20:03.250" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I export those animations as PDFs.""" start="00:20:05.270" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Then I can just slurp them up into the slides.""" start="00:20:07.950" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Just into the slides, not into""" start="00:20:14.470" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""the handouts with this macro.""" start="00:20:16.670" video="mainVideo-uni" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:20:19.270" video="mainVideo-uni" id="subtitle"]]
+
+[[!template text="""I hope that you find this useful.""" start="00:20:19.270" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I hope you share it with""" start="00:20:21.490" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""other educators that you know.""" start="00:20:22.450" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Here is the sourcehut repo,""" start="00:20:24.090" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""here's how to get in touch with me.""" start="00:20:27.150" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I look forward to addressing your questions.""" start="00:20:29.070" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""I want to say thank you""" start="00:20:32.690" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to Sacha [Chua] and the organizers,""" start="00:20:34.990" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and to everyone who made this possible and""" start="00:20:36.610" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""to all of you in the community.""" start="00:20:38.450" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Because as we all know,""" start="00:20:40.690" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""that that's what makes Emacs such a strong""" start="00:20:42.770" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""and powerful package is""" start="00:20:47.430" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""all of the people behind it.""" start="00:20:50.090" video="mainVideo-uni" id="subtitle"]]
+[[!template text="""Thanks everybody.""" start="00:20:51.330" video="mainVideo-uni" id="subtitle"]]
+
+<a name="uni-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: You can hear us. Can you perhaps do it for""" start="00:00:00.000" video="qanda-uni" id="subtitle"]]
+[[!template text="""me? Great. The little angels in the""" start="00:00:01.839" video="qanda-uni" id="subtitle"]]
+[[!template text="""background have done it for me.""" start="00:00:03.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""So now finally that everything is ready.""" start="00:00:05.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""Hi James, how are you doing?""" start="00:00:07.759" video="qanda-uni" id="subtitle"]]
+[[!template text="""Good morning. Hello. Well,""" start="00:00:13.780" video="qanda-uni" id="subtitle"]]
+[[!template text="""thank you for your talk and sorry for the""" start="00:00:14.599" video="qanda-uni" id="subtitle"]]
+[[!template text="""little hiccup at the middle we had to pull""" start="00:00:16.320" video="qanda-uni" id="subtitle"]]
+[[!template text="""out a fire with the audio going out in the""" start="00:00:19.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""middle and sorry about this.""" start="00:00:20.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: It's no trouble.""" start="00:00:23.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: So James, you've obviously told us about your""" start="00:00:25.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""very fancy setup with the green screen and""" start="00:00:28.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""I'm sad to see that you haven't put out the""" start="00:00:30.220" video="qanda-uni" id="subtitle"]]
+[[!template text="""green screen for your BBB session right now.""" start="00:00:32.840" video="qanda-uni" id="subtitle"]]
+[[!template text="""Do you have it in the background just for""" start="00:00:35.579" video="qanda-uni" id="subtitle"]]
+[[!template text="""you? Right, okay, it wasn't that far.""" start="00:00:37.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""Great. So I'm just going to ask,""" start="00:00:40.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""so this is the first live Q&A that we have""" start="00:00:44.180" video="qanda-uni" id="subtitle"]]
+[[!template text="""for the session so things might be coming""" start="00:00:47.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""into place so pardon us if we take a little""" start="00:00:49.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""bit of time to put the questions on the""" start="00:00:51.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""screen and all of this.""" start="00:00:54.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""What I'm going to do, I'm just going to load""" start="00:00:56.400" video="qanda-uni" id="subtitle"]]
+[[!template text="""up the pad. I would invite James to also open""" start="00:00:57.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""the pad on his hand. So yeah,""" start="00:01:02.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""I've got people talking in my ears and it's""" start="00:01:04.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""been a while since I've last had this.""" start="00:01:05.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""And okay, so opening the talks right now,""" start="00:01:08.260" video="qanda-uni" id="subtitle"]]
+[[!template text="""opening the pad if I can find it.""" start="00:01:12.100" video="qanda-uni" id="subtitle"]]
+[[!template text="""Open up the pad. Okay.""" start="00:01:14.120" video="qanda-uni" id="subtitle"]]
+[[!template text="""So have you got a pad open on your end,""" start="00:01:19.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""James? So I can read the question.""" start="00:01:21.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""So, okay, great. Opening it on my end as""" start="00:01:23.119" video="qanda-uni" id="subtitle"]]
+[[!template text="""well. What I'm going to do,""" start="00:01:26.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""folks, I see some of you have joined us.""" start="00:01:28.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""I'm going to start doing is first taking""" start="00:01:39.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""questions in the other part because it's a""" start="00:01:42.500" video="qanda-uni" id="subtitle"]]
+[[!template text="""little faster to ask questions like this.""" start="00:01:44.220" video="qanda-uni" id="subtitle"]]
+[[!template text="""And then as soon as we've finished,""" start="00:01:46.520" video="qanda-uni" id="subtitle"]]
+[[!template text="""feel free to unmute yourself and ask your""" start="00:01:48.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""questions. All right so I've got some""" start="00:01:49.920" video="qanda-uni" id="subtitle"]]
+[[!template text="""reactions about OBS being cool and yes both""" start="00:01:54.180" video="qanda-uni" id="subtitle"]]
+[[!template text="""James and I will be able to tell you that""" start="00:01:57.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""it's very cool we do very fancy stuff like""" start="00:01:59.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""when I need to talk to production in the""" start="00:02:04.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""background and all the stuff obviously that""" start="00:02:05.640" video="qanda-uni" id="subtitle"]]
+[[!template text="""James has been able to show you with a green""" start="00:02:07.540" video="qanda-uni" id="subtitle"]]
+[[!template text="""screen. So I don't see a whole lot of""" start="00:02:09.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""questions so far. I see a lot of reactions on""" start="00:02:12.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""publishing lectures book and of a classic""" start="00:02:16.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""example is John Kitchens obviously.""" start="00:02:17.760" video="qanda-uni" id="subtitle"]]
+[[!template text="""Pedagogy first developments.""" start="00:02:20.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""Macros are a cool idea.""" start="00:02:23.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""Okay questions. So how do you overlap""" start="00:02:25.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""yourself with a presentation.""" start="00:02:28.820" video="qanda-uni" id="subtitle"]]
+[[!template text="""It's so cool. It's quite simple.""" start="00:02:30.420" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: OBS provides filters for every...""" start="00:02:36.420" video="qanda-uni" id="subtitle"]]
+[[!template text="""You can have a separate filter for each video""" start="00:02:40.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""feed and 1 of the filters that's available is""" start="00:02:42.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""chroma key. You just choose a color to make""" start="00:02:44.960" video="qanda-uni" id="subtitle"]]
+[[!template text="""transparent and just make sure that the""" start="00:02:47.840" video="qanda-uni" id="subtitle"]]
+[[!template text="""webcam is at the top of the composition.""" start="00:02:52.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""And the thing that surprised me the most was""" start="00:02:57.180" video="qanda-uni" id="subtitle"]]
+[[!template text="""how quickly my brain was able to mirror""" start="00:03:00.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""everything and control my body from a""" start="00:03:05.420" video="qanda-uni" id="subtitle"]]
+[[!template text="""separate point of view like the way weather""" start="00:03:07.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""broadcasts are done. It took seconds to be""" start="00:03:10.720" video="qanda-uni" id="subtitle"]]
+[[!template text="""able to do that. Well,""" start="00:03:15.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""and now I have years of practice because that""" start="00:03:16.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""set up that you saw that I used to record""" start="00:03:20.320" video="qanda-uni" id="subtitle"]]
+[[!template text="""this video. I used for years during the""" start="00:03:22.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""pandemic for 4 or 5 semesters to because my""" start="00:03:26.960" video="qanda-uni" id="subtitle"]]
+[[!template text="""courses are all have 2,""" start="00:03:32.180" video="qanda-uni" id="subtitle"]]
+[[!template text="""3, 400 students, except for the English""" start="00:03:33.760" video="qanda-uni" id="subtitle"]]
+[[!template text="""class, which has, you know,""" start="00:03:36.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""30 students. And so during the pandemic,""" start="00:03:38.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""and even after lockdowns were no longer""" start="00:03:41.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""mandated, I taught online just because I""" start="00:03:44.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""didn't want to have so many students in the""" start="00:03:46.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""room at the same time.""" start="00:03:48.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""So I've yeah, I'm it. I have a lot of""" start="00:03:49.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""practice doing that.""" start="00:03:53.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: But it pays off because it looks so natural,""" start="00:03:56.120" video="qanda-uni" id="subtitle"]]
+[[!template text="""you know, it feels like it's the same thing""" start="00:03:58.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""with weathercasters, you know,""" start="00:04:00.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""it sounds very it looks very easy to do,""" start="00:04:01.520" video="qanda-uni" id="subtitle"]]
+[[!template text="""but it also takes quite a bit of practice.""" start="00:04:03.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""1 of the things that you also need to""" start="00:04:07.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""remember if you're using a chroma key that""" start="00:04:08.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""James has explained is that you need to have""" start="00:04:10.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""very good lighting, basically for the color""" start="00:04:11.880" video="qanda-uni" id="subtitle"]]
+[[!template text="""to pop out in the background and for your""" start="00:04:14.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""body to be easily highlightable.""" start="00:04:16.320" video="qanda-uni" id="subtitle"]]
+[[!template text="""Okay, were you finished with this question?""" start="00:04:19.399" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, let's take another 1.""" start="00:04:23.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sure. So how do you deal with video in Beam?""" start="00:04:25.640" video="qanda-uni" id="subtitle"]]
+[[!template text="""I found it so hard to do that.""" start="00:04:28.700" video="qanda-uni" id="subtitle"]]
+[[!template text="""PPT on the other end is easier to achieve.""" start="00:04:30.720" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, so remember that the slides get""" start="00:04:36.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""produced from Org Mode as PDFs.""" start="00:04:41.480" video="qanda-uni" id="subtitle"]]
+[[!template text="""Well, and in fact, I even before when I was""" start="00:04:47.540" video="qanda-uni" id="subtitle"]]
+[[!template text="""using other software to produce slides,""" start="00:04:50.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""I produced them as PDFs,""" start="00:04:52.580" video="qanda-uni" id="subtitle"]]
+[[!template text="""precisely because I wanted to be able to mark""" start="00:04:54.720" video="qanda-uni" id="subtitle"]]
+[[!template text="""them up on on the screen with the stylus.""" start="00:04:56.840" video="qanda-uni" id="subtitle"]]
+[[!template text="""And so I don't do video in the slides.""" start="00:05:02.100" video="qanda-uni" id="subtitle"]]
+[[!template text="""I use OBS to switch from static slides that I""" start="00:05:06.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""mark up with the stylus over to some kind of""" start="00:05:09.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""video viewer and then back.""" start="00:05:12.840" video="qanda-uni" id="subtitle"]]
+[[!template text="""And again, that's how I can use Firefox.""" start="00:05:15.620" video="qanda-uni" id="subtitle"]]
+[[!template text="""I use OBS to switch between Firefox and video""" start="00:05:17.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""and the Shornell plus plus program where I""" start="00:05:22.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""can mark up slides. So those functionalities""" start="00:05:26.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""are that's why I use different software and""" start="00:05:31.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""pull it all together with OBS so that I can""" start="00:05:35.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""have lots of functional flexibility.""" start="00:05:37.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: Great. Do you ever use things like""" start="00:05:44.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""org-present and stay for the PowerPoint""" start="00:05:47.700" video="qanda-uni" id="subtitle"]]
+[[!template text="""slides? I'm not sure exactly how to read this""" start="00:05:51.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""particular question but at least we can focus""" start="00:05:53.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""on org-present. Are you familiar with what it""" start="00:05:54.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""is?""" start="00:05:56.840" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: I have played around with org-present and""" start="00:05:58.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""again I guess you could use org-present to""" start="00:06:02.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""show images and to show headings as slides.""" start="00:06:07.640" video="qanda-uni" id="subtitle"]]
+[[!template text="""But again, because I'm it's such a crucial""" start="00:06:13.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""functionality to be able to mark them up with""" start="00:06:18.100" video="qanda-uni" id="subtitle"]]
+[[!template text="""stylus. I didn't really show this very much,""" start="00:06:22.120" video="qanda-uni" id="subtitle"]]
+[[!template text="""but I also highlight things the way I would""" start="00:06:25.760" video="qanda-uni" id="subtitle"]]
+[[!template text="""highlight using a laser pointer on the""" start="00:06:27.780" video="qanda-uni" id="subtitle"]]
+[[!template text="""screen. And again, I don't see Emacs being""" start="00:06:30.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""able to do that for another couple of""" start="00:06:36.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""generations. So really the only thing I use""" start="00:06:38.560" video="qanda-uni" id="subtitle"]]
+[[!template text="""Emacs for during presentations is to narrow""" start="00:06:42.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""headings that we can focus on particular text""" start="00:06:48.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""excerpts.""" start="00:06:52.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. Yeah. A lot of our presentation at""" start="00:06:55.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""EmacsConf are usually,""" start="00:06:59.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""especially the Org Mode ones are done with""" start="00:07:00.420" video="qanda-uni" id="subtitle"]]
+[[!template text="""OrgPresent. And. Sorry,""" start="00:07:02.260" video="qanda-uni" id="subtitle"]]
+[[!template text="""I had again someone talk to me in a year.""" start="00:07:06.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""You know, the problem with EmacsConf is that""" start="00:07:09.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""every year, you know, you have to relearn a""" start="00:07:11.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""lot of skills. And by the time we finished by""" start="00:07:13.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""Sunday evening we are masters of it and then""" start="00:07:16.780" video="qanda-uni" id="subtitle"]]
+[[!template text="""we forget everything by the time the next""" start="00:07:19.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""year comes around. What I was going to say is""" start="00:07:21.820" video="qanda-uni" id="subtitle"]]
+[[!template text="""that org-present is often used by people""" start="00:07:24.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""inside Emacs conf presenting about org-mode""" start="00:07:27.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""but yeah whenever you need to do something a""" start="00:07:31.100" video="qanda-uni" id="subtitle"]]
+[[!template text="""little more visual, it gets a little more""" start="00:07:32.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""complicated. Some people have tried to do""" start="00:07:34.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""fancy stuff with SVG, which is probably the""" start="00:07:36.540" video="qanda-uni" id="subtitle"]]
+[[!template text="""path forward for this type of stuff.""" start="00:07:39.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""But yeah, if you need to draw,""" start="00:07:41.400" video="qanda-uni" id="subtitle"]]
+[[!template text="""if you need to highlight,""" start="00:07:43.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""it is pretty complicated.""" start="00:07:44.760" video="qanda-uni" id="subtitle"]]
+[[!template text="""Perhaps something that you might want to be""" start="00:07:46.820" video="qanda-uni" id="subtitle"]]
+[[!template text="""interested, James, in checking out is PDF""" start="00:07:48.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""tools, which is a way to open up a PDF in""" start="00:07:50.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""Emacs. And this allows you to have basic PDF""" start="00:07:56.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""annotations, like putting a little bit of a""" start="00:07:59.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""Nikon on it. Perhaps you've already played""" start="00:08:01.560" video="qanda-uni" id="subtitle"]]
+[[!template text="""with it.""" start="00:08:04.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: I have used that. PDF tools is an incredible""" start="00:08:06.260" video="qanda-uni" id="subtitle"]]
+[[!template text="""package but until it allows me to make a mark""" start="00:08:10.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""on the screen that shows up in a video""" start="00:08:14.560" video="qanda-uni" id="subtitle"]]
+[[!template text="""compositor. It's not going to replace""" start="00:08:18.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""Shortenel.""" start="00:08:21.420" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: Definitely. All right.""" start="00:08:23.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""Moving on to the next question.""" start="00:08:24.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""Is the triple-accolade syntax an Org Mode""" start="00:08:26.400" video="qanda-uni" id="subtitle"]]
+[[!template text="""core feature that I missed so far or did you""" start="00:08:28.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""program that and thank you for the great""" start="00:08:31.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""talk.""" start="00:08:33.120" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you very much. No,""" start="00:08:36.659" video="qanda-uni" id="subtitle"]]
+[[!template text="""it's just part of all of the export backends.""" start="00:08:38.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""Actually, I think the way it works is it""" start="00:08:43.299" video="qanda-uni" id="subtitle"]]
+[[!template text="""precedes all of the export backends.""" start="00:08:45.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""When you export, the first thing that happens""" start="00:08:47.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""is expansion of macros.""" start="00:08:50.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""And that's a built-in org mode feature.""" start="00:08:52.720" video="qanda-uni" id="subtitle"]]
+[[!template text="""It's definitely beyond my Emacs Lisp powers""" start="00:08:56.640" video="qanda-uni" id="subtitle"]]
+[[!template text="""to be able to have made something that""" start="00:08:59.690" video="qanda-uni" id="subtitle"]]
+[[!template text="""powerful. That's right.""" start="00:09:01.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""I have come a long way.""" start="00:09:07.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: For now. You know, we always,""" start="00:09:02.640" video="qanda-uni" id="subtitle"]]
+[[!template text="""you know, most of the people who show up to""" start="00:09:11.720" video="qanda-uni" id="subtitle"]]
+[[!template text="""Max Conf. Especially talking about stuff that""" start="00:09:13.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""has to do with presentations or what they do""" start="00:09:15.480" video="qanda-uni" id="subtitle"]]
+[[!template text="""in academia. You know,""" start="00:09:18.260" video="qanda-uni" id="subtitle"]]
+[[!template text="""they always say, oh, but,""" start="00:09:19.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""you know, I couldn't have done all this,""" start="00:09:20.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""you know, it's just far away.""" start="00:09:22.589" video="qanda-uni" id="subtitle"]]
+[[!template text="""And then they come back 1 year or 2 years""" start="00:09:24.260" video="qanda-uni" id="subtitle"]]
+[[!template text="""later and then, oh, I've made my entire""" start="00:09:26.320" video="qanda-uni" id="subtitle"]]
+[[!template text="""library for presentation and stuff like this.""" start="00:09:27.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""So Be hopeful about what the future holds for""" start="00:09:29.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""you in terms of coming up with crazy new""" start="00:09:32.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""features for the entire ecosystem.""" start="00:09:34.960" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, let me tell you,""" start="00:09:37.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""since the pandemic, I have written,""" start="00:09:39.560" video="qanda-uni" id="subtitle"]]
+[[!template text="""I wrote my first major mode.""" start="00:09:42.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""It's trivial, but it provides functionality""" start="00:09:44.760" video="qanda-uni" id="subtitle"]]
+[[!template text="""that is very useful to me and it's it's going""" start="00:09:47.220" video="qanda-uni" id="subtitle"]]
+[[!template text="""to sound like I'm just trying to butter""" start="00:09:52.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""everyone up but seeing a lot of the names in""" start="00:09:54.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""the IRC channel people who have taught me so""" start="00:09:57.260" video="qanda-uni" id="subtitle"]]
+[[!template text="""much on their YouTube channels and in their""" start="00:10:00.820" video="qanda-uni" id="subtitle"]]
+[[!template text="""blog posts and on Reddit and on Mastodon.""" start="00:10:05.220" video="qanda-uni" id="subtitle"]]
+[[!template text="""Without many of the people who are here today""" start="00:10:09.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""watching my talk, it's very fun to have""" start="00:10:12.620" video="qanda-uni" id="subtitle"]]
+[[!template text="""people who have helped me learn so much about""" start="00:10:15.820" video="qanda-uni" id="subtitle"]]
+[[!template text="""Emacs. So thanks to all of you.""" start="00:10:18.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, and yeah, and now you're becoming part""" start="00:10:21.580" video="qanda-uni" id="subtitle"]]
+[[!template text="""of this crew of people inspiring others to do""" start="00:10:24.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""very much the same. So thank you for joining""" start="00:10:27.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you very much.""" start="00:10:31.460" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: the crew. Great. Moving on to the 2 last""" start="00:10:29.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""questions and then we'll open up the mic to""" start="00:10:35.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""other people on Big Blue Button.""" start="00:10:36.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""What kind of comparative feedback are""" start="00:10:39.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""students giving you regarding your approach?""" start="00:10:40.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, my gosh. Students were ready to during""" start="00:10:44.960" video="qanda-uni" id="subtitle"]]
+[[!template text="""the pandemic especially when most of the""" start="00:10:48.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""courses were just being taught over zoom by""" start="00:10:53.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""people sharing their screen.""" start="00:10:55.880" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: Just a second. Sorry. Sorry for the""" start="00:10:57.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""interruption. Very rude interruption.""" start="00:10:58.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""We've got the intro for the next talk playing""" start="00:10:59.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""and I'm not sure what's going on.""" start="00:11:01.220" video="qanda-uni" id="subtitle"]]
+[[!template text="""Give me just a second.""" start="00:11:02.520" video="qanda-uni" id="subtitle"]]
+[[!template text="""Sasha.""" start="00:11:04.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay.""" start="00:11:05.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""Yeah, I think it's started.""" start="00:11:19.320" video="qanda-uni" id="subtitle"]]
+[[!template text="""Okay so yeah I think it's not a""" start="00:11:26.716" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: sure 1 I got the times wrong apparently""" start="00:11:34.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""because of the little delay we had getting""" start="00:11:37.760" video="qanda-uni" id="subtitle"]]
+[[!template text="""the audio fixed up. The good news is that""" start="00:11:40.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""we're still recording the talk right now and""" start="00:11:43.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""we still have James around.""" start="00:11:45.880" video="qanda-uni" id="subtitle"]]
+[[!template text="""Obviously James you're no longer on being""" start="00:11:47.180" video="qanda-uni" id="subtitle"]]
+[[!template text="""broadcast on General but if you want to keep""" start="00:11:49.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""answering questions or if you want to anyone""" start="00:11:53.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""in the room right now wants to ask you""" start="00:11:55.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""questions feel free to do so.""" start="00:11:57.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""I'm going to need to hop off because I need""" start="00:11:59.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""to get other things ready for the next talks""" start="00:12:01.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: But James, thank you so much.""" start="00:12:04.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 0]: sadly. Right and so sorry I'm a little tense""" start="00:12:03.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""obviously because I was not expecting this to""" start="00:12:10.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""happen and that led to a very abrupt end to""" start="00:12:12.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""this discussion but people afterwards on""" start="00:12:15.960" video="qanda-uni" id="subtitle"]]
+[[!template text="""emacsmo.org slash 2023 slash talks will be""" start="00:12:18.480" video="qanda-uni" id="subtitle"]]
+[[!template text="""able to find all the content here.""" start="00:12:21.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""So I'll have to leave now.""" start="00:12:24.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""Thank you so much James for doing the""" start="00:12:25.840" video="qanda-uni" id="subtitle"]]
+[[!template text="""difficult task of opening up EmacsConf and""" start="00:12:28.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""I'll probably see you later.""" start="00:12:30.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you, Leo. Bye bye.""" start="00:12:32.780" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 2]: On your journal program.""" start="00:12:52.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""Yes. You are using the tablet as a monitor,""" start="00:12:58.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""right? Touch screen monitor with that?""" start="00:13:03.520" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: That's exactly right. So it's a tablet so you""" start="00:13:06.480" video="qanda-uni" id="subtitle"]]
+[[!template text="""know I can. It has a touch screen and so.""" start="00:13:08.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""So basically the functionality that that""" start="00:13:13.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""program provides is to be able to just mark""" start="00:13:15.580" video="qanda-uni" id="subtitle"]]
+[[!template text="""up PDFs with a stylus,""" start="00:13:20.580" video="qanda-uni" id="subtitle"]]
+[[!template text="""you know, in the way that you would use any""" start="00:13:23.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""other tablet. And to be able to take that""" start="00:13:25.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""video signal and put it into another machine.""" start="00:13:30.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""That was the that was the key.""" start="00:13:33.840" video="qanda-uni" id="subtitle"]]
+[[!template text="""That's the killer app.""" start="00:13:36.100" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 2]: I've thought about grabbing 1 for the purpose""" start="00:13:39.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""of like changing my laptop into a tablet to""" start="00:13:41.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""read manga, browse the web and kind of""" start="00:13:45.460" video="qanda-uni" id="subtitle"]]
+[[!template text="""curious if it works well like as a wireless""" start="00:13:49.640" video="qanda-uni" id="subtitle"]]
+[[!template text="""monitor with a tablet or how well it like you""" start="00:13:52.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""can use Emacs with it in a tablet mode or""" start="00:13:57.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""were you just""" start="00:14:02.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: or you just use the tablet that I use is this""" start="00:14:03.820" video="qanda-uni" id="subtitle"]]
+[[!template text="""is it it's just a Microsoft Surface and so it""" start="00:14:10.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""comes with a keyboard so you can take the""" start="00:14:14.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""keyboard off. Yeah, but I use it.""" start="00:14:17.780" video="qanda-uni" id="subtitle"]]
+[[!template text="""I use it with the keyboard as well.""" start="00:14:20.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""And I just.""" start="00:14:24.560" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 2]: You're cutting off right now""" start="00:14:30.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Audio Your audio is cutting off right now.""" start="00:14:53.880" video="qanda-uni" id="subtitle"]]
+[[!template text="""I bumped the mute button on the mic.""" start="00:15:32.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""Yeah. So again, this is,""" start="00:15:36.820" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 2]: is the 16 mute buttons you use.""" start="00:15:38.500" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: this It's just the surface pro 3 that I got""" start="00:15:38.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""used and it runs Emacs.""" start="00:15:45.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""I mean it runs. You know Linux really well.""" start="00:15:49.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""And the trouble is that the hard drive you""" start="00:15:54.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""know the SSE drive is small and the RAM is""" start="00:15:59.720" video="qanda-uni" id="subtitle"]]
+[[!template text="""small, but it works for the purposes.""" start="00:16:02.920" video="qanda-uni" id="subtitle"]]
+[[!template text="""Basically, if I had a couple thousand""" start="00:16:07.580" video="qanda-uni" id="subtitle"]]
+[[!template text="""dollars, I could probably buy a touchscreen""" start="00:16:10.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""machine where I could run everything on it""" start="00:16:14.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""and do the streaming and do the video capture""" start="00:16:17.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""and do the PDF markup.""" start="00:16:21.380" video="qanda-uni" id="subtitle"]]
+[[!template text="""But since both of these are so,""" start="00:16:26.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""the hardware that I use is so old and cheap""" start="00:16:28.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""and weak I have to split it across 2""" start="00:16:31.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""machines.""" start="00:16:33.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 2]: There's also a beauty in making the stuff""" start="00:16:35.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""having specific purposes for specific things""" start="00:16:37.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""where it's just not. Yeah it's like I don't""" start="00:16:40.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""want a smart TV that plays Netflix I want a""" start="00:16:46.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""smart TV that has all the smarts that I turn""" start="00:16:50.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""my smart TV into a TV monitor I don't want to""" start="00:16:53.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""yeah""" start="00:16:58.780" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: I totally feel that ethic I totally I totally""" start="00:17:02.200" video="qanda-uni" id="subtitle"]]
+[[!template text="""feel that ethic. Oh, on""" start="00:17:08.659" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 2]: the some other things like if you want you to""" start="00:17:11.760" video="qanda-uni" id="subtitle"]]
+[[!template text="""do highlighting in an org mode document.""" start="00:17:15.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""You can use org web tools.""" start="00:17:17.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""I wrote this in the notes,""" start="00:17:19.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""but you can use org web tools to download a""" start="00:17:20.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""web page and then you can use org remark to""" start="00:17:21.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""start highlighting in the org mode web page""" start="00:17:25.400" video="qanda-uni" id="subtitle"]]
+[[!template text="""and then because an org mode document now you""" start="00:17:28.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""can just edit it directly.""" start="00:17:30.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""If you want other people to join in on an""" start="00:17:35.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""Emacs session you could use a package like""" start="00:17:38.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""what's it called? CRDT.EL""" start="00:17:40.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""that will allow 2 people with 2 different""" start="00:17:47.020" video="qanda-uni" id="subtitle"]]
+[[!template text="""Emacs configurations to edit the same buffer.""" start="00:17:50.160" video="qanda-uni" id="subtitle"]]
+[[!template text="""And you have a host that can host a buffer""" start="00:17:54.140" video="qanda-uni" id="subtitle"]]
+[[!template text="""too. It works with, and they have 1 optional""" start="00:17:58.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""extension for org mode that will synchronize""" start="00:18:06.000" video="qanda-uni" id="subtitle"]]
+[[!template text="""the folding of the org drawers.""" start="00:18:08.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: Interesting. I will look into that.""" start="00:18:12.320" video="qanda-uni" id="subtitle"]]
+[[!template text="""Like""" start="00:18:15.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 2]: having I don't like if you want students like""" start="00:18:19.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""you have each highlight line mode these are""" start="00:18:22.720" video="qanda-uni" id="subtitle"]]
+[[!template text="""just some ideas like you can have like""" start="00:18:25.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""highlight line mode so people can easily see""" start="00:18:27.620" video="qanda-uni" id="subtitle"]]
+[[!template text="""which line you're on cursor tracking and then""" start="00:18:30.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""you can have other people join in students or""" start="00:18:35.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 1]: yeah that's just a possible idea.""" start="00:18:43.180" video="qanda-uni" id="subtitle"]]
+[[!template text="""Is there anyone else in the in the big blue""" start="00:18:45.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""button room who has a question?""" start="00:18:49.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""All right, I'm going to go over to the pad""" start="00:19:01.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""and see if there are any pending questions I""" start="00:19:03.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""can address. Thanks, Plasma Strike.""" start="00:19:05.280" video="qanda-uni" id="subtitle"]]
+[[!template text="""[Speaker 3]: Yep. Which could be PDF,""" start="00:19:27.500" video="qanda-uni" id="subtitle"]]
+[[!template text="""could be Markdown, could be OpenOffice,""" start="00:19:33.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""could be a notebook format.""" start="00:19:38.560" video="qanda-uni" id="subtitle"]]
+[[!template text="""This methodology was conceived by Donald""" start="00:19:40.960" video="qanda-uni" id="subtitle"]]
+[[!template text="""Knuth in 1984. The main purpose of literal""" start="00:19:43.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""programming is not only to make code or""" start="00:19:51.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""documentation or output more manageable,""" start="00:19:54.700" video="qanda-uni" id="subtitle"]]
+[[!template text="""but to allow humans to create a data story to""" start="00:19:57.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""be used from a single source.""" start="00:20:01.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""What you see on the slide on the left-hand""" start="00:20:04.540" video="qanda-uni" id="subtitle"]]
+[[!template text="""side is the story and code inside an org-mod""" start="00:20:06.300" video="qanda-uni" id="subtitle"]]
+[[!template text="""file. The file starts with some""" start="00:20:09.400" video="qanda-uni" id="subtitle"]]
+[[!template text="""documentation, then you write back down this""" start="00:20:14.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""code, and at the bottom you see the output""" start="00:20:18.420" video="qanda-uni" id="subtitle"]]
+[[!template text="""file, which is not shown in the slide itself.""" start="00:20:22.060" video="qanda-uni" id="subtitle"]]
+[[!template text="""In the middle you have the source code,""" start="00:20:26.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""which is the result of tangling or opening a""" start="00:20:28.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""buffer inside offload.""" start="00:20:33.980" video="qanda-uni" id="subtitle"]]
+[[!template text="""On the very right hand side we have a PDF,""" start="00:20:37.660" video="qanda-uni" id="subtitle"]]
+[[!template text="""actually this HTML, very same file that you""" start="00:20:42.580" video="qanda-uni" id="subtitle"]]
+[[!template text="""see in memory language.""" start="00:20:47.740" video="qanda-uni" id="subtitle"]]
+[[!template text="""So the humans look at some of this code and""" start="00:20:49.600" video="qanda-uni" id="subtitle"]]
+[[!template text="""the machines look at other parts of the code.""" start="00:20:53.080" video="qanda-uni" id="subtitle"]]
+[[!template text="""I actually did all my programming in the""" start="00:20:56.260" video="qanda-uni" id="subtitle"]]
+[[!template text="""literary world even in the early 1990s,""" start="00:20:58.320" video="qanda-uni" id="subtitle"]]
+[[!template text="""not using Org Mode, which didn't exist yet,""" start="00:21:00.920" video="qanda-uni" id="subtitle"]]
+[[!template text="""but using Norman Ramsey's Norep preprocessor.""" start="00:21:03.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""They still use it inside the Org-Mode today.""" start="00:21:07.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""This preprocessor, Norep,""" start="00:21:10.400" video="qanda-uni" id="subtitle"]]
+[[!template text="""allows you to tangle code from within an""" start="00:21:11.920" video="qanda-uni" id="subtitle"]]
+[[!template text="""Org-Mode file that is self-standing file,""" start="00:21:14.240" video="qanda-uni" id="subtitle"]]
+[[!template text="""much like Org-mode's edit functions,""" start="00:21:16.360" video="qanda-uni" id="subtitle"]]
+[[!template text="""which export code blocks into buffers in""" start="00:21:19.540" video="qanda-uni" id="subtitle"]]
+[[!template text="""whatever language the code blocks.""" start="00:21:21.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""In data science, these interactive notebooks,""" start="00:21:25.940" video="qanda-uni" id="subtitle"]]
+[[!template text="""in 1 of the interpreted languages like Julia,""" start="00:21:29.640" video="qanda-uni" id="subtitle"]]
+[[!template text="""Python, or R dominating?""" start="00:21:32.776" video="qanda-uni" id="subtitle"]]
+[[!template text="""The basic technology is that of Jupyter""" start="00:21:34.680" video="qanda-uni" id="subtitle"]]
+[[!template text="""notebooks, which take their name from Julia,""" start="00:21:37.420" video="qanda-uni" id="subtitle"]]
+[[!template text="""Python, and R. And these notebooks use a""" start="00:21:39.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""spruce-dark shell, for example,""" start="00:21:43.040" video="qanda-uni" id="subtitle"]]
+[[!template text="""IPython, and an option to add SQL cells.""" start="00:21:44.920" video="qanda-uni" id="subtitle"]]
+[[!template text="""All good inside Emacs has a large number of""" start="00:21:50.460" video="qanda-uni" id="subtitle"]]
+[[!template text="""advantages. Some of them are listed here over""" start="00:21:53.340" video="qanda-uni" id="subtitle"]]
+[[!template text="""these notebooks. 2 of these stand out""" start="00:21:56.800" video="qanda-uni" id="subtitle"]]
+[[!template text="""particularly. Different languages can be""" start="00:21:59.180" video="qanda-uni" id="subtitle"]]
+[[!template text="""mixed as shown in the image.""" start="00:22:02.860" video="qanda-uni" id="subtitle"]]
+[[!template text="""While in Jupyter notebooks,""" start="00:22:06.460" video="qanda-uni" id="subtitle"]]
+[[!template text="""a notebook is limited to running a kernel in""" start="00:22:07.920" video="qanda-uni" id="subtitle"]]
+[[!template text="""1 language only. The content of the notebook,""" start="00:22:10.900" video="qanda-uni" id="subtitle"]]
+[[!template text="""its document code or output part can be""" start="00:22:14.440" video="qanda-uni" id="subtitle"]]
+[[!template text="""exported in a variety of forms.""" start="00:22:16.980" video="qanda-uni" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20uni%3A%20Authoring%20and%20presenting%20university%20courses%20with%20Emacs%20and%20a%20full%20libre%20software%20stack)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/uni-before.md b/2023/info/uni-before.md
new file mode 100644
index 00000000..6ac65fe2
--- /dev/null
+++ b/2023/info/uni-before.md
@@ -0,0 +1,35 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 21-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="uni-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="uni-mainVideo" data="""
+00:00.000 Introduction
+01:12.440 Presenting
+01:47.820 Hardware
+04:46.610 Example setup
+05:30.520 Presentation software: flexibility in function
+07:05.950 Live demonstration
+07:59.850 OBS
+10:26.060 Animation
+10:55.790 Emacs
+11:42.260 Making slides and handouts with Org Mode
+13:22.680 Pedagogy first
+16:17.790 org-teach
+19:38.330 Blank slides
+19:50.050 Animations
+20:19.270 Conclusion
+
+"""]]<div></div>Duration: 20:53 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--main.opus">Download --main.opus (12MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--main.webm">Download --main.webm (283MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--slides.pdf">Download --slides.pdf (26MB)</a></li><li><a href="https://toobnix.org/w/mAnNW7jnPq5qhUPH2dzVQf">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="uni-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="uni-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--answers.opus"></audio></div><div></div>Duration: 22:32 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--answers.opus">Download --answers.opus (14MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-uni--authoring-and-presenting-university-courses-with-emacs-and-a-full-libre-software-stack--james-howell--answers.webm">Download --answers.webm (56MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/uni-nav.md b/2023/info/uni-nav.md
new file mode 100644
index 00000000..6694d47e
--- /dev/null
+++ b/2023/info/uni-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/adventure">An Org-Mode based text adventure game for learning the basics of Emacs, inside Emacs, written in Emacs Lisp</a>
+Next by track: <a href="/2023/talks/teaching">Teaching computer and data science with literate programming tools</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/voice-after.md b/2023/info/voice-after.md
new file mode 100644
index 00000000..32de9a2c
--- /dev/null
+++ b/2023/info/voice-after.md
@@ -0,0 +1,1473 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="voice-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""Hi, I'm Blaine Mooers. I'm an associate professor""" start="00:00:00.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""of biochemistry at the University of Oklahoma""" start="00:00:04.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Health Sciences Center in Oklahoma City.""" start="00:00:06.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""My lab studies the role of RNA structure in RNA editing.""" start="00:00:09.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""We use X-ray crystallography to study the structures""" start="00:00:12.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""of these RNAs. We spend a lot of time in the lab""" start="00:00:17.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""preparing our samples for structural studies,""" start="00:00:19.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and then we also spend a lot of time at the computer""" start="00:00:22.720" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""analyzing the resulting data.""" start="00:00:26.720" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I was seeking ways of using voice computing""" start="00:00:29.720" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to try to enhance my productivity.""" start="00:00:33.040" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Three activities in voice computing""" start="00:00:37.400" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""I divide voice computing into three activities,""" start="00:00:37.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""speech-to-text or dictation, speech-to-commands,""" start="00:00:41.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and speech-to-code. I'll be talking about""" start="00:00:44.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""speech-to-text and speech-to-commands today""" start="00:00:47.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""because these are two activities""" start="00:00:50.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that are probably most broadly applicable""" start="00:00:55.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to the workflows of people attending this conference.""" start="00:00:57.320" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Talk is not about ... and about ...""" start="00:01:02.560" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""This talk will not be about Emacspeak.""" start="00:01:02.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""This is a venerated program for converting text to speech.""" start="00:01:06.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""We're talking about the flow of information""" start="00:01:11.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in the opposite direction, speech-to-text.""" start="00:01:13.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""We need an Emacs Listens. We don't have one,""" start="00:01:16.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""so I had to seek help from outside the Emacs world""" start="00:01:20.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""via the Voice In Plus. This runs in""" start="00:01:25.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""the Google Chrome web browser,""" start="00:01:30.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and it's very good for speech-to-text""" start="00:01:33.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and very easy to learn how to use.""" start="00:01:36.720" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It also has some speech-to-commands.""" start="00:01:39.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""However, Talon Voice is much better""" start="00:01:42.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""with the speech-to-commands,""" start="00:01:44.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and it's also great at speech-to-code.""" start="00:01:47.560" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Motivations""" start="00:01:53.520" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""The motivations are, obviously, as I mentioned already,""" start="00:01:53.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""for improved productivity.""" start="00:01:57.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""So, if you're a fast typist""" start="00:01:59.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""who types faster than they can speak,""" start="00:02:00.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""then nonetheless you might still benefit""" start="00:02:05.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""from voice computing when you grow tired of""" start="00:02:07.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""using the keyboard. On the other hand,""" start="00:02:09.280" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""you might be a slow typist who talks faster""" start="00:02:12.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""than they can type.""" start="00:02:15.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""In this case, you're definitely going to""" start="00:02:17.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""benefit from dictation because you'll be able to""" start="00:02:19.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""encode more words in text documents in a given day.""" start="00:02:22.860" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""If you're a coder, then you may get a kick out of""" start="00:02:29.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""opening programs and websites and coding projects""" start="00:02:33.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""by using your voice.""" start="00:02:37.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Then there are health-related reasons.""" start="00:02:39.280" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You may have impaired use of your hands, eyes, or both""" start="00:02:41.720" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""due to accident or disease, or you may suffer from""" start="00:02:44.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""a repetitive stress injury. Many of us have this""" start="00:02:49.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in a mild but chronic form of it.""" start="00:02:53.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""We can't take a three-month sabbatical from the keyboard""" start="00:02:55.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""without losing our jobs, so these injuries tend to persist.""" start="00:02:59.040" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""And then you may have learned""" start="00:03:05.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that it's not good for your health to sit""" start="00:03:06.680" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""for prolonged periods of time""" start="00:03:09.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""with your staring at a computer screen.""" start="00:03:11.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can actually dictate to your computer from 20 feet away""" start="00:03:14.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""while looking out the window,""" start="00:03:21.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""thereby giving your lower body a break""" start="00:03:25.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and your eyes a break.""" start="00:03:27.780" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Data""" start="00:03:33.240" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""I'm not God, so I have to bring data.""" start="00:03:33.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I have two data points here,""" start="00:03:35.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""the number of words that I wrote in June and July this year""" start="00:03:38.040" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and in September and October.""" start="00:03:42.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I adopted the use of voice computing""" start="00:03:45.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in the middle of August. As you can see,""" start="00:03:49.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I got an over three-fold increase in my output.""" start="00:03:53.920" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Voice In in the Chrome Store""" start="00:03:58.680" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""So this is the Chrome store website for voice-in.""" start="00:03:58.680" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It's only available for Google Chrome.""" start="00:04:07.120" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You just hit the install button to install it.""" start="00:04:11.120" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""To configure it, you need to select a language.""" start="00:04:13.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It has support for 40 languages""" start="00:04:16.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and it supports about a dozen different dialects of English,""" start="00:04:19.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""including Australian.""" start="00:04:23.120" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Works in web pages with text areas""" start="00:04:25.628" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""It works on web pages with text areas,""" start="00:04:25.628" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""so it works. I use it regularly""" start="00:04:29.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""on Overleaf and 750words.com,""" start="00:04:33.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""a distraction-free environment for writing.""" start="00:04:37.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It also works in webmails. It works in Google.""" start="00:04:42.280" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It works in Jupyter Lab, of course,""" start="00:04:46.780" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""because that runs in the browser.""" start="00:04:51.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It also works in Jupyter Notebook and Colab Notebook.""" start="00:04:52.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It should work in Cloudmacs.""" start="00:04:58.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I've mapped option-L to opening Voice In""" start="00:05:01.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""when the cursor is on a web page that has a text area.""" start="00:05:04.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""So [the presence of a text area is] the main limiting factor.""" start="00:05:09.120" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Built-in commands in Voice In Plus""" start="00:05:16.880" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""[Voice In] has a number of built-in commands.""" start="00:05:16.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can turn it off by saying &quot;stop dictation&quot;.""" start="00:05:19.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It doesn't distinguish between""" start="00:05:24.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""a command mode and a dictation mode.""" start="00:05:26.120" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It has undo command. You use the command""" start="00:05:28.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""&quot;copy that&quot; to copy a selection.""" start="00:05:33.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""The &quot;press&quot; commands are used in the browser.""" start="00:05:36.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You [say] &quot;press enter&quot; to issue a command or [submit] text""" start="00:05:40.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that has been written in a web form,""" start="00:05:44.840" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and then &quot;press tab&quot; will open up the next tab""" start="00:05:50.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in a web browser. The scroll up and down""" start="00:05:55.280" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""will allow you to navigate a web page.""" start="00:05:58.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I've put together a quiz about these commands""" start="00:06:02.380" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""so that you can go through this quiz several times""" start="00:06:05.820" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""until you get at least 90 percent of them correct,""" start="00:06:09.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""90 percent of the questions correct.""" start="00:06:14.700" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""In order to boost your recall of the commands,""" start="00:06:16.680" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I have a Python script that you can probably""" start="00:06:20.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""pound through the quiz with""" start="00:06:23.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in less than a minute, once you know the commands.""" start="00:06:26.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I also provide an Elisp version of this quiz,""" start="00:06:32.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""but it's a little slower to operate.""" start="00:06:35.600" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Common errors made by Voice In""" start="00:06:41.740" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""These are some common errors""" start="00:06:41.740" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that I've run into with Voice In.""" start="00:06:43.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It likes to contract statements like &quot;I will&quot; into &quot;I'll&quot;.""" start="00:06:45.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Contractions are not used in formal writing,""" start="00:06:50.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and most of my writing is formal writing, so this annoys me.""" start="00:06:55.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I will show you how I corrected for that problem.""" start="00:07:00.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It also drops the first word in sentences quite often.""" start="00:07:04.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""This might be some speech issue that I have.""" start="00:07:10.040" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It inserts the wrong word because it's not in the dictionary""" start="00:07:13.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that was used to train it. So, for example,""" start="00:07:17.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""the word PyMOL is the name of a molecular graphics program""" start="00:07:22.620" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that we use in our field. It doesn't recognize PyMOL.""" start="00:07:26.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Instead, it substitutes in the word &quot;primal&quot;.""" start="00:07:31.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Since I don't use &quot;primal&quot; very often,""" start="00:07:34.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I've mapped the word &quot;primal&quot; to &quot;PyMOL&quot;""" start="00:07:38.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in some custom commands I'll talk about in a minute.""" start="00:07:42.300" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Then there's a problem that the commands that exist""" start="00:07:45.660" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""might get executed when you speak them when, in fact,""" start="00:07:50.440" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""you wanted to use the words in those commands""" start="00:07:54.440" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""during your dictation.""" start="00:07:58.840" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""So this is a problem, a pitfall of Voice In,""" start="00:08:01.440" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in that it doesn't have a command mode""" start="00:08:07.120" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that's separate from a dictation mode.""" start="00:08:08.920" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Custom speech-to-text commands""" start="00:08:14.760" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""You can set up through a very easy-to-use GUI""" start="00:08:14.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""custom voice commands mapped to what you want inserted,""" start="00:08:20.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""so this is how misinterpreted words can be corrected.""" start="00:08:26.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You just map the misinterpreted word to the intended word.""" start="00:08:32.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can also map the contractions to their expansions.""" start="00:08:35.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I did this for 94 English contractions,""" start="00:08:42.840" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and you can find these on GitHub.""" start="00:08:46.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can also insert acronyms and expand those acronyms.""" start="00:08:50.140" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I apply the same approach to the first names of colleagues.""" start="00:08:56.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I say &quot;expand Fred&quot;, for example,""" start="00:09:00.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to get Fred's first and last name""" start="00:09:03.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""with the [correct] spelling of his very long German name.""" start="00:09:07.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can also insert other trivia like favorite URLs.""" start="00:09:12.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can insert LaTeX snippets.""" start="00:09:19.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It handles correctly multi-line snippets.""" start="00:09:24.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You just have to enclose them in double quotes.""" start="00:09:34.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can even insert BibTeX cite keys for references""" start="00:09:39.420" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that you use frequently. All fields""" start="00:09:45.040" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""have certain key references for certain methods or topics.""" start="00:09:46.880" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Custom speech-to-commands""" start="00:09:59.420" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""Then it has a set of commands that you can customize""" start="00:09:59.420" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""for the purpose of speech-to-commands""" start="00:10:05.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to get the computer to do something""" start="00:10:08.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""like open up a specific website or save the current writing.""" start="00:10:09.680" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""In this case, we have &quot;press: command-s&quot;""" start="00:10:15.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""for saving current writing.""" start="00:10:23.541" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can change the language [with &quot;lang:&quot;],""" start="00:10:27.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and you can change the case of the text [with &quot;case:&quot;].""" start="00:10:28.100" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Introducing Talon Voice""" start="00:10:37.540" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""But the speech-to-command repertoire is quite limited""" start="00:10:37.540" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in Voice In, so it's now time to pick up on Talon Voice.""" start="00:10:41.040" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""This is an open source project. It's free.""" start="00:10:49.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It is highly configurable via TalonScript,""" start="00:10:54.120" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""which is a subset of Python.""" start="00:10:57.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can use either TalonScript or Python to configure it,""" start="00:10:58.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""but it's easier to code up your configuration""" start="00:11:03.040" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in TalonScript.""" start="00:11:06.280" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It has a Python interpreter embedded in it,""" start="00:11:08.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""so you don't have to mess around with installing""" start="00:11:10.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""yet another Python interpreter.""" start="00:11:13.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It runs on all platforms, and it has a dictation mode""" start="00:11:14.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that's separate from a command mode.""" start="00:11:21.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You can activate it,""" start="00:11:24.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and it'll be in a listening state asleep.""" start="00:11:25.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You just bark out &quot;Talon Wake&quot; to start to wake it up,""" start="00:11:31.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and &quot;Talon Sleep&quot; to have it go into a listening state.""" start="00:11:36.280" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It has a very welcoming community""" start="00:11:43.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in the Talon Slack channel.""" start="00:11:47.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Then I need to point out that there's several packages""" start="00:11:50.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that others have developed that run on top of Talon,""" start="00:11:56.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""but one of particular note is by Pokey Rule.""" start="00:11:59.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""He has on his website some really well-done videos""" start="00:12:03.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that demonstrate how he uses Cursorless""" start="00:12:08.120" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to move the cursor around using voice commands.""" start="00:12:11.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""This, however, runs on VS Code.""" start="00:12:17.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""At least that's the text editor""" start="00:12:20.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""for which he's primarily developing Cursorless.""" start="00:12:23.360" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Talon GUI""" start="00:12:28.400" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""I followed the [install] protocol outlined by Tara Roys.""" start="00:12:28.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""She has a collection of tutorials""" start="00:12:35.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""on YouTube as well as on GitHub that are quite helpful.""" start="00:12:38.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I followed her tutorial for installing""" start="00:12:44.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Talon on macOS without any issues,""" start="00:12:49.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""but allow for half an hour to an hour""" start="00:12:51.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to go through the process. When you're done,""" start="00:12:55.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""you'll have this Talon icon appear in the toolbar""" start="00:12:57.720" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""on the Mac. When it has this diagonal line across it,""" start="00:13:02.200" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that means it's in the sleep state.""" start="00:13:06.120" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""So, this leads to cascading pull-down menus.""" start="00:13:09.540" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""This is it for the GUI.""" start="00:13:13.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""One of your first tasks is to select""" start="00:13:19.640" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""a language model that will be used to interpret""" start="00:13:26.520" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""the sounds that you generate as words.""" start="00:13:30.440" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""And the other kind of key feature is that there's a,""" start="00:13:35.180" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""under scripting, there's a view log pull-down""" start="00:13:38.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that opens up a window displaying the log file.""" start="00:13:43.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Whenever you make a change in a Talon configuration file,""" start="00:13:48.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that change is implemented immediately.""" start="00:13:52.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You do not have to restart Talon""" start="00:13:55.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to get the change to take effect.""" start="00:13:57.600" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Talon file with web scope""" start="00:14:02.540" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""This is an example of a Talon file.""" start="00:14:02.540" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It has two components. It has a header above the dash that describes""" start="00:14:04.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""the scope of the commands contained below the dash.""" start="00:14:10.500" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Each command is separated by a blank line.""" start="00:14:14.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""If a voice command is mapped to multiple actions,""" start="00:14:19.740" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""these are listed separately on indented lines""" start="00:14:24.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""below the first line.""" start="00:14:31.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""The words that are in square brackets are optional.""" start="00:14:33.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""So, I have mapped the word toggle voice in,""" start="00:14:39.420" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""or the phrase toggle voice in,""" start="00:14:44.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to the keyboard shortcut Alt L""" start="00:14:46.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in order to toggle on or off voice in.""" start="00:14:51.280" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""If I toggle voice in on,""" start="00:14:55.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I need to immediately toggle off Talon,""" start="00:14:57.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and this is done through this key command for Control T,""" start="00:15:01.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""which is mapped to speech toggle.""" start="00:15:09.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""Speech toggle. Then there are,""" start="00:15:11.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""there's a couple other examples.""" start="00:15:20.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""So, if there's no header present,""" start="00:15:24.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""it's an optional feature of Talon files,""" start="00:15:26.440" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""then the commands in the file will apply in all situations,""" start="00:15:29.600" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in all modes.""" start="00:15:32.640" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Terminals on remote and virtual machines""" start="00:15:34.015" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""Here we have two restrictions.""" start="00:15:34.015" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""These commands will only work""" start="00:15:36.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""when using the iTerm2 [ccc] terminal emulator for the Mac,""" start="00:15:38.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and then only when the title of the window in iTerm2""" start="00:15:42.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""has this particular address,""" start="00:15:48.240" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""which is what appears when I've logged into""" start="00:15:52.440" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""the supercomputer at the University of Oklahoma.""" start="00:15:55.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""One of the commands in this file is checkjobs.""" start="00:16:00.060" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""It's mapped to an alias,""" start="00:16:03.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""a bash alias called cj for &quot;check jobs&quot;,""" start="00:16:05.540" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""which in turn is mapped to a script called checkjobs.sh""" start="00:16:10.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""that, when it's run, returns a listing""" start="00:16:17.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""of the pending and running jobs on the supercomputer""" start="00:16:20.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in a format that I find pleasing.""" start="00:16:23.220" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""This `\n` after cj, the new line character,""" start="00:16:26.081" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""enters the command, so I don't have to do that""" start="00:16:34.560" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""as an additional step. Likewise,""" start="00:16:39.840" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""here's a similar setup for interacting with""" start="00:16:43.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""a Ubuntu virtual machine.""" start="00:16:46.800" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Recommendations""" start="00:16:52.500" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""In terms of picking up voice computing,""" start="00:16:52.500" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""these are my recommendations.""" start="00:16:55.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You're going to run into more errors""" start="00:16:57.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""than you may like initially,""" start="00:16:59.760" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and so you need some patience in dealing with those.""" start="00:17:01.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""And also, it'll take you a while""" start="00:17:07.840" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to get your head wrapped around Talon and how it works.""" start="00:17:09.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You'll definitely want to use these custom commands""" start="00:17:16.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""to correct the errors or shortcomings""" start="00:17:19.440" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""of the language models. And you've seen how,""" start="00:17:21.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""by opening up projects by voice commands,""" start="00:17:26.920" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""you can reduce friction""" start="00:17:29.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""in terms of restarting work on a project.""" start="00:17:31.360" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""You've seen how Voice In is preferred""" start="00:17:36.660" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""for more accurate dictation.""" start="00:17:40.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I think my error rate is about 1 to 2 percent.""" start="00:17:44.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""That is, 1 to 2 out of 100 words are incorrect""" start="00:17:48.080" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""versus Talon Voice where I think""" start="00:17:53.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""the error rate is closer to 5 percent.""" start="00:17:56.320" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I have put together [a library of English] contractions""" start="00:18:00.840" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""[and their expansion] for Talon [too],""" start="00:18:03.508" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and they can be found here on GitHub.""" start="00:18:04.881" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""And I also have [posted] a quiz of 600 questions""" start="00:18:07.480" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""about some basic Talon commands.""" start="00:18:12.960" video="mainVideo-voice" id="subtitle"]]
+
+[[!template new="1" text="""Acknowledgements""" start="00:18:17.720" video="mainVideo-voice" id="subtitle"]]
+
+[[!template text="""I'd like to thank the people who've helped me out""" start="00:18:17.720" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""on the Talon Slack channel""" start="00:18:21.000" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and members of the Oklahoma Data Science Workshop""" start="00:18:22.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""where I gave an hour-long talk on this topic""" start="00:18:25.800" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""several weeks ago.""" start="00:18:29.880" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""I'd like to thank my friends""" start="00:18:30.960" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""at the Berlin and Austin Emacs Meetup""" start="00:18:34.160" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""and at the M-x research Slack channel.""" start="00:18:37.400" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""And I thank these grant funding agencies""" start="00:18:42.660" video="mainVideo-voice" id="subtitle"]]
+[[!template text="""for supporting my work. I'll be happy to take any questions.""" start="00:18:45.120" video="mainVideo-voice" id="subtitle"]]
+
+<a name="voice-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Dictation.""" start="00:00:00.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. All right I think we are live now.""" start="00:00:06.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""The stream is here. So folks if you would""" start="00:00:08.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""please post your questions on the pad and""" start="00:00:11.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""we'll take them up here.""" start="00:00:13.259" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Boy so I don't have myself set up with the""" start="00:00:20.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, I can read the questions to you if you""" start="00:00:25.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: pad. That would be fantastic.""" start="00:00:26.939" video="qanda-voice" id="subtitle"]]
+[[!template text="""Thank you.""" start="00:00:27.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: would prefer that. Sure.""" start="00:00:28.779" video="qanda-voice" id="subtitle"]]
+[[!template text="""Thanks.""" start="00:00:29.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Well, for the purpose of breaking the ice a""" start="00:00:58.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""little bit, I can provide a live""" start="00:01:01.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""demonstration of the use of this Voice In""" start="00:01:03.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""plugin for Google Chrome.""" start="00:01:06.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""So I have, let's see, say new sentence.""" start="00:01:11.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'm on a website that is called 750 words.""" start="00:01:20.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""It provides a text area where without any""" start="00:01:25.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""other distracting icons for the purpose of""" start="00:01:30.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""writing and I'm using it for the purpose of""" start="00:01:34.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""capturing my words that I'm dictating and I""" start="00:01:38.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""have enabled the Voice In plugin by hitting""" start="00:01:42.979" video="qanda-voice" id="subtitle"]]
+[[!template text="""the option L command. New sentence.""" start="00:01:48.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""So it interpreted that command new sentence""" start="00:01:54.479" video="qanda-voice" id="subtitle"]]
+[[!template text="""even though I didn't pronounce it correctly,""" start="00:01:56.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""which is a pretty good demonstration of its""" start="00:01:59.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""accuracy. New sentence.""" start="00:02:00.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""Oops, that didn't work.""" start="00:02:06.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""Undo. New sentence. So new sentence is a""" start="00:02:15.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""combination of 2 commands,""" start="00:02:16.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""period and new line. So I've found it more""" start="00:02:23.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""convenient just to say new sentence than""" start="00:02:25.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""having to say period and new line.""" start="00:02:28.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""You can see that it's able to keep up with""" start="00:02:33.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""most of my speech, and it has to interpret""" start="00:02:41.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""the sounds that I'm making and convert those""" start="00:02:44.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""into words, so there's always going to be a""" start="00:02:47.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""lag. New sentence. But I've found that I can""" start="00:02:59.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""generate about 2,000, up to 2,000""" start="00:03:02.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""words an hour as I gather my thoughts and""" start="00:03:07.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""talk in my rather slow fashion of speaking.""" start="00:03:10.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""New sentence, if you're a really fast""" start="00:03:15.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""speaker, it might have trouble keeping up.""" start="00:03:18.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""New sentence. I like to write When I'm using""" start="00:03:30.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""the keyboard with 1 sentence per line,""" start="00:03:34.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""so that when I copy my text and paste it into""" start="00:03:38.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""Emacs, for example, I can resort the""" start="00:03:43.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""sentences very easily by just selecting 1""" start="00:03:47.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""line at a time. I like to keep the sentences""" start="00:03:50.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""unwrapped in that fashion because that""" start="00:03:53.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""greatly eases the rewriting phase.""" start="00:03:56.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I'm almost have sort of a hybrid reverse""" start="00:04:01.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""outlining approach by doing that.""" start="00:04:03.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""New sentence. Looks like I have gotten ahead""" start="00:04:14.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""of it a bit and it has not kept up.""" start="00:04:18.079" video="qanda-voice" id="subtitle"]]
+[[!template text="""But generally, it does keep up pretty well.""" start="00:04:21.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Nice. Thanks for the demo.""" start="00:04:26.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""Let's see. I think we have.""" start="00:04:30.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""Yeah, sorry.""" start="00:04:31.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: You're welcome. Go ahead.""" start="00:04:33.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""You can see that it has this EN means English""" start="00:04:42.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""and then dash US. There's actually about 40""" start="00:04:46.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""languages that it supports,""" start="00:04:48.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""including several variants of German and""" start="00:04:52.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""about a dozen English dialects.""" start="00:04:54.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Nice. Let's see, I think we have some""" start="00:05:05.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""comments and questions trickling in.""" start="00:05:06.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""So someone is saying that there is a text to""" start="00:05:11.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""command application or utility called Clipia,""" start="00:05:14.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""C-L-I-P-I-A, that they think is awesome.""" start="00:05:19.395" video="qanda-voice" id="subtitle"]]
+[[!template text="""Clipia that they think is awesome.""" start="00:05:19.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""And someone else is also saying that Sox,""" start="00:05:24.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""S-O-X is another good alternative.""" start="00:05:27.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: I've not explored those yet.""" start="00:05:34.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""So thank you very much for the suggestions.""" start="00:05:36.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: So I'll... I just dropped a link to the pad""" start="00:05:42.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""page here in the chat and on the big blue""" start="00:05:45.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""button if you'd like to open that up as well.""" start="00:05:47.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""But I'll continue reading the comments and""" start="00:05:50.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""questions. So the first question,""" start="00:05:54.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""I guess, is that could you comment on how""" start="00:05:56.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""speaking versus typing affects your logic or""" start="00:06:01.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""the content, quote unquote,""" start="00:06:03.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""that you write?""" start="00:06:05.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: I find that this is like the difference""" start="00:06:10.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""between writing your thoughts down on a blank""" start="00:06:15.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""piece of printer paper versus paper bound""" start="00:06:18.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""with a leather notebook.""" start="00:06:21.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""I don't think there's any real difference.""" start="00:06:24.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""I know that some people believe there is a""" start="00:06:27.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""solid certain difference,""" start="00:06:29.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""But this is for the purpose,""" start="00:06:32.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'm using this for the purpose of generating""" start="00:06:34.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""the first draft because my skills with using""" start="00:06:40.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""my voice to edit my text is still not very""" start="00:06:44.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""well developed. I'm still more efficient""" start="00:06:46.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""using the keyboard for that stage.""" start="00:06:49.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""So the hardest part about writing generally""" start="00:06:52.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""is getting the first crappy draft written.""" start="00:06:55.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""And so I have found that dictation is""" start="00:07:00.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""perfectly fine for that phase.""" start="00:07:01.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I find it actually very conducive for""" start="00:07:07.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""just getting the text out.""" start="00:07:09.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""The biggest problem that most of us have is""" start="00:07:13.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""applying our internal editor.""" start="00:07:15.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""And that inhibits us from generating words in""" start="00:07:20.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""a free-flowing fashion.""" start="00:07:21.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""So I generally do my generative writing.""" start="00:07:26.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""So actually I divide my writing into 2""" start="00:07:28.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""categories, generative writing,""" start="00:07:30.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""generating the first crappy draft,""" start="00:07:32.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""and then rewriting. Rewriting is probably 80,""" start="00:07:35.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""90% of writing where you go back and rework""" start="00:07:38.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""the order of the sentences,""" start="00:07:40.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""order of paragraphs, the order of words in a""" start="00:07:43.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""sentence and so forth.""" start="00:07:44.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""The really hard work. That's best done later""" start="00:07:47.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""in the day when I'm more awake.""" start="00:07:49.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""I do my general writing first thing in the""" start="00:07:52.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""morning when I feel horrible.""" start="00:07:55.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'm not very alert. That's when my internal""" start="00:07:59.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""editor is not very awake and I can get more""" start="00:08:03.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""words out, more words past that gatekeeper.""" start="00:08:05.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""And so I can do this sitting down,""" start="00:08:09.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""I can do this standing up,""" start="00:08:10.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""I can do this 20 feet away from my computer""" start="00:08:12.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""looking out the window to give my eyes a""" start="00:08:15.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""break. So I find it's actually very enjoyable""" start="00:08:19.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""to use it in this fashion.""" start="00:08:21.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""And the downside is that I wind up generating""" start="00:08:29.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""3 times as much text, and that makes for 3""" start="00:08:32.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""times as much work when it comes to rewriting""" start="00:08:35.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""the text. And that means I'm using the""" start="00:08:39.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""keyboard a lot later on in the day and I""" start="00:08:45.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""haven't made any progress on recovering from""" start="00:08:47.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""my own repetitive stress injury.""" start="00:08:49.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""I hope that I will add the use of voice""" start="00:08:56.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""commands, speech to commands,""" start="00:08:59.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""for editing the text in the future.""" start="00:09:02.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I'll eventually give my hands more of a""" start="00:09:06.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""break.""" start="00:09:07.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Right. Thanks. Yeah, that sounds like a nice""" start="00:09:12.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""flow of sort of being able to get your words""" start="00:09:15.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""out while your internal editor is still not""" start="00:09:18.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""inhibiting things. And then later in the day""" start="00:09:21.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""or days, get back to the actual rewriting and""" start="00:09:25.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""editing.""" start="00:09:25.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Cool. So this allows you to actually separate""" start="00:09:31.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""those 2 activities, not only by time.""" start="00:09:33.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""So many professional writers will spend""" start="00:09:36.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""several hours in the morning doing the""" start="00:09:39.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""generative part and then they'll spend the""" start="00:09:41.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""rest of the day rewriting.""" start="00:09:41.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""So they have separated those 2 activities""" start="00:09:46.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""temporally. What most people actually do is,""" start="00:09:49.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""you know, they do the generative part and""" start="00:09:51.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""then they write 1 sentence and they apply""" start="00:09:53.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""that internal editor right away because they""" start="00:09:55.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""want to write the first draft in a perfect,""" start="00:09:57.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""as a perfect version as the final draft And""" start="00:10:02.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""that slows them down dramatically.""" start="00:10:03.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""But this also allows you to separate these 2""" start="00:10:08.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""activities in terms of modality.""" start="00:10:10.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""You're going to do the generative writing by""" start="00:10:13.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""voice and the rewriting by keyboard.""" start="00:10:16.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""So I think this is 1 way that many people can""" start="00:10:22.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""get into using speech to text in a productive""" start="00:10:26.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""way.""" start="00:10:26.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Nice. Yeah, that sounds great.""" start="00:10:30.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""Let's see. I think we have about 3 or 4""" start="00:10:33.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""minutes live. So I think we have time for at""" start="00:10:37.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""least another question.""" start="00:10:38.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""Have you tried the chat GPT voice chat""" start="00:10:41.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""interface? And if so, how has been your""" start="00:10:44.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""experience of it? As someone experienced with""" start="00:10:47.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""voice control, interested to hear your""" start="00:10:48.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""thoughts, performance relative to the free""" start="00:10:51.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""software tools in particular?""" start="00:10:52.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: I don't have much experience with that""" start="00:10:57.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""particular software. I have used Whisper a""" start="00:11:01.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""little bit. And so that's related.""" start="00:11:03.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""And of course you have this problem of lag so""" start="00:11:10.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""I find that it's a whisper is good for""" start="00:11:12.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""spitting out a sentence you know maybe for a""" start="00:11:16.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""doc string in a programming file.""" start="00:11:20.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""But I find that it's very prone to""" start="00:11:26.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""hallucinations. And I find myself spending""" start="00:11:30.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""half my time deleting the hallucinations,""" start="00:11:32.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""I feel like the net gain is diminished as a""" start="00:11:38.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""result. There's not much of a net gain in""" start="00:11:41.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""terms of what I'm getting out of it.""" start="00:11:43.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""Whereas I really appreciate the high level of""" start="00:11:45.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""accuracy that I'm getting from voice-in.""" start="00:11:48.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""I would use Talon Voice for dictation,""" start="00:11:53.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""but at this point, there's a significant""" start="00:11:56.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""difference between the level of accuracy of""" start="00:12:00.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""voice-in versus Talon voice.""" start="00:12:02.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""It's large enough of a difference that I'll""" start="00:12:06.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""probably use voice-in for a while until I can""" start="00:12:08.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""figure out how to get town voice to generate""" start="00:12:12.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""more accurate text.""" start="00:12:15.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool. Thank you. I think we have at least""" start="00:12:25.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""another 2 or 3 minutes.""" start="00:12:26.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""So if folks have any other questions Please""" start="00:12:29.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""feel free to post them on the pad and I'll""" start="00:12:31.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""check IRC now as well.""" start="00:12:32.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""Right, so I see 1 question on IRC asking,""" start="00:12:44.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""Are any of these voice command slash""" start="00:12:47.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""dictating dictation tools free Libre""" start="00:12:49.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""software? They cannot find that information""" start="00:12:52.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""Which I think is part of it.""" start="00:12:54.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""You just mentioned""" start="00:12:55.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: the voice in software.""" start="00:12:57.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""There's It's a freemium so The answer is no""" start="00:13:03.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""To be able to add the commands,""" start="00:13:05.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""the custom commands, you have to pay $48 a""" start="00:13:09.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""year. The Talon Voice software is free.""" start="00:13:12.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""And the only limitation there is access to""" start="00:13:20.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""the language model. If you want to get the""" start="00:13:23.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""beta version, you need to subscribe to""" start="00:13:26.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""Patreon to help support the developer.""" start="00:13:30.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I found, I did do that and I really""" start="00:13:36.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""didn't find much of an improvement.""" start="00:13:37.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""So I really don't intend to do that in the""" start="00:13:43.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""future. But otherwise,""" start="00:13:47.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""Town Voice, everything is open and free,""" start="00:13:50.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""and the Slack community is incredibly""" start="00:13:54.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""welcoming. The parallels with the Emacs""" start="00:13:58.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""community are pretty striking.""" start="00:14:00.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Excellent, thank you. Okay,""" start="00:14:09.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think we have about another minute on the""" start="00:14:11.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""live stream, but I believe the big blue""" start="00:14:13.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""button room here is open and will be open,""" start="00:14:16.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""So if folks want to join,""" start="00:14:19.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""if Blaine maybe has a couple of extra""" start="00:14:21.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""minutes. Awesome. Yeah,""" start="00:14:24.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""then you're welcome to join and chat with""" start="00:14:26.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""Blaine and ask any further questions or just""" start="00:14:28.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""do general chatting. Chatting.""" start="00:14:30.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I see a question. How good is Talon""" start="00:14:44.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""compared to Whisper? So with Talon,""" start="00:14:53.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""I find that the first part of the sentence""" start="00:14:55.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""will be fairly accurate and then when I'm""" start="00:15:00.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""doing dictation And then towards the end,""" start="00:15:03.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""the errors start to accumulate.""" start="00:15:05.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""So in general, I think it's error rate is""" start="00:15:09.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""about 5 words out of a hundred or so will be""" start="00:15:12.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""wrong. And whisper, Whisper is wonderful""" start="00:15:17.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""because it will insert punctuation for you.""" start="00:15:21.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""But I guess its errors are longer and that""" start="00:15:26.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""it'll hallucinate full sentences for you.""" start="00:15:28.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""So they both have significant error rates.""" start="00:15:35.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""They're just different kinds of errors.""" start="00:15:37.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Interesting.""" start="00:15:42.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Hopefully both will improve over time.""" start="00:15:49.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""Right.""" start="00:15:50.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""Let's see. There's a question.""" start="00:16:04.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""Are the green block the author for this talk?""" start="00:16:09.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""Not sure what that question means.""" start="00:16:13.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well, there is a green block of text that's I""" start="00:16:19.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""think being generated from voice to text,""" start="00:16:22.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""speech to text. At the top of the pad,""" start="00:16:25.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think that's the question.""" start="00:16:26.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I have this Voicens software operating on""" start="00:16:40.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""this GitHub, on this 750words.com""" start="00:16:43.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""site where I do my generative writing at the""" start="00:16:51.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""start of the day. And it just provides a text""" start="00:16:57.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""area that's free of distractions.""" start="00:16:59.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""And you can see the text that's being""" start="00:17:03.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""recorded as I talk. I haven't been saying the""" start="00:17:08.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""command new sentence, so there isn't any""" start="00:17:12.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""punctuation over our discourse.""" start="00:17:15.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""1 thing that I do at the start of the day is""" start="00:17:24.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""I like to write in LaTeX.""" start="00:17:27.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""Ultimately, that's how I store my writing.""" start="00:17:33.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""So new sentence, new sentence.""" start="00:17:37.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""See, insert start day.""" start="00:17:51.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""So This is an example of a chunk of LaTeX""" start="00:17:58.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""code. So I have some reflections on,""" start="00:18:02.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""you know, what did I wake up this morning?""" start="00:18:04.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""And how do I feel? I have reflections on the""" start="00:18:08.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""prior day in terms of what did I get done""" start="00:18:10.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""yesterday? Do I remember what I did""" start="00:18:12.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""yesterday? What happened last night?""" start="00:18:14.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""Focus of today. What's to be done today?""" start="00:18:16.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""And so on. So I actually,""" start="00:18:23.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think I have more down here.""" start="00:18:24.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""Then I've set up these lists so that I can""" start="00:18:31.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""expand them easily. If I say item,""" start="00:18:33.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""then the cursor shows up at the start of an""" start="00:18:40.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""item. And I have it coded so that that new""" start="00:18:45.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""phrase that I speak will start with a capital""" start="00:18:48.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""letter. As you can see,""" start="00:18:52.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""so capitalize the word and.""" start="00:18:54.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""So in spite of its rather limited command""" start="00:19:02.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""syntax, There's some, it's enough to get""" start="00:19:06.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""started and maybe in the future,""" start="00:19:08.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""they'll add more features.""" start="00:19:09.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Cool, that's neat.""" start="00:19:14.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I think this is very helpful for,""" start="00:19:21.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""you know, doing things like expanding the""" start="00:19:28.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""names of people. So you can do set up""" start="00:19:32.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""commands like expand the name of a colleague""" start="00:19:36.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""to go from their first name to their full""" start="00:19:40.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""name with a proper spelling of their last""" start="00:19:42.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""name, which, you know,""" start="00:19:45.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""you can wind up spending a lot of time trying""" start="00:19:47.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""to look that up. And so this voice in with""" start="00:19:53.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""the custom commands enables you to store hard""" start="00:19:57.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""to remember information like that.""" start="00:19:59.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Great. I see another question.""" start="00:20:08.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""How good is Talon compared to Whisper?""" start="00:20:11.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think you might have answered that already,""" start="00:20:13.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""at least partially, but...""" start="00:20:14.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right, yeah. I talked about how it seems that""" start="00:20:19.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""Whisperer will carry out hallucinations,""" start="00:20:22.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""so it will generate long tracks of error,""" start="00:20:26.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""whereas Talon will tend to generate more""" start="00:20:30.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""errors towards the ends of sentences,""" start="00:20:31.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""in my experience. And the errors are""" start="00:20:36.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""generally shorter in extent.""" start="00:20:37.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""It doesn't hallucinate for long tracks.""" start="00:20:42.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Great. Okay, I think that's all the questions""" start="00:20:50.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""that we have on the pad.""" start="00:20:51.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""If folks want to join here on Big Blue Button""" start="00:20:54.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""for a few minutes and chat with Blaine,""" start="00:20:56.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""that also works. Let's see,""" start="00:21:00.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'm probably going to have to drop in a few""" start="00:21:02.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""minutes to catch the next speaker.""" start="00:21:03.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""But many thanks, Blaine,""" start="00:21:07.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""for a great talk and for the interesting""" start="00:21:09.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""demos and the question and answer.""" start="00:21:11.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Thank you very much for hosting this.""" start="00:21:14.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: I appreciate it. glad to have you.""" start="00:21:16.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Cheers, Yeah, this is really amazing to hold""" start="00:21:25.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""this conference with people from all around""" start="00:21:28.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""the world connected together through web""" start="00:21:34.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""browsers.""" start="00:21:34.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, it's very neat what technology can do""" start="00:21:41.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""if and when it's working correctly.""" start="00:21:42.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: I know it can be a little frustrating at""" start="00:21:47.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""times, but when it's working,""" start="00:21:48.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""it's wonderful. Yep.""" start="00:21:54.740" video="qanda-voice" id="subtitle"]]
+
+[[!template new="1" text="""Start of section to review""" start="00:21:59.540" video="qanda-voice" id="subtitle"]]
+
+[[!template text="""[Speaker 2]: Good purpose of computers is all the""" start="00:21:59.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""computers run the same code,""" start="00:22:01.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""so that people, you know,""" start="00:22:03.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""a lot of people work on the same thing and""" start="00:22:05.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""build upon each other's works.""" start="00:22:08.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""For journaling I found 1 good compromise""" start="00:22:16.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""between editing and stream-of-thought""" start="00:22:18.204" video="qanda-voice" id="subtitle"]]
+[[!template text="""journaling. 1 good compromise between editing""" start="00:22:19.548" video="qanda-voice" id="subtitle"]]
+[[!template text="""and stream of thought journaling.""" start="00:22:20.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""1 good compromise between editing and being""" start="00:22:23.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""able to do it again and just kind of helps me""" start="00:22:26.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""do my thoughts even when I do it is when you""" start="00:22:31.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""do org mode and you have the bullets it kind""" start="00:22:33.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""of allows you to naturally chart your""" start="00:22:35.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""thoughts in a way that's really easy to edit""" start="00:22:38.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""reorder I saw you kind of did that with your""" start="00:22:41.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""mac la tech macro where you said item and it""" start="00:22:47.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""would put you down to the next item.""" start="00:22:48.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""Does... How much do you do stuff like that?""" start="00:22:56.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""How much do you do stuff like that where you""" start="00:23:00.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""use like org mode headings and then you""" start="00:23:04.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""reorder them because like I did that with""" start="00:23:07.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""also the K outline from HyperBolt package for""" start="00:23:10.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""the for Emacs org mode later on after the""" start="00:23:15.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: stream. Yes. So I could actually set this up""" start="00:23:21.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""so I have a lot of snippets for Org Mode.""" start="00:23:26.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""I could have Org Mode version of my insert""" start="00:23:30.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""start day snippet and carry things out in org""" start="00:23:34.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""mode. So I use org mode from time to time.""" start="00:23:39.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""I often use it for the purpose of writing""" start="00:23:43.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""readme files for projects to outline the""" start="00:23:47.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""purpose of the project,""" start="00:23:48.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""and say for a director that contains a coding""" start="00:23:54.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""project. And I think this would,""" start="00:24:01.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""so the main limitation of VoiceIn is it only""" start="00:24:07.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""works in a web page and you have to have an""" start="00:24:10.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""Internet connection, whereas Talon voice is""" start="00:24:14.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""perfect for something like org mode in that""" start="00:24:17.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""you don't need an internet connection and it""" start="00:24:20.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""will operate anywhere that you can place a""" start="00:24:22.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""cursor. I haven't found a place where it""" start="00:24:24.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""doesn't work. It's amazing.""" start="00:24:26.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""So as you saw my talk,""" start="00:24:28.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""perhaps You can run it in a terminal or a""" start="00:24:35.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""remote computer. You can run it in a virtual""" start="00:24:38.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh yeah, it's definitely.""" start="00:24:44.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: machine. If you can put your cursor there,""" start="00:24:45.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""it will work. And so as you might imagine,""" start="00:24:50.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""if you use bash aliases,""" start="00:24:52.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""I've worked for, 1 of the first things I did""" start="00:24:55.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""was map Talend commands to bash aliases so""" start="00:25:00.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""that I can do all kinds of crazy things""" start="00:25:02.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""inside of the terminal.""" start="00:25:04.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""And there are, you know,""" start="00:25:12.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""there's some support already for using Talon""" start="00:25:15.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""in Emacs. There's some Emacs functionality""" start="00:25:20.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""that's built into Talon.""" start="00:25:21.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""So when you are in Emacs,""" start="00:25:25.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""there's some features that are automatically""" start="00:25:27.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""available. And then others have developed or""" start="00:25:30.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""are developing packages,""" start="00:25:32.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""which I don't think are available yet in""" start="00:25:34.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""ELPA. There's 1 that does the font locking or""" start="00:25:40.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""syntax highlighting of Talon files,""" start="00:25:42.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""and another that adds some additional""" start="00:25:46.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""functionality that I'm regrettably not yet""" start="00:25:50.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""familiar with.""" start="00:25:51.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, as an example with like how the""" start="00:25:55.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""sharding of the thoughts,""" start="00:25:56.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""like let's say, oh, how has my day went?""" start="00:25:59.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""It's went good for reasons 123,""" start="00:26:01.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""and bad for reasons ABC.""" start="00:26:04.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""And then later on, I might think,""" start="00:26:07.828" video="qanda-voice" id="subtitle"]]
+[[!template text="""oh, there's an, I also,""" start="00:26:08.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""my day went good for reasons 456,""" start="00:26:10.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""then you, I can, then you jump up.""" start="00:26:14.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""And so the, like I found like,""" start="00:26:18.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""yeah, the org mode subheadings,""" start="00:26:19.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""because you're able to jump around,""" start="00:26:21.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""easily reorder them after the fact,""" start="00:26:25.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""the very streamlined approach to the stream""" start="00:26:32.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""of thought and the editing.""" start="00:26:33.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's right, extremely powerful.""" start="00:26:38.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: And even with the stream of thought,""" start="00:26:41.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""just because like, even when you're editing""" start="00:26:44.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""that in real time, like,""" start="00:26:45.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""oh, wait a minute, I thought of another""" start="00:26:47.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""reason that my day went good,""" start="00:26:48.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""even though I was talking about how it was""" start="00:26:50.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""going bad now. So you jump up.""" start="00:26:52.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""And then you do that. And then you have it.""" start="00:26:55.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""You easily summarize your thoughts and""" start="00:26:59.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""whatnot.""" start="00:27:00.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's right. And I think org mode is really""" start="00:27:07.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""ideal for that kind of interact.""" start="00:27:11.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""So yeah, I see your point in terms of that""" start="00:27:15.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""sort of a blend of generative writing and""" start="00:27:18.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""editing. And it's also kind of parallel to""" start="00:27:23.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""mind mapping. I use this mind mapping""" start="00:27:27.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""software called iThoughtsX where I'll""" start="00:27:32.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""generate all these children items,""" start="00:27:36.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""and then I'll drag them around and resort""" start="00:27:40.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""them. And they can have children of their own""" start="00:27:46.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""and grandchildren and so on,""" start="00:27:48.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""in terms of the levels of the nodes.""" start="00:27:50.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""And it's pretty much the same sort of thing""" start="00:27:54.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""with a nested hierarchy that you can have""" start="00:27:57.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""with org mode. I think having several""" start="00:28:02.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""alternate modes or modalities of playing with""" start="00:28:09.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""thoughts is useful. So sometimes I'll hit a""" start="00:28:13.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""wall and we're just not really generating""" start="00:28:17.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""anything in a text mode.""" start="00:28:21.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""But if I switch to using the mind mapping,""" start="00:28:25.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""just seeing it arranged with the connecting""" start="00:28:30.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""lines plays on a different part of the brain,""" start="00:28:34.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think, and it can be incredibly""" start="00:28:37.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""stimulatory. It can stimulate a lot of new""" start="00:28:40.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: That's something that I haven't messed around""" start="00:28:43.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""too much with is the mind mapping software,""" start="00:28:45.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""but...""" start="00:28:45.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: thoughts. Because the closest thing that we""" start="00:28:51.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""have to it in Emacs is Orgrimm in the in""" start="00:28:56.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""terms of like the 3D visualization of with""" start="00:29:00.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""Orgrimm GUI or""" start="00:29:03.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: UI. As well as being able to generate SVG""" start="00:29:10.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""diagrams and stuff like that,""" start="00:29:12.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think those 2 things would allow you stuff""" start="00:29:16.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""like Orgrimm or denote And then the diagrams""" start="00:29:20.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""would be the good ways of doing that in""" start="00:29:23.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""Emacs, but they don't have the mind map""" start="00:29:25.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""programs as well.""" start="00:29:27.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: They're not as well developed.""" start="00:29:30.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""There are a couple mind mapping packages,""" start="00:29:32.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""but they're not as advanced.""" start="00:29:37.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: The best ones were JavaScript web page that""" start="00:29:41.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""it that Emacs interacted with.""" start="00:29:43.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""Very well. And so they kind of,""" start="00:29:46.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""you know, worked around and had a little.""" start="00:29:49.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""Integration with the 2.""" start="00:29:51.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""So when you be jumping around your.""" start="00:29:53.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""When you'd be clicking on the web page it""" start="00:29:56.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""would be pointing you to different places and""" start="00:29:59.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""buffers okay like those are those the There's""" start="00:30:07.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""an like org-roam node program where it kind""" start="00:30:11.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""of shows the looks like a mind map.""" start="00:30:13.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""You can click and drag them a little bit,""" start="00:30:17.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""so it's a little interactive.""" start="00:30:18.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I'm not familiar with that.""" start="00:30:27.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'll have to look into that.""" start="00:30:30.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""That sounds very interesting.""" start="00:30:32.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: I found that I didn't know better,""" start="00:30:36.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""though, than Org-ROM, so it doesn't.""" start="00:30:38.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Why is that?""" start="00:30:43.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, 1 of the things I'm,""" start="00:30:47.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""I want to be able to, I don't like the""" start="00:30:51.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""feeling of being trapped inside org-mode""" start="00:30:53.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""documents. Like I want to be able to write,""" start="00:30:56.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""even though I don't really use Markdown and I""" start="00:30:58.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""like org-mode better than that.""" start="00:31:00.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""Like for instance, I also use the Koutline""" start="00:31:02.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""from the Hyperbole package.""" start="00:31:04.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""That's what my I got a talk on the stream of""" start="00:31:08.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""thought journaling for with Koutline and I""" start="00:31:12.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""was like, I just don't like the feeling of""" start="00:31:14.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""being tracked in 1 document and denote has""" start="00:31:18.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""the ability to it renames the file so you get""" start="00:31:21.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""keywords in like a PDF file so you can take""" start="00:31:26.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""so you can link to that with your notes""" start="00:31:28.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""without it all disappearing because it's not""" start="00:31:30.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""an org mode document. Plus the ability of""" start="00:31:36.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""having it run on multiple computers or with""" start="00:31:38.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""multiple people, the database kind of gets""" start="00:31:42.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""screwed up when you try running it under sync""" start="00:31:46.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""thing. Sync. More fragile.""" start="00:31:50.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Very interesting. Yeah.""" start="00:31:56.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""How far are you? So are you a regular""" start="00:32:03.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""practitioner of the Zettelkasten approach?""" start="00:32:06.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Trying to be. Incrementally improving it.""" start="00:32:12.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""I partly work too much like testing out the""" start="00:32:16.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""org-roam versus the notes to use it too much.""" start="00:32:20.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""So part of it is I just tweak with it too""" start="00:32:23.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""much before using it and then.""" start="00:32:24.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, it's so fun to tweak it.""" start="00:32:28.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: I think mostly it's as I have these tools,""" start="00:32:32.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""I know where they are.""" start="00:32:33.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""So whenever I do need them,""" start="00:32:35.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""I can use them, even though I don't always""" start="00:32:37.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""use them.""" start="00:32:38.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: So I have about a thousand notes in my org""" start="00:32:43.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""room. Zettelkasten. I've actually,""" start="00:32:47.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""it's kind of cool that you can export it and""" start="00:32:50.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""move it into other programs.""" start="00:32:51.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""I have moved it to Obsidian and played with""" start="00:32:56.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""it in Obsidian for a while,""" start="00:32:57.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""maybe added to it in Obsidian,""" start="00:32:59.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""moved it back to Orgrim.""" start="00:33:01.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""But I'm not convinced.""" start="00:33:07.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""I mean, that I think that Nicholas Luhmann""" start="00:33:10.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""was very successful with it because he spent""" start="00:33:13.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""5 hours a day or whatever working with it.""" start="00:33:15.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I think I would have to do,""" start="00:33:18.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""put in a similar amount of effort to get this""" start="00:33:21.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""kind of benefits that he gained from it.""" start="00:33:23.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'm waiting for somebody to do a scientific""" start="00:33:26.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""study, controlled trials to see,""" start="00:33:29.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""to prove whether there's a real benefit.""" start="00:33:31.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh, yeah. So with the Zettelkasten,""" start="00:33:37.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""one of the things where you have the 1 for the""" start="00:33:41.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""sections, and then the 1.1,""" start="00:33:42.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""or you know how the notes that it does that's""" start="00:33:47.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""different. The denote,""" start="00:33:48.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""it has the ability to use a hierarchy manage,""" start="00:33:52.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""which Org-ROM does everything it can to""" start="00:33:55.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""eliminate. But you can use them both in""" start="00:33:57.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""tandem. They call it signatures.""" start="00:33:59.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""And to me, 1 of the cool features of denote""" start="00:34:04.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""would be being able to use like the""" start="00:34:06.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""signatures for the things that make sense.""" start="00:34:09.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""Like 1 of the ideas is if you don't exactly""" start="00:34:13.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""know where this is, but you know,""" start="00:34:14.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""it goes to the section,""" start="00:34:15.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""you can just use the signature.""" start="00:34:17.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""Maybe don't even have too much of a file""" start="00:34:19.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""name. Like oh, this is just another thought""" start="00:34:22.679" video="qanda-voice" id="subtitle"]]
+[[!template text="""on, well you wouldn't use it for this,""" start="00:34:28.199" video="qanda-voice" id="subtitle"]]
+[[!template text="""but like my day went good for reasons 1,""" start="00:34:30.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""2, 3, 4, 5, and you could just use the denote""" start="00:34:33.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""signature to do 1, 2, 3,""" start="00:34:34.639" video="qanda-voice" id="subtitle"]]
+[[!template text="""4, 5, just as you have new ideas on like a""" start="00:34:37.659" video="qanda-voice" id="subtitle"]]
+[[!template text="""subject, or like cars are cars are not this""" start="00:34:41.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""car is nice because of reasons XYZ,""" start="00:34:43.659" video="qanda-voice" id="subtitle"]]
+[[!template text="""or these types of four-wheelers are nice""" start="00:34:46.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""because of XYZ. And you could just keep on""" start="00:34:48.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""doing that rather than having to get a new""" start="00:34:50.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""name for each 1 of those files.""" start="00:34:52.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""Or you could choose not to have it,""" start="00:34:55.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""but the ability to have it optionally in,""" start="00:34:57.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""to me, sounds like a really nice combo.""" start="00:35:01.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""Because then you""" start="00:35:03.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: could read. I agree. Yeah,""" start="00:35:06.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""I've actually imposed a hierarchy in my""" start="00:35:08.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""Zettelkasten and Orgrim.""" start="00:35:10.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""I just, I can't imagine having random ideas.""" start="00:35:17.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""They need some kind of structure.""" start="00:35:21.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""Always have some kind of parent node to""" start="00:35:27.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""attach them to.""" start="00:35:28.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: With the workflow I'm trying to develop with""" start="00:35:32.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""it, part of it is I'm just trying to optimize""" start="00:35:34.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""the workflow before it feels really,""" start="00:35:36.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""really, really good, and I don't want to""" start="00:35:38.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""tweak with it, or I don't know.""" start="00:35:39.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""Or maybe I don't always need the tool,""" start="00:35:42.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""but some of the distinctions it seems like""" start="00:35:45.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""that I want is, I want a daily journal For""" start="00:35:52.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""your stream of thoughts,""" start="00:35:53.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""then I want a separate 1 for your to do list""" start="00:35:56.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""because what you like.""" start="00:35:57.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""You want very different properties for each""" start="00:36:01.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""of those. Like for to-do lists,""" start="00:36:03.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""you want hierarchical,""" start="00:36:04.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""limited. But if you have more than 3 priority""" start="00:36:11.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""items, you don't have a priority item and""" start="00:36:13.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""it's not a good to-do list.""" start="00:36:14.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""It's just unordered thoughts.""" start="00:36:18.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: it's a wishful list, because you won't get""" start="00:36:23.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""most of those things done beyond the first 3.""" start="00:36:26.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: You're trying to- So And then when you're""" start="00:36:28.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""trying to do the other stuff,""" start="00:36:30.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""the stream of thoughts,""" start="00:36:31.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""all that stuff I probably don't want to go""" start="00:36:34.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""straight into like my Zettelkasten because""" start="00:36:36.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""some of those problems,""" start="00:36:37.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""like it's noisy, it might be redundant,""" start="00:36:42.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""you don't know how it fits into it because""" start="00:36:45.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""you haven't done that processing on it.""" start="00:36:46.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""This hasn't been refined.""" start="00:36:47.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""So, like, you don't want to refine it.""" start="00:36:53.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""Like, I find that spell checking is""" start="00:36:54.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""detrimental to me. I don't want spell""" start="00:36:56.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""checking. I don't want spell checking.""" start="00:36:58.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""I don't want syntax highlighting.""" start="00:37:00.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""I just want to talk or to just write.""" start="00:37:04.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""If I have mistakes, I can turn on that later,""" start="00:37:07.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""do it. Because otherwise,""" start="00:37:08.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""it will distract me and makes that process""" start="00:37:13.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yep, yep, definitely interferes with the""" start="00:37:20.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""flow.""" start="00:37:20.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: worse. So yeah, when you're so yeah when""" start="00:37:24.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""you're doing the getting things done like""" start="00:37:28.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""that's why I want them would be want would""" start="00:37:30.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""want them in separate files is that you want""" start="00:37:32.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""them like ordered, numbered lists,""" start="00:37:34.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""smaller. And then with the other,""" start="00:37:38.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""with the stream of thought,""" start="00:37:40.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""with journaling, you'd want it just""" start="00:37:42.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""unordered. Thoughts land wherever they may.""" start="00:37:45.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""Maybe not even like machine-generated""" start="00:37:49.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""timestamps, So you don't even have to worry""" start="00:37:51.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""about the names of it,""" start="00:37:52.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""as an example. So yeah,""" start="00:37:55.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""very different properties for what you want""" start="00:37:56.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""for both of those modalities.""" start="00:37:58.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: So you saw, perhaps, in that snippet that I""" start="00:38:06.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""had that at, you know,""" start="00:38:07.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""working on my to-do list at the start of the""" start="00:38:10.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""day, but in a certain sense that is not ideal""" start="00:38:13.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""time. I really haven't optimized the timing""" start="00:38:20.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""of assembly of the to-do list,""" start="00:38:22.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think, in retrospect.""" start="00:38:24.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""It's just by lifelong habit.""" start="00:38:27.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""I do that at the beginning of the day,""" start="00:38:29.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""but probably would be better to do it at""" start="00:38:32.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""night or the night before.""" start="00:38:34.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""And so you sort of prime your brain to go,""" start="00:38:38.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""just get up and go, go after those items.""" start="00:38:41.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""You were, you maybe you want to revise the""" start="00:38:46.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""items a little bit after sleeping on it,""" start="00:38:49.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""but after your subconscious has worked on""" start="00:38:52.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""those items. Do you have a daily routine that""" start="00:38:57.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""you follow in terms of generating those kind""" start="00:38:59.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""of lists?""" start="00:39:00.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: No. As I said, mostly I just got scaffolding""" start="00:39:05.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""for this stuff when I want to do it.""" start="00:39:08.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""I enjoy building the scaffolding and I know""" start="00:39:10.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""where the tools are when I need it.""" start="00:39:12.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I start using them when I need it,""" start="00:39:14.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""but I don't have it too consistent.""" start="00:39:17.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: So OK, so you've looked so far at denote and""" start="00:39:29.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""org-roam, and you're using k-outline.""" start="00:39:35.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""And are there other tools that you've""" start="00:39:39.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""explored?""" start="00:39:39.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: I've tried using whisper.el""" start="00:39:44.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""and nerd dictation to do What your talk was""" start="00:39:50.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""about? Speaking speech to text to see how""" start="00:39:53.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""that changes Because it does change what you""" start="00:39:56.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""think What you write down when you speak it""" start="00:40:01.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""rather than write it. Same thing as when""" start="00:40:05.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""you're thinking about when you eliminate the""" start="00:40:07.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""editing, it changes the way you write.""" start="00:40:08.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""When you have the spell checking,""" start="00:40:11.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""it changes the way you write to a much""" start="00:40:14.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""smaller degree. But that's the stuff I really""" start="00:40:20.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""haven't gotten working as well,""" start="00:40:23.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""or underdeveloped.""" start="00:40:25.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: So the dictated text winds up,""" start="00:40:30.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'll move it in. Often I move it into on""" start="00:40:37.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""Overleaf, this website for a lot of tech""" start="00:40:40.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""documents. I have a plug-in for Rightful,""" start="00:40:44.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I use that to clean up my word choices""" start="00:40:50.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""and some grammar. And I use Grammarly.""" start="00:40:56.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'll copy and paste. It just depends on the""" start="00:41:00.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""nature of the writing,""" start="00:41:01.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""how serious it is, how polished it has to be.""" start="00:41:05.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""If I, if it's really vital,""" start="00:41:12.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""like for a grant application or something,""" start="00:41:14.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'll paste that into Grammarly and work on""" start="00:41:16.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""trying to get the writing level to the lowest""" start="00:41:22.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""possible grade level to make it as clear as""" start="00:41:26.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""possible to as wide of an audience as""" start="00:41:30.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""possible. 1 of the things I kind""" start="00:41:34.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: of wish with all the spell checking grammarly""" start="00:41:38.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""is I kind of wish you could say,""" start="00:41:40.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""hey, what would the subtle cast in person""" start="00:41:48.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""think of what I wrote who what would einstein""" start="00:41:52.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""think of what I wrote because rather than""" start="00:41:54.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""just trying to make 1 uniform way of talking""" start="00:41:57.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""it's like people talk differently and that's""" start="00:41:59.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""an advantage and I can't I really wish like""" start="00:42:04.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""you maybe these GPT programs could do well.""" start="00:42:07.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""I really wish it could help you with the""" start="00:42:10.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""grammar, that maybe give you thoughts on what""" start="00:42:16.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""your notes are. What does this person think""" start="00:42:18.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""of your thoughts? What does this person think""" start="00:42:20.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""of your thoughts? Well,""" start="00:42:20.457" video="qanda-voice" id="subtitle"]]
+[[!template text="""does this person think of your thoughts?""" start="00:42:20.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""Well, does this person think of your""" start="00:42:22.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""thoughts?""" start="00:42:22.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's true. Yeah, I could probably do that""" start="00:42:27.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""even through chat GDP now.""" start="00:42:31.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""I haven't spent time trying that out.""" start="00:42:35.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""But I bet that capabilities are already.""" start="00:42:39.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""It would be nice if it was like built in to""" start="00:42:44.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""Emacs, right? It's a package.""" start="00:42:46.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""Yeah. That'd be very cool.""" start="00:42:49.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Grammarly have some sort of,""" start="00:42:52.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""like, the grammar where they help you the way""" start="00:42:55.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""you write. Like, for instance,""" start="00:42:57.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""removing redundant words.""" start="00:42:59.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""And Yeah, it's supposed to be like beyond""" start="00:43:02.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""just spell checking, right?""" start="00:43:04.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. So, and there's actually a Grammarly""" start="00:43:08.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""package for Emacs, and you get some of the""" start="00:43:13.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""functionality out of it.""" start="00:43:14.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""I've paid for the subscription to get the""" start="00:43:17.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""advanced features, but I've maybe I don't""" start="00:43:21.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""have my configuration set up correctly.""" start="00:43:23.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""I just found it was easier to copy and paste""" start="00:43:27.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""a paragraph at a time into the desktop""" start="00:43:31.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""application and it will go through and find""" start="00:43:36.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""those redundancies, junk English.""" start="00:43:38.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: It would be really interesting trying to have""" start="00:43:48.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""1 of these That was my problem with a lot of""" start="00:43:52.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""the grammarly type Programs is I'm I want""" start="00:43:55.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""something that would do that like be real""" start="00:43:57.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""interesting seeing 1 that's like an old""" start="00:43:59.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""English type thing or like Lumen person where""" start="00:44:03.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""it's just like how does this person write and""" start="00:44:06.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""Because it would be it would spit out""" start="00:44:09.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""something a lot different.""" start="00:44:11.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""Just different. Like, yeah,""" start="00:44:13.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""you put different people.""" start="00:44:14.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Most definitely, yes. They would have a""" start="00:44:17.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""completely different thinking and writing""" start="00:44:20.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""style. And so the purpose of doing that would""" start="00:44:28.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""be to stimulate A new way of thinking or""" start="00:44:34.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""writing I guess on your part""" start="00:44:36.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: the purpose of writing is to communicate It""" start="00:44:40.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""and writing you know 1 of the targets for""" start="00:44:43.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""that could be yourself so it's like I'd much""" start="00:44:47.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""rather have a comprehensible sentence than a""" start="00:44:50.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""truly correct 1. 1 of those is far more""" start="00:44:57.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""valuable and far more correct English or""" start="00:45:00.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, one's more effective at communicating""" start="00:45:06.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""to yourself. Yes.""" start="00:45:08.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: language. Well, one's using the tool,""" start="00:45:11.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""one's the other you're trying to be used by""" start="00:45:15.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""the tool. And they're not the same thing.""" start="00:45:19.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's true. Well, I view myself as being""" start="00:45:29.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""responsible for my writing and being the""" start="00:45:35.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""final judge of it and as a scientist I have""" start="00:45:40.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""to my mantra is it's got to be clear and then""" start="00:45:49.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""precise and then concise in that order.""" start="00:45:52.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I claim that, you know,""" start="00:45:56.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""that's the order with which I go through""" start="00:45:58.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""doing revisions. Clarity is,""" start="00:46:01.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""you know, if it's not clear,""" start="00:46:02.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""it's useless. It's got to be clear to me,""" start="00:46:05.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""but it's got to be clear to a lot of people""" start="00:46:08.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""for whom English is not a first language.""" start="00:46:10.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""And then after that, I got to worry about""" start="00:46:15.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""precision and then conciseness,""" start="00:46:19.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""but those can't be done at the expense of""" start="00:46:24.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""clarity. So it's quite a battle.""" start="00:46:27.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: That goes back on the to-do list,""" start="00:46:32.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""where it's like if you have more than 3 items""" start="00:46:35.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""like here the purpose of doing that is to""" start="00:46:39.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""help or grant of a to-do list is help is to""" start="00:46:43.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""Have you help choose what you're going to do""" start="00:46:45.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""for the day. Which is why if you have more""" start="00:46:47.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""than 3 items, if you have 50 items on there,""" start="00:46:50.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""you're not going to get 50 of those items""" start="00:46:52.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""done. So maybe you pick the easiest ones to""" start="00:46:55.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""do, not necessarily the ones that you want or""" start="00:46:58.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""need to be done. So it's like the process of""" start="00:47:03.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""choosing those, like, I don't know,""" start="00:47:06.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""like I found that a very good rules,""" start="00:47:07.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""like up to 3 priority items if you,""" start="00:47:10.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""and then also when you look back and you see""" start="00:47:13.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""that you did those 3 items,""" start="00:47:14.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""Who cares about this? I'd rather get those 3""" start="00:47:18.460" video="qanda-voice" id="subtitle"]]
+[[!template text="""items done than any number of secondary""" start="00:47:20.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""tasks.""" start="00:47:20.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yes, I, yeah, you're very,""" start="00:47:26.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""very right about that.""" start="00:47:28.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""I don't, I used to, you know,""" start="00:47:32.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""use a pattern of assigning letters.""" start="00:47:36.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""And so you have like, you know,""" start="00:47:39.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""based on like a hierarchy of,""" start="00:47:41.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""you've got the urgent and important,""" start="00:47:43.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""of course, that you got to deal with those.""" start="00:47:47.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""And then the next thing down is the important""" start="00:47:50.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""and so on. But I tend to just generate these""" start="00:48:00.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""terribly long lists that most of those items""" start="00:48:03.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""would go on what is known as a grass catchers""" start="00:48:06.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""list of things that you may get to someday,""" start="00:48:09.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""but there's no way you can get to them today.""" start="00:48:11.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""But I feel compelled, I need to capture them.""" start="00:48:16.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""I may want to do them eventually.""" start="00:48:18.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""They wind up on my list.""" start="00:48:20.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh yeah, my idea on that is like with a""" start="00:48:24.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""Zettelkasten where you have the day thoughts""" start="00:48:26.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""and the day journal, then you have your""" start="00:48:29.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""Zettelkasten which I don't think should have""" start="00:48:31.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""too close of a connection because one's a lot""" start="00:48:34.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""more, what's the word?""" start="00:48:37.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: It's a knowledge base.""" start="00:48:40.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Optimized. Yes, one's more processed.""" start="00:48:43.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""Yeah, that's the word.""" start="00:48:45.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""Yeah, one's actually much more processed.""" start="00:48:47.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""The other is you don't want that process""" start="00:48:50.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""because you want it to flow from your head""" start="00:48:52.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""with as little friction as possible.""" start="00:48:54.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""The other 1 you want to be processed so that""" start="00:48:59.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""when you look it up and stuff like that's""" start="00:49:01.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""more efficient Same thing with your to-do""" start="00:49:04.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""things. So like oh, yeah,""" start="00:49:06.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""I guess there's 1 more Category like I""" start="00:49:09.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""thought I found my 3 favorite way rather than""" start="00:49:11.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""like priority 123 is primary tasks which""" start="00:49:15.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""basically generally goes up to 3,""" start="00:49:17.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""secondary tasks, and then I like to have a""" start="00:49:20.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""third category, unplanned tasks,""" start="00:49:22.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""and I just have those wrote down in a heading""" start="00:49:25.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""in an org mode file, and then I put the tasks""" start="00:49:28.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""in there, rather than using the agenda,""" start="00:49:32.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""like too much, I don't know,""" start="00:49:33.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""just I found that that was my favorite way of""" start="00:49:40.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""doing it and then you have like another file""" start="00:49:43.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""that would just be your dump of anything you""" start="00:49:47.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""want to do and that would be like that you""" start="00:49:51.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""could pull from to get your day or I guess""" start="00:49:57.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""something that's actually better than a day""" start="00:49:59.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""is doing it all by a week at a time I found""" start="00:50:01.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""that that's actually a lot nicer because""" start="00:50:03.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""thinking about what you do in a week seems""" start="00:50:06.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""like a nicer unit, where you have a week,""" start="00:50:09.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""then you have your day,""" start="00:50:10.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""and then you have the 3 categories of""" start="00:50:13.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""priority, secondary, and unplanned.""" start="00:50:16.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""At least that's been my favorite iteration on""" start="00:50:20.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: thought process workflow.""" start="00:50:30.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: the week of the to-do I had""" start="00:50:31.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: a colleague that was very effective at""" start="00:50:33.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""planning on a weekly basis and he would just""" start="00:50:37.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""get his weekly list of things to get done and""" start="00:50:41.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""he was very good at pounding through that""" start="00:50:43.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""list and getting them done.""" start="00:50:45.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""I have been too much of a day-oriented person""" start="00:50:49.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""and a week-oriented person to adapt his""" start="00:50:54.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""approach, but I've been considering that too.""" start="00:50:56.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think what I don't do enough of is pulling""" start="00:51:03.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""back to the month level,""" start="00:51:05.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""semester level, year level,""" start="00:51:08.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""5 year level, 10 year level.""" start="00:51:10.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""And...""" start="00:51:11.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: That's the advantage of finding it by a week""" start="00:51:16.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""is like you can have like so you'd have your""" start="00:51:17.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""week and then maybe you have like 1 section""" start="00:51:20.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""after Friday or last day of the week and this""" start="00:51:24.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""is like your this is just your like staging""" start="00:51:27.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""so this is where you stage all the tasks and""" start="00:51:30.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""then what like you can just stay in your""" start="00:51:32.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""staging write them all down and then use alt""" start="00:51:37.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""and your arrow keys to quickly reorder all of""" start="00:51:39.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""them in the week and then when you're looking""" start="00:51:43.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""at 1 day and you're just looking at ordering""" start="00:51:45.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""everything well it makes a lot of sense when""" start="00:51:48.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""you just say, I don't really want to do that.""" start="00:51:51.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""Like I want this done this week.""" start="00:51:53.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""I don't necessarily want it done on this day.""" start="00:51:56.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""So it just, that's why I found that the week""" start="00:51:58.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""approach works a lot nicer even.""" start="00:52:00.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: of a staging time you like schedule some time""" start="00:52:09.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""in your week to do the staging.""" start="00:52:11.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah. Is that way The staging is more of just""" start="00:52:14.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""like, these are the things I would like to""" start="00:52:16.840" video="qanda-voice" id="subtitle"]]
+[[!template text="""get done. And then when you schedule it,""" start="00:52:19.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""then you kind of schedule it by just using""" start="00:52:23.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""the Alt-Left key, the Alt-Arrow keys to just,""" start="00:52:26.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""oh, I want this done. It looks like this""" start="00:52:28.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""would work really good on this day.""" start="00:52:29.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""This 1 looks like it would work on this day.""" start="00:52:31.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: A, you still utilize org agenda?""" start="00:52:38.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: I try to, I don't know,""" start="00:52:45.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""I found that it works at least better without""" start="00:52:49.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""it. Yeah, that's fine.""" start="00:52:52.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""Because that way I also get a log of""" start="00:52:54.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""everything I've done, which I can't find a""" start="00:53:00.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""way that, it seems easier to just make new""" start="00:53:03.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""files for it. And rather than,""" start="00:53:06.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""like you could use it with Org Agenda,""" start="00:53:08.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""but like 1 of the things that you want is""" start="00:53:11.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""with it is to look back at it,""" start="00:53:14.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""reflect. And so like if you have the,""" start="00:53:18.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""if you have, if you open up the file with 2""" start="00:53:23.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""levels or 3 levels of headings to where you""" start="00:53:25.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""just see the priority task,""" start="00:53:26.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""you can get a very nice overview of saying,""" start="00:53:29.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""I did my priority task this day.""" start="00:53:33.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""So you get the numbers next to the things.""" start="00:53:38.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""And so you can easily just say,""" start="00:53:40.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""I've done this. I mean,""" start="00:53:41.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""it would be nice if I could figure out a way""" start="00:53:43.360" video="qanda-voice" id="subtitle"]]
+[[!template text="""of doing agenda to give me percentages.""" start="00:53:45.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""But I haven't figured that out.""" start="00:53:50.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""Seeing the granular level,""" start="00:53:54.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""I can easily scan that with my eyes.""" start="00:53:57.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""So I just did it by hand rather than the""" start="00:53:59.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""agenda.""" start="00:53:59.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I've, I've tried to use agenda a few""" start="00:54:06.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""times and pretty seriously,""" start="00:54:10.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""but I keep bouncing off it.""" start="00:54:14.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""I think I get too many things built in or""" start="00:54:17.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""scheduled and I just don't get to them.""" start="00:54:21.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""I feel bad about it and I wind up abandoning""" start="00:54:26.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""it. So that's 1 area where there's probably""" start="00:54:31.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""some potential for optimizing and making that""" start="00:54:34.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""work better. There's a lot of customizing you""" start="00:54:40.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""can do with Agenda. It's amazing.""" start="00:54:42.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: For me, it was though,""" start="00:54:44.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""I wanted there to be a separation between the""" start="00:54:48.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""daily to-do lists and like your grab bag""" start="00:54:52.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""which I think agenda works a lot better for a""" start="00:54:54.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""grab bag. I want a nice way of looking back""" start="00:54:58.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""at my to-do daily to-do logs.""" start="00:55:01.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""So I kind of want them to be separated,""" start="00:55:05.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""so I just did them separate.""" start="00:55:08.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""With the agenda, I could never figure out""" start="00:55:12.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""exactly how I want that to work,""" start="00:55:14.060" video="qanda-voice" id="subtitle"]]
+[[!template text="""how the files would look,""" start="00:55:15.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""and how all the Emacs settings would interact""" start="00:55:18.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""with it. I mean, I'm sure I could,""" start="00:55:21.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""but that's why I opted for weekly files.""" start="00:55:28.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""Or at least That's my most refined idea on""" start="00:55:34.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""the process.""" start="00:55:35.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's a good idea. So I've taken my approach""" start="00:55:41.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""is a little different that I'm generating""" start="00:55:43.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""this text on a daily basis and popping it""" start="00:55:46.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""into this to 1 document file per day and a""" start="00:55:52.660" video="qanda-voice" id="subtitle"]]
+[[!template text="""like a diary on Overleaf as a big so it winds""" start="00:55:59.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: sections""" start="00:56:01.950" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: up being 365 and where every month is a""" start="00:56:05.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""chapter and it's compiled quickly enough even""" start="00:56:11.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""though it's often up to 1,000""" start="00:56:13.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""pages long by the end of the year.""" start="00:56:14.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""And I have all these, of course,""" start="00:56:17.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""with the PDF, I can search through it.""" start="00:56:19.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""So that's not as you can't do the kind of""" start="00:56:22.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""really sophisticated searching that you can""" start="00:56:24.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""do with Org Mode. But just doing that,""" start="00:56:29.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""It sure has been very helpful in digging up""" start="00:56:33.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""information, like the little protocols on how""" start="00:56:39.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""I attack, accomplish a certain task that I""" start="00:56:42.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""have to do a year later,""" start="00:56:45.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""or to have a record of what I did on a""" start="00:56:50.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""certain day and then somebody above me might""" start="00:56:54.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""be trying to hold me to account what got""" start="00:56:57.100" video="qanda-voice" id="subtitle"]]
+[[!template text="""done. I can look that up pretty very quickly.""" start="00:56:59.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""It's documented. I find that to be just any""" start="00:57:05.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""kind of thorough documentation system is very""" start="00:57:09.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: I also mess with having it all in 1 file""" start="00:57:16.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""rather than by a weak file.""" start="00:57:17.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: useful. And at least what I did.""" start="00:57:20.140" video="qanda-voice" id="subtitle"]]
+[[!template text="""I ran into trouble with,""" start="00:57:21.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""like, once you get a lot of items,""" start="00:57:25.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""like if you have 1,000""" start="00:57:27.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""items, headings, I've had org files with""" start="00:57:30.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""1,000 headings. It can be so hard to scroll""" start="00:57:33.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""through. Maybe it's some limitations I'm run""" start="00:57:38.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""into with the Emacs being single threaded.""" start="00:57:42.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: At least with, yeah. Yeah.""" start="00:57:49.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""It was like, that's 1 of the things is like,""" start="00:57:52.420" video="qanda-voice" id="subtitle"]]
+[[!template text="""how exactly do you want this,""" start="00:57:54.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""the information structured because it can""" start="00:57:55.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""change how it's retrieved.""" start="00:57:56.820" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Ooh, most definitely. Most definitely.""" start="00:58:00.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: So as an example, when I was doing the daily""" start="00:58:08.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""logs and I put it all in the date and then""" start="00:58:14.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""the priority, secondary,""" start="00:58:15.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""unplanned tasks, and then I had it stay at""" start="00:58:21.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""that, get auto expanded by that level by""" start="00:58:24.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""default so I didn't see the individual task""" start="00:58:27.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""and you and then I had a but And then it""" start="00:58:30.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""would say like I complete 205 or something""" start="00:58:33.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""like that of secondary tasks.""" start="00:58:34.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""And then just being able just to quickly scan""" start="00:58:38.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""all the days and say, oh,""" start="00:58:39.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""it just, the feedback you get from that is""" start="00:58:42.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""worth a lot. And I don't think it's""" start="00:58:46.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""something, it's not something I could think""" start="00:58:47.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""of how you do an agenda.""" start="00:58:49.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""Even though I got done in the text files just""" start="00:58:53.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""because you get that doesn't expand all the""" start="00:58:57.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""way so you so you can quickly just see on""" start="00:58:59.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""this day I did this well on this day I did""" start="00:59:01.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""this well all within and 4 lines per day.""" start="00:59:05.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""So it's not, that doesn't,""" start="00:59:11.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""that's not very visually verbose.""" start="00:59:12.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""Probably about as visually verbose as you""" start="00:59:16.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""want it. They're not super long.""" start="00:59:18.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""You easily see the 2 of 3 and stuff like that""" start="00:59:23.000" video="qanda-voice" id="subtitle"]]
+[[!template text="""that you get done so you can quickly and say,""" start="00:59:24.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""oh well, these are the days where I got my""" start="00:59:29.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""primary tasks done or this week,""" start="00:59:31.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""and this day I didn't do it well and you""" start="00:59:36.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""could helps you correlate like your feelings""" start="00:59:38.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""with your to-do lists and journals and""" start="00:59:42.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""whatnot.""" start="00:59:42.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah I think that's very powerful.""" start="00:59:48.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""Because it's summarizing capability.""" start="00:59:53.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""It allows you to, you know,""" start="00:59:57.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""pull back and get an overview.""" start="01:00:00.656" video="qanda-voice" id="subtitle"]]
+[[!template text="""Get an overview.""" start="01:00:01.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: And yeah, as I said, it's like the feedback""" start="01:00:07.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""from that almost when I did that,""" start="01:00:10.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""it feels like half the reason or should be""" start="01:00:12.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""like half the reason is and it's something""" start="01:00:14.580" video="qanda-voice" id="subtitle"]]
+[[!template text="""that I don't if you use the agenda as it is,""" start="01:00:19.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""you wouldn't, I don't know how you would get""" start="01:00:21.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""it, like saying, like looking at the week by""" start="01:00:23.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""week basis, breakdowns,""" start="01:00:25.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""you might be able to get like percentages,""" start="01:00:27.120" video="qanda-voice" id="subtitle"]]
+[[!template text="""which would be nice. Like I did this well,""" start="01:00:30.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""or like habit, I don't,""" start="01:00:33.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""there might be things that could offer you""" start="01:00:35.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""but. Yeah,""" start="01:00:39.700" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: so I'm pretty obsessed about tracking effort""" start="01:00:46.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""on various kinds of projects,""" start="01:00:48.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""or various kinds of activities,""" start="01:00:52.020" video="qanda-voice" id="subtitle"]]
+[[!template text="""and to get some feedback in that regard.""" start="01:00:57.880" video="qanda-voice" id="subtitle"]]
+[[!template text="""And then you, but you got the,""" start="01:00:59.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""So I define a project as anything that""" start="01:01:02.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""requires work at different points in time,""" start="01:01:06.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""more than 1""" start="01:01:07.040" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: time. I'll email you my org mode template""" start="01:01:15.300" video="qanda-voice" id="subtitle"]]
+[[!template text="""that I made that demonstrates that.""" start="01:01:17.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""I don't know if you, do you have your email""" start="01:01:22.200" video="qanda-voice" id="subtitle"]]
+[[!template text="""in your talk notes or anything?""" start="01:01:24.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. I think I should have it on the first""" start="01:01:29.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""slide. There should be my email address.""" start="01:01:31.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""I can add it to my talk notes.""" start="01:01:40.560" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay. Would you want me to show it to you at""" start="01:01:46.920" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: that'd be great.""" start="01:01:48.940" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: all? Sure, All right, let's see.""" start="01:01:52.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""I'm going to share screen button,""" start="01:02:20.842" video="qanda-voice" id="subtitle"]]
+[[!template text="""right? There's a share screen button,""" start="01:02:21.220" video="qanda-voice" id="subtitle"]]
+[[!template text="""right?""" start="01:02:21.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, so, let's see.""" start="01:02:26.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, I'm all. That's the right button.""" start="01:02:59.243" video="qanda-voice" id="subtitle"]]
+[[!template text="""Can you not share the screen on this?""" start="01:03:04.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: I have something going here.""" start="01:03:08.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""Let's see. I have, I see some stuff on here.""" start="01:03:13.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""Wonder if I'm still active.""" start="01:03:18.160" video="qanda-voice" id="subtitle"]]
+[[!template text="""It shows share screen.""" start="01:03:21.180" video="qanda-voice" id="subtitle"]]
+[[!template text="""Cancel.""" start="01:03:22.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Maybe they just did it through OBS.""" start="01:03:28.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Maybe I only have permission to share.""" start="01:03:47.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""I can put my email address in the chat.""" start="01:03:53.900" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: I guess I'll just email it to you,""" start="01:03:59.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""but Let's see. Yeah, I think the way that""" start="01:04:06.600" video="qanda-voice" id="subtitle"]]
+[[!template text="""they did it on the Any of the other videos if""" start="01:04:11.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""they shared the screen they just shared the""" start="01:04:13.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""webcam they just took over the webcam with""" start="01:04:17.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""OBS and shared what they wanted with it.""" start="01:04:20.380" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, okay.""" start="01:04:22.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: At least I'm guessing.""" start="01:04:24.720" video="qanda-voice" id="subtitle"]]
+[[!template text="""Yeah, I'll give that to you.""" start="01:04:26.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""Okay. I guess I'll let you go watch the rest""" start="01:04:31.080" video="qanda-voice" id="subtitle"]]
+[[!template text="""of the Emacs videos.""" start="01:04:32.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: This has been a great conversation.""" start="01:04:34.640" video="qanda-voice" id="subtitle"]]
+[[!template text="""Thank you very much. I appreciate your""" start="01:04:37.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""willingness to share your thoughts on this""" start="01:04:39.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""matter. This is vital,""" start="01:04:42.980" video="qanda-voice" id="subtitle"]]
+[[!template text="""time management. It's a kind of key aspect of""" start="01:04:48.260" video="qanda-voice" id="subtitle"]]
+[[!template text="""life.""" start="01:04:48.440" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Oh yeah. The way the how the function.""" start="01:04:54.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""Reasons to use emacs is to use the keyboard""" start="01:05:03.320" video="qanda-voice" id="subtitle"]]
+[[!template text="""is. It's not to speed you up.""" start="01:05:08.240" video="qanda-voice" id="subtitle"]]
+[[!template text="""Like, yeah, that's nice.""" start="01:05:09.520" video="qanda-voice" id="subtitle"]]
+[[!template text="""But it keeps you in the stream,""" start="01:05:12.280" video="qanda-voice" id="subtitle"]]
+[[!template text="""keeps you in the flow state and which then""" start="01:05:25.400" video="qanda-voice" id="subtitle"]]
+[[!template text="""just makes you think better and yeah and the""" start="01:05:32.780" video="qanda-voice" id="subtitle"]]
+[[!template text="""thing with that is you I have you I have no""" start="01:05:35.540" video="qanda-voice" id="subtitle"]]
+[[!template text="""idea what the limits of that would be.""" start="01:05:37.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""Because you think, because yes,""" start="01:05:39.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""it's not about beating up how many words you""" start="01:05:42.740" video="qanda-voice" id="subtitle"]]
+[[!template text="""say a minute. I mean that's nice and all,""" start="01:05:44.860" video="qanda-voice" id="subtitle"]]
+[[!template text="""But when you start doing that,""" start="01:05:46.680" video="qanda-voice" id="subtitle"]]
+[[!template text="""when you start removing all these friction""" start="01:05:48.340" video="qanda-voice" id="subtitle"]]
+[[!template text="""points, all of a sudden the number,""" start="01:05:52.500" video="qanda-voice" id="subtitle"]]
+[[!template text="""quality, and types of thoughts you get start""" start="01:05:57.800" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: That's right.""" start="01:06:01.620" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: increasing. Which is the goal.""" start="01:06:03.480" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay. Well, thank you very much.""" start="01:06:14.960" video="qanda-voice" id="subtitle"]]
+[[!template text="""Enjoy the rest of the meeting.""" start="01:06:17.760" video="qanda-voice" id="subtitle"]]
+[[!template text="""[Speaker 2]: Will do.""" start="01:06:19.280" video="qanda-voice" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20voice%3A%20Enhancing%20productivity%20with%20voice%20computing)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/voice-before.md b/2023/info/voice-before.md
new file mode 100644
index 00000000..6f5b9b90
--- /dev/null
+++ b/2023/info/voice-before.md
@@ -0,0 +1,37 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 19-min talk; Q&A: BigBlueButton conference room
+Status: TO_INDEX_QA
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="voice-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="voice-mainVideo" data="""
+00:00.000 Introduction
+00:37.400 Three activities in voice computing
+01:02.560 Talk is not about ... and about ...
+01:53.520 Motivations
+03:33.240 Data
+03:58.680 Voice In in the Chrome Store
+04:25.628 Works in web pages with text areas
+05:16.880 Built-in commands in Voice In Plus
+06:41.740 Common errors made by Voice In
+08:14.760 Custom speech-to-text commands
+09:59.420 Custom speech-to-commands
+10:37.540 Introducing Talon Voice
+12:28.400 Talon GUI
+14:02.540 Talon file with web scope
+15:34.015 Terminals on remote and virtual machines
+16:52.500 Recommendations
+18:17.720 Acknowledgements
+
+"""]]<div></div>Duration: 18:49 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--main.opus">Download --main.opus (9MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--main.webm">Download --main.webm (32MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/vYHj7iSYhUbTxDv93NvzzY">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="voice-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="voice-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.opus"></audio></div><div></div>Duration: 1:07:47 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.opus">Download --answers.opus (34MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-voice--enhancing-productivity-with-voice-computing--blaine-mooers--answers.webm">Download --answers.webm (205MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/voice-nav.md b/2023/info/voice-nav.md
new file mode 100644
index 00000000..9fedf97e
--- /dev/null
+++ b/2023/info/voice-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/matplotllm">MatplotLLM, iterative natural language data visualization in org-babel</a>
+Next by track: <a href="/2023/talks/llm">LLM clients in Emacs, functionality and standardization</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/web-after.md b/2023/info/web-after.md
new file mode 100644
index 00000000..96ebb81b
--- /dev/null
+++ b/2023/info/web-after.md
@@ -0,0 +1,850 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="web-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Overview""" start="00:00:00.000" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""Hello, I am Yuchen, and I will be talking about""" start="00:00:00.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""how Emacs may be used to save user freedom on the web.""" start="00:00:03.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I will begin by describing the background issues,""" start="00:00:06.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""followed by solutions outside of Emacs.""" start="00:00:09.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Then I will move into the main business of describing""" start="00:00:12.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""several ways to address the issues using Emacs,""" start="00:00:14.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""including free clients in Emacs, web browsers,""" start="00:00:17.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""also known as universal clients in Emacs,""" start="00:00:20.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""approaches using Emacs web server and Emacs web framework,""" start="00:00:23.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which allows one to write an Emacs package""" start="00:00:27.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and get a web app for free,""" start="00:00:29.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as well as using Emacs as a Firefox extension.""" start="00:00:30.760" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""Background problems""" start="00:00:35.680" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""OK, let's now move on to""" start="00:00:35.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""the background issues for this topic.""" start="00:00:37.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Many of you probably already know what is free software.""" start="00:00:39.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is software that respects four user freedoms,""" start="00:00:42.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""including freedom 0, which is the freedom to use,""" start="00:00:45.481" video="mainVideo-web" id="subtitle"]]
+[[!template text="""freedom 1 is the freedom to study and modify a program,""" start="00:00:49.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""freedom 2 is the freedom to""" start="00:00:52.279" video="mainVideo-web" id="subtitle"]]
+[[!template text="""distribute exact copies of a program,""" start="00:00:54.488" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and freedom 3 is the freedom to distribute modified copies.""" start="00:00:57.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Different environments have different norms""" start="00:01:01.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""with regards to user freedom.""" start="00:01:04.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, GNU/Linux distributions""" start="00:01:06.820" video="mainVideo-web" id="subtitle"]]
+[[!template text="""default to free software,""" start="00:01:11.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""even though the official kernel Linux""" start="00:01:13.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""contains non-free code, like non-free firmware.""" start="00:01:15.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""What I mean is, people generally expect free software""" start="00:01:18.420" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in these environments.""" start="00:01:23.060" video="mainVideo-web" id="subtitle"]]
+[[!template text="""There's plenty of free software""" start="00:01:25.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""built on other free software,""" start="00:01:27.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so generally people can accomplish tasks""" start="00:01:29.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""using free software only.""" start="00:01:31.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Emacs, by comparison, is even better.""" start="00:01:33.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It has freedom built-in, as it is highly customizable""" start="00:01:37.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""with self-documenting configurations.""" start="00:01:41.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""When a Lisp form is evaluated by the user in Emacs,""" start="00:01:44.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""the change is instantly reflected in the environment.""" start="00:01:49.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Thus, it converts users to hackers effortlessly.""" start="00:01:53.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""From writing setq statements,""" start="00:01:56.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is similar to configurations""" start="00:01:58.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in the majority of other programs,""" start="00:02:00.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to writing functions,""" start="00:02:01.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which are building blocks of Elisp features,""" start="00:02:03.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to writing features and publishing packages,""" start="00:02:05.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""it is a natural progression.""" start="00:02:08.140" video="mainVideo-web" id="subtitle"]]
+[[!template text="""In this sense, Emacs perhaps has""" start="00:02:10.099" video="mainVideo-web" id="subtitle"]]
+[[!template text="""the most gentle learning curve for hackers.""" start="00:02:15.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""On the other hand, the default license""" start="00:02:18.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in the Emacs community""" start="00:02:21.100" video="mainVideo-web" id="subtitle"]]
+[[!template text="""is GNU General Public License version 3 or later,""" start="00:02:22.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is the best free software license""" start="00:02:26.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""apart from the Affero license.""" start="00:02:29.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Now let's move on to web browsers,""" start="00:02:32.300" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which by contrast does not default to freedom.""" start="00:02:35.020" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For one thing, free software JavaScript projects""" start="00:02:39.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""default to Expat license,""" start="00:02:42.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is also commonly known as the MIT license,""" start="00:02:45.780" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is a lax permissive license that could be exploited""" start="00:02:49.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as developers could write non-free derivatives""" start="00:02:53.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and subjugate user freedom.""" start="00:02:55.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""This also contributes to the JavaScript trap.""" start="00:02:59.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Most popular web browsers nowadays simply download and run""" start="00:03:03.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""any JavaScript code requested by the web page.""" start="00:03:06.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Generally speaking, there are two camps on this issue.""" start="00:03:10.820" video="mainVideo-web" id="subtitle"]]
+[[!template text="""One side would say JavaScript is simply part of life,""" start="00:03:15.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and an integral part of the so-called modern web.""" start="00:03:19.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Just accept it, and there is no point in fighting it.""" start="00:03:22.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Indeed, it can be frustrating when greeted by""" start="00:03:25.300" video="mainVideo-web" id="subtitle"]]
+[[!template text="""&quot;This page requires JavaScript and cookies to continue,&quot;""" start="00:03:28.388" video="mainVideo-web" id="subtitle"]]
+[[!template text="""or even a blank page when opening a web page""" start="00:03:31.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""while disabling JavaScript.""" start="00:03:34.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""The other camp takes a more principled position""" start="00:03:38.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and says JavaScript is unnecessary.""" start="00:03:42.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I mean, people use the web mainly for""" start="00:03:44.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""database-like operations""" start="00:03:47.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to interact with data stored on other people's computers,""" start="00:03:48.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""like querying, creating, updating, deleting.""" start="00:03:51.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I mean, 99% of the things happen in getting data,""" start="00:03:55.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""including reading news, watching videos,""" start="00:03:58.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""downloading images, etc.,""" start="00:04:01.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and posting data, including publishing""" start="00:04:03.340" video="mainVideo-web" id="subtitle"]]
+[[!template text="""this sort of materials, publishing news comments, videos.""" start="00:04:06.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Why does this need any programs""" start="00:04:10.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to do funny computations, right?""" start="00:04:12.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Modern web browsers are also a pain to use.""" start="00:04:16.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""They are the opposite to Emacs""" start="00:04:19.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in terms of customization capabilities.""" start="00:04:21.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Such problems on the client side""" start="00:04:26.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""is the main focus of this talk.""" start="00:04:29.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""On the server side, the issue is known as SaaSS,""" start="00:04:31.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""service as a software substitute.""" start="00:04:34.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is about doing computing for users""" start="00:04:38.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""on other people's computers,""" start="00:04:42.421" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which the user has no visibility, let alone control.""" start="00:04:44.541" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Examples include translation or photo editing""" start="00:04:48.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in so-called web applications.""" start="00:04:51.941" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Another example would be web applications""" start="00:04:55.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""make recommendations based on user data""" start="00:04:59.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and suggest what the users read or watch next.""" start="00:05:02.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""On the one hand, SaaSS is an intractable problem""" start="00:05:05.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""because free software is all about user freedom""" start="00:05:09.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""on one's own computer,""" start="00:05:11.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""not someone else's computer.""" start="00:05:13.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""On the other hand, this is also a lesser problem""" start="00:05:16.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""because it has trivial solutions,""" start="00:05:18.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is self-hosting and keeping computations local.""" start="00:05:21.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Wouldn't it be nice to use a photo editing web application,""" start="00:05:25.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but without the web?""" start="00:05:28.680" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""Solutions outside of Emacs""" start="00:05:31.940" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""Right, now let's move on to solutions outside of Emacs""" start="00:05:31.940" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that tackle these problems.""" start="00:05:36.401" video="mainVideo-web" id="subtitle"]]
+[[!template text="""There are generally two ways to fix this issue.""" start="00:05:39.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""One is blocking non-free JavaScript,""" start="00:05:42.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and the other is substituting with free programs.""" start="00:05:45.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's start with blocking.""" start="00:05:48.980" video="mainVideo-web" id="subtitle"]]
+[[!template text="""LibreJS, for example, is a Firefox extension""" start="00:05:50.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""blocking non-free, non-trivial JavaScript.""" start="00:05:54.860" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It works by intercepting, filtering""" start="00:05:56.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""all requests for JavaScript,""" start="00:05:59.821" video="mainVideo-web" id="subtitle"]]
+[[!template text="""recognizing the ones that are trivial or free,""" start="00:06:01.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and blocking the execution of the others.""" start="00:06:05.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""As an experiment, I logged the LibreJS output""" start="00:06:11.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""for about two weeks,""" start="00:06:13.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and during which, of all the web pages I loaded,""" start="00:06:15.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""23 domains have at least some LibreJS-compliant scripts.""" start="00:06:19.740" video="mainVideo-web" id="subtitle"]]
+[[!template text="""That is not much, though I did use other means""" start="00:06:25.001" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to reduce the scenarios""" start="00:06:28.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""where I need to load web pages with JavaScript in Firefox,""" start="00:06:30.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""like using a text browser like Lynx.""" start="00:06:35.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Then there's also NoScript, which is like LibreJS,""" start="00:06:40.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but it blocks all scripts, whether free or non-free,
+trivial or non-trivial.""" start="00:06:44.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So the problem with blocking is that""" start="00:06:49.500" video="mainVideo-web" id="subtitle"]]
+[[!template text="""blocking with certain scripts and accepting others,""" start="00:06:54.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""there are like... I can think of two problems.""" start="00:06:57.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""One is that it does not help with Freedom 1,""" start="00:07:00.679" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is the freedom to allow users to modify a program""" start="00:07:02.879" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and use it in place of the original program.""" start="00:07:07.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And also it does not help""" start="00:07:13.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""when the non-free JavaScript is mandatory""" start="00:07:15.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""for the functioning of the web page.""" start="00:07:18.860" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, some pages are blank""" start="00:07:20.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""when non-free JavaScript is not executed.""" start="00:07:22.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So now let's move on to the substitution, the other method.""" start="00:07:27.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's start with userscript.""" start="00:07:36.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is a script, it is a user-specified JavaScript""" start="00:07:38.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""injected to a web page.""" start="00:07:41.761" video="mainVideo-web" id="subtitle"]]
+[[!template text="""A typical example of userscript tool is GreaseMonkey.""" start="00:07:43.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Another idea is a proxy that replaces scripts in place,""" start="00:07:48.481" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that is, sending user-specified scripts""" start="00:07:53.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as a response to requests for such scripts.""" start="00:07:55.919" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So one example would be Haketilo, however you pronounce it.""" start="00:08:00.900" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It's a tool that's built on top of mitmproxy.""" start="00:08:04.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is supposed to do this.""" start="00:08:09.620" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I haven't used GreaseMonkey nor Haketilo""" start="00:08:11.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""for these purposes yet,""" start="00:08:14.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so I can't say much about these options.""" start="00:08:16.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So then there are also free clients""" start="00:08:20.780" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which replace the whole frontend,""" start="00:08:24.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""instead of a script requested by web pages""" start="00:08:26.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""from the official web clients.""" start="00:08:30.661" video="mainVideo-web" id="subtitle"]]
+[[!template text="""People often refer to them as alternative frontend.""" start="00:08:32.500" video="mainVideo-web" id="subtitle"]]
+[[!template text="""YouTube is perhaps the best example""" start="00:08:37.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as there are so many free clients,""" start="00:08:39.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""including Invidious for the web,""" start="00:08:41.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""youtube-dl and yt-dlp on the command line,""" start="00:08:43.622" video="mainVideo-web" id="subtitle"]]
+[[!template text="""MPV and VLC as GUI desktop, LibreTube""" start="00:08:46.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and NewPipe for Android and so on.""" start="00:08:50.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Youtube-dl and yt-dlp are especially versatile""" start="00:08:53.260" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as they work with many video and audio sites""" start="00:08:56.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""with extractors written in Python,""" start="00:08:59.460" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so people can add extractors like extensions.""" start="00:09:02.620" video="mainVideo-web" id="subtitle"]]
+[[!template text="""A similar tool would be woob,""" start="00:09:06.300" video="mainVideo-web" id="subtitle"]]
+[[!template text="""short for web outside of the browsers.""" start="00:09:09.422" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is a command-line and GUI program""" start="00:09:12.740" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that interacts with many web services, even banks.""" start="00:09:16.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And there are browser extensions""" start="00:09:23.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that automatically redirect to these clients.""" start="00:09:25.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, Redirector and Libredirect""" start="00:09:28.860" video="mainVideo-web" id="subtitle"]]
+[[!template text="""redirect to the free web clients.""" start="00:09:31.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""One could use OpenWith, another extension,""" start="00:09:35.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to redirect to free non-web clients,""" start="00:09:39.700" video="mainVideo-web" id="subtitle"]]
+[[!template text="""for example by opening YouTube links with MPV.""" start="00:09:42.160" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""Emacs solutions""" start="00:09:46.480" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""Now let us move to Emacs-based solutions.""" start="00:09:46.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""They are based on the same ideas but using Emacs.""" start="00:09:51.000" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""Free clients in Emacs""" start="00:09:54.600" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""First, free clients in Emacs.""" start="00:09:54.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Basically alternative frontends written in Elisp.""" start="00:09:57.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""There are several advantages.""" start="00:10:00.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, integration with other Emacs tools,""" start="00:10:03.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""good for archiving, making use of Emacs libraries,""" start="00:10:06.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""extensibility, thanks to Emacs' own""" start="00:10:09.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""extensibility and customizability.""" start="00:10:12.489" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Examples include mastodon.el for mastodon,""" start="00:10:15.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""or mastorg for viewing and archiving toots with org,""" start="00:10:18.620" video="mainVideo-web" id="subtitle"]]
+[[!template text="""sx for Stack Exchange, buildbot.el for buildbot, etc.""" start="00:10:22.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Here's an example of mastorg displaying""" start="00:10:28.900" video="mainVideo-web" id="subtitle"]]
+[[!template text="""the hierarchy of a toot in org.""" start="00:10:31.901" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Just wait. Right.""" start="00:10:34.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So this is the toot itself, this is a first reply,""" start="00:10:39.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""this is a reply to the reply, and so on.""" start="00:10:44.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And here is an example of""" start="00:10:48.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""opening a Stack Exchange link using sx.""" start="00:10:53.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's check out the tag.""" start="00:11:05.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So we can browse the Stack Exchange Emacs site
+with ease.""" start="00:11:11.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""The idea is quite simple.""" start="00:11:28.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Just use APIs to get data and display it in Emacs,""" start="00:11:31.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""or just to scrape, like requesting HTML and processing it.""" start="00:11:35.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""An example of scraping is hnreader,""" start="00:11:40.820" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which scrapes Hacker News web pages""" start="00:11:44.180" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and renders them in Org buffers.""" start="00:11:47.299" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Here's how hnreader fetches""" start="00:11:49.780" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and displays the Hacker News front page.""" start="00:11:52.380" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And one could go into the comments,""" start="00:11:58.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which shows a similar hierarchy to mastorg's output.""" start="00:12:04.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And of course, there are limitations for this method,""" start="00:12:14.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is not limited to Emacs.""" start="00:12:19.001" video="mainVideo-web" id="subtitle"]]
+[[!template text="""There are basically limitations""" start="00:12:22.540" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to any ad hoc bespoke clients,""" start="00:12:24.522" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is catch-up games with remote server,""" start="00:12:28.420" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which may change the API interface endpoints""" start="00:12:31.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""or even structure of the responses.""" start="00:12:34.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""This brings us to web browsers in Emacs.""" start="00:12:37.540" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""Web browsers in Emacs""" start="00:12:43.021" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""Web browsers are universal clients""" start="00:12:43.021" video="mainVideo-web" id="subtitle"]]
+[[!template text="""because all sites support browsers.""" start="00:12:45.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So in a world of no JavaScript,""" start="00:12:47.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""there will be no need to write bespoke clients.""" start="00:12:48.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""In such a world,""" start="00:12:52.740" video="mainVideo-web" id="subtitle"]]
+[[!template text="""instead of using JavaScript code to fetch JSON,""" start="00:12:53.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""web developers make server do the heavy lifting""" start="00:12:56.740" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and just send the complete HTML over.""" start="00:13:00.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Okay, back to reality.""" start="00:13:02.860" video="mainVideo-web" id="subtitle"]]
+[[!template text="""EWW, the default Emacs browser,""" start="00:13:05.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""is what people refer to as a text browser,""" start="00:13:07.660" video="mainVideo-web" id="subtitle"]]
+[[!template text="""even though it is not text only and it supports images too.""" start="00:13:11.380" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is a good solid browser that supports forms, etc.""" start="00:13:16.900" video="mainVideo-web" id="subtitle"]]
+[[!template text="""The downside is that it does not support CSS,""" start="00:13:20.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so the formatting could be a bit ugly sometimes.""" start="00:13:24.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""There are some other browsers in Emacs too,""" start="00:13:28.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""like emacs-w3m, which is backed by w3m,""" start="00:13:30.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and Luwak, which is backed by Lynx.""" start="00:13:34.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Sorry for the naming, by the way.""" start="00:13:36.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""They often consist of a backend""" start="00:13:39.100" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that fetches URL and parses HTML.""" start="00:13:41.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, the built-in URL package""" start="00:13:44.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and the libxml2 binding in Emacs are decent enough.""" start="00:13:47.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And the frontend that renders the HTML,""" start="00:13:50.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""like shr or lynx, etc.""" start="00:13:53.189" video="mainVideo-web" id="subtitle"]]
+[[!template text="""There is also an xwidget-webkit,""" start="00:13:56.699" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but this browser executes JavaScript,""" start="00:14:04.740" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so it does not really help in this case.""" start="00:14:07.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Browser extensions on Emacs are effortless,""" start="00:14:10.540" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as they can be written as Emacs packages.""" start="00:14:14.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, one could easily write""" start="00:14:17.460" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Elisp scripts with similar functionalities""" start="00:14:19.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to libredirect and openwith""" start="00:14:21.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to redirect links, to rewrite URLs,""" start="00:14:24.922" video="mainVideo-web" id="subtitle"]]
+[[!template text="""or to open, say, a YouTube URL with MPV,""" start="00:14:30.181" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but with even more flexibility.""" start="00:14:37.061" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, here's how one could""" start="00:14:39.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""transform a Zoom link to a dial-in number""" start="00:14:41.780" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so that it is easier to join a Zoom meeting""" start="00:14:44.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""without running non-free JavaScript.""" start="00:14:47.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""This might still be bad for privacy,""" start="00:14:50.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but at least it's good for freedom.""" start="00:14:53.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""As mentioned before,""" start="00:14:58.699" video="mainVideo-web" id="subtitle"]]
+[[!template text="""one shortcoming of these Emacs-based browsers,""" start="00:15:00.379" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Emacs web browsers, is no support for CSS,""" start="00:15:03.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so the formatting could leave a lot to be desired.""" start="00:15:08.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Maybe someone would write""" start="00:15:11.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""an Emacs browser package backed by wkhtmltopdf,""" start="00:15:12.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which, when opening a URL,""" start="00:15:17.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""it calls wkhtmltopdf to convert the web page to PDF""" start="00:15:20.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and opens in, say, pdf-view-mode of the pdf-tools,""" start="00:15:26.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""thus containing formatting,""" start="00:15:29.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and all the URL clicks resolve to the same actions.""" start="00:15:31.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Also, wkhtmltopdf contains a flag that disables JavaScript.""" start="00:15:34.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Another idea would be to use Firefox""" start="00:15:43.300" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as a processor to fetch URLs.""" start="00:15:45.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Maybe it can be used to pass back the HTML""" start="00:15:50.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""after executing free JavaScript,""" start="00:15:54.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""say, if Firefox has LibreJS installed.""" start="00:15:56.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""This requires Firefox to send back the DOM,""" start="00:16:01.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which could be achieved using native messaging.""" start="00:16:05.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""More on that later.""" start="00:16:08.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Alternatively, one could also write a Firefox extension""" start="00:16:09.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that sends the DOM in an existing tab back to Emacs.""" start="00:16:14.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""But thinking more about it,""" start="00:16:17.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I don't think this is actually a useful idea,""" start="00:16:20.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""because most of the sites that work under LibreJS""" start="00:16:23.059" video="mainVideo-web" id="subtitle"]]
+[[!template text="""also are useful when all JavaScript is blocked.""" start="00:16:27.139" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So, this means these sites are viewable""" start="00:16:34.420" video="mainVideo-web" id="subtitle"]]
+[[!template text="""under EWW, Luwak, etc.""" start="00:16:37.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And another issue is that""" start="00:16:42.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""this could also make running non-free JavaScript easier,""" start="00:16:43.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is harmful to user freedom.""" start="00:16:46.560" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""emacs-web-server - overview""" start="00:16:52.380" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""OK, let's move on to the idea""" start="00:16:52.380" video="mainVideo-web" id="subtitle"]]
+[[!template text="""of running Emacs as a web server,""" start="00:16:54.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so that Emacs client packages are web apps""" start="00:16:55.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""serving as alternative frontends.""" start="00:16:58.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Why would we want to do this?""" start="00:17:00.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Well, as much as one wants to be always in Emacs,""" start="00:17:02.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""it is not always feasible.""" start="00:17:06.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, one may be on the go""" start="00:17:08.340" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and needs to look up something on the phone.""" start="00:17:10.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""On the other hand, Emacs client packages""" start="00:17:12.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""are just alternative frontends""" start="00:17:14.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but written in Elisp and run in Emacs.""" start="00:17:16.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""With the help of emacs-web-server package,""" start="00:17:18.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""we can access Emacs packages on the web.""" start="00:17:20.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""emacs-web-server package is not something new,""" start="00:17:23.580" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but seems to be underused in the community somehow.""" start="00:17:26.440" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""emacs-web-server - hello emacs!""" start="00:17:30.380" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""OK, let's start with a simple example called hello-emacs.""" start="00:17:30.380" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is pretty straightforward.""" start="00:17:33.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Just require the web server feature""" start="00:17:35.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and run ws-start to start a server process""" start="00:17:38.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and send the string &quot;hello emacs&quot;""" start="00:17:41.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to the process regardless of the request.""" start="00:17:43.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""As you can see, it is going to be available""" start="00:17:45.540" video="mainVideo-web" id="subtitle"]]
+[[!template text="""at port 9000 of localhost.""" start="00:17:48.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's try it out.""" start="00:17:51.319" video="mainVideo-web" id="subtitle"]]
+[[!template text="""We need to first evaluate this code block.""" start="00:17:53.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And it works.""" start="00:18:01.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""To stop a server, just run ws-stop on the web server object.""" start="00:18:03.940" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's evaluate.""" start="00:18:10.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Yep, it stopped.""" start="00:18:14.960" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""emacs-web-server - yolo""" start="00:18:17.580" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""OK, now let's move on to something funny""" start="00:18:17.580" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that you should never run on the public web.""" start="00:18:20.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I call it yolo.el.""" start="00:18:22.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It uses htmlize""" start="00:18:23.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to make any Emacs buffer available on the web.""" start="00:18:25.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's try it out.""" start="00:18:28.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Just require the thing and start the server by yolo-start.""" start="00:18:29.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And it's available at port 9999.""" start="00:18:33.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""By default, the root domain shows the splash screen""" start="00:18:38.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which needs to be available.""" start="00:18:41.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Running display-splash-screen ensures that,""" start="00:18:42.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but here I've already run it.""" start="00:18:47.219" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So let's have a look.""" start="00:18:48.939" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And here we have the splash screen.""" start="00:18:54.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Emacs tutorial and such.""" start="00:18:56.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Unfortunately, none of these links work,""" start="00:19:00.240" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is something we will revisit later.""" start="00:19:05.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So, to show an arbitrary buffer,""" start="00:19:10.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""just use the buffer name as a path.""" start="00:19:15.481" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, the slide has the buffer named web.org,""" start="00:19:20.081" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so we can display it.""" start="00:19:24.861" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's try something fancier,""" start="00:19:34.581" video="mainVideo-web" id="subtitle"]]
+[[!template text="""like the man page of ffmpeg.""" start="00:19:36.941" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So this is the man page of ffmpeg.""" start="00:19:40.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And the buffer name is a bit more complicated.""" start="00:19:45.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I have the URL available here.""" start="00:19:48.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It's missing a star.""" start="00:19:59.140" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It's pretty neat if you ask me.""" start="00:20:05.980" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And, yeah, what else?""" start="00:20:12.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Well, we can also browse EWW in Firefox.""" start="00:20:14.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, let's check out gnu.org,""" start="00:20:22.700" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and note that the buffer name is EWW with stars.""" start="00:20:30.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So, ah, it works.""" start="00:20:39.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And it has all the graphics even.""" start="00:20:41.979" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Now, how about we do it the other way around?""" start="00:20:50.900" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So we load the current slide web.org using this funny thing.""" start="00:20:55.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And it works.""" start="00:21:10.780" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Not as nice as the Org buffer, though.""" start="00:21:14.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Right, and now that gives me some funny idea.""" start="00:21:19.940" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So I'm a firm believer that memes are meant to be enjoyed""" start="00:21:27.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in silence rather than read out loud.""" start="00:21:31.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So I will jump straight to trying this idea,""" start="00:21:33.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is loading the EWW buffer URL with EWW itself.""" start="00:21:38.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Loading, loading, loading.""" start="00:21:49.860" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Spoiler alert, it never loads.""" start="00:21:53.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So that concludes the demo.""" start="00:21:59.100" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And so we can stop the server, web server, with `yolo-stop`.""" start="00:22:03.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So one could extend yolo to serve arbitrary Emacs commands,""" start="00:22:06.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""making it even more dangerous.""" start="00:22:13.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""That is, for example, `localhost:9000/m-x/magit-status`""" start="00:22:15.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""would run `magit-status`""" start="00:22:26.119" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and show the magit-status buffer in the web browser.""" start="00:22:27.820" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Or localhost:9000/m-x/eww/""" start="00:22:34.500" video="mainVideo-web" id="subtitle"]]
+[[!template text="""any arbitrary URL to browse arbitrary URL""" start="00:22:43.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""with EWW inside of Firefox.""" start="00:22:46.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It can serve as a way to block all JavaScript,""" start="00:22:50.820" video="mainVideo-web" id="subtitle"]]
+[[!template text="""because EWW does not support JavaScript.""" start="00:22:53.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And enforce preferred colorscheme in Firefox,""" start="00:22:56.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""since htmlize, as you have noticed,""" start="00:23:00.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""faithfully reflects the theme used in Emacs.""" start="00:23:02.840" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""emacs-web-server - emacs web framework""" start="00:23:07.940" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""Okay, so we know that yolo is unsafe""" start="00:23:07.940" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and needs to be refined.""" start="00:23:10.339" video="mainVideo-web" id="subtitle"]]
+[[!template text="""In fact, we don't necessarily want""" start="00:23:11.540" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to run Emacs on a web browser.""" start="00:23:13.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""After all, a modern web browser is""" start="00:23:15.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""something one has to fight all the time""" start="00:23:17.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and should be avoided whenever possible.""" start="00:23:19.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""We want to instead be able to access things""" start="00:23:21.601" video="mainVideo-web" id="subtitle"]]
+[[!template text="""when forced to be in a web browser,""" start="00:23:24.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in which case only the motivations""" start="00:23:26.460" video="mainVideo-web" id="subtitle"]]
+[[!template text="""of an alternative frontend apply.""" start="00:23:28.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Moreover, the ideal situation is an Emacs web framework,""" start="00:23:31.300" video="mainVideo-web" id="subtitle"]]
+[[!template text="""a tool that automatically""" start="00:23:35.460" video="mainVideo-web" id="subtitle"]]
+[[!template text="""transforms Emacs packages to web apps,""" start="00:23:36.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so that one does not need to write extra code""" start="00:23:39.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to get a web app that does the same thing as the package.""" start="00:23:41.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""We also need all links in the web pages to work.""" start="00:23:45.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""As noted before, the links on the yolo Emacs splash screen""" start="00:23:49.100" video="mainVideo-web" id="subtitle"]]
+[[!template text="""do not work.""" start="00:23:52.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So here's a proof-of-concept example. It's called bom.el.""" start="00:23:53.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It gets some weather forecast data""" start="00:23:58.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""from the Australian Bureau of Meteorology""" start="00:24:00.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and displays it in an org buffer.""" start="00:24:03.080" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So let's try it out. One could do `M-x bom`,""" start="00:24:05.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which shows an org buffer with links to each state.""" start="00:24:09.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So based in Melbourne, naturally,""" start="00:24:15.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I would like to find out the weather of Victoria.""" start="00:24:17.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And yes, to execute this command. Wait, wait, wait. Right.""" start="00:24:21.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And we are at a buffer that shows""" start="00:24:27.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""the weather forecast of the whole of Victoria""" start="00:24:33.460" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in the hierarchy. Note that this back button""" start="00:24:36.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""takes you to the previous page.""" start="00:24:39.479" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So here are the regions of Victoria.""" start="00:24:46.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I think Melbourne is in Central.""" start="00:24:47.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And yeah, it shows""" start="00:24:53.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""the seven-day weather forecast of Melbourne.""" start="00:24:54.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""You can also reach this page by running,""" start="00:24:57.260" video="mainVideo-web" id="subtitle"]]
+[[!template text="""let's see, directly `M-x bom-state`.""" start="00:25:00.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Vic.""" start="00:25:08.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""OK. So this works.""" start="00:25:13.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And this is bom as an Emacs package.""" start="00:25:18.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Now let's check out bom as a web app""" start="00:25:21.380" video="mainVideo-web" id="subtitle"]]
+[[!template text="""transformed by Emacs web framework.""" start="00:25:23.981" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So start the web server with bom-start.""" start="00:25:28.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And let's try it out. It's at 9000 again.""" start="00:25:33.020" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Oops. Invalid path. Oh, that's because""" start="00:25:39.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""it makes exactly one command to one path.""" start="00:25:42.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So remember that we used the bom command""" start="00:25:46.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to show the landing page.""" start="00:25:49.301" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So here we need the bom in the path as well.""" start="00:25:50.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And it shows the same landing page, except in HTML.""" start="00:25:54.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Let's check out Victoria weather forecast as before.""" start="00:26:00.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And it shows an HTML converted from the org buffer""" start="00:26:07.260" video="mainVideo-web" id="subtitle"]]
+[[!template text="""using ox export HTML, whatever.""" start="00:26:12.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And you can see even the back button is here.""" start="00:26:17.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""That takes you to /bom.""" start="00:26:20.359" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So let's have a look at Melbourne. Here it is.""" start="00:26:26.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Hooray, it works.""" start="00:26:29.140" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So, yeah, as usual,""" start="00:26:31.380" video="mainVideo-web" id="subtitle"]]
+[[!template text="""you can stop the web server with `M-x bom-stop`.""" start="00:26:33.960" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Right. And alternatively,""" start="00:26:40.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""it can also be deployed directly in terminal""" start="00:26:43.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""in a dedicated Emacs daemon.""" start="00:26:48.500" video="mainVideo-web" id="subtitle"]]
+[[!template text="""So you can see that there's a one-one correspondence""" start="00:26:56.100" video="mainVideo-web" id="subtitle"]]
+[[!template text="""between the Emacs package interface and the web interface.""" start="00:26:58.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""And that implies some restrictions to the Emacs package""" start="00:27:03.100" video="mainVideo-web" id="subtitle"]]
+[[!template text="""for the Emacs web framework to be able to do its job. Right.""" start="00:27:06.040" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, the package needs to have an Org interface""" start="00:27:09.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and the links that trigger other commands""" start="00:27:13.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""need to be in Elisp links""" start="00:27:15.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""so that the Emacs web framework""" start="00:27:17.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""can translate it to web server URL path.""" start="00:27:20.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Note that Emacs web server framework is not a real package.""" start="00:27:24.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I wrote some functions in bom.el serving the purpose,""" start="00:27:28.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and they should be separated out eventually""" start="00:27:33.340" video="mainVideo-web" id="subtitle"]]
+[[!template text="""without much trouble.""" start="00:27:35.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""One could get weather forecast""" start="00:27:37.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""without running JavaScript anyway,""" start="00:27:40.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which makes bom.el less important""" start="00:27:42.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""as an alternative web client.""" start="00:27:45.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Though it does provide, dare I say,""" start="00:27:48.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""a clean and minimal interface""" start="00:27:50.520" video="mainVideo-web" id="subtitle"]]
+[[!template text="""compared to common weather forecast web pages.""" start="00:27:52.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Other more relevant use cases could be Mastodon,""" start="00:27:55.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""whose official web client requires JavaScript""" start="00:27:58.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to display a post.""" start="00:28:01.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""The mastorg package that shows an Org hierarchy of toots""" start="00:28:03.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""rooted as a given toot could be a low-hanging fruit.""" start="00:28:08.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""The limitation of Org interface requirements""" start="00:28:12.179" video="mainVideo-web" id="subtitle"]]
+[[!template text="""can also be relaxed in further work,""" start="00:28:15.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""if one could extend Emacs web framework""" start="00:28:17.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to translate back and forth between Emacs widgets,""" start="00:28:21.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""say, including buttons and web page widgets,""" start="00:28:24.200" video="mainVideo-web" id="subtitle"]]
+[[!template text="""including links.""" start="00:28:28.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Another more far-fetched idea would be""" start="00:28:30.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to translate to other types of interfaces,""" start="00:28:32.600" video="mainVideo-web" id="subtitle"]]
+[[!template text="""like GNU/Linux or Android GUI.""" start="00:28:35.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""How about animations? Say, M-x butterfly,""" start="00:28:44.020" video="mainVideo-web" id="subtitle"]]
+[[!template text="""or even web games from Emacs games?""" start="00:28:47.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Possibilities are unlimited in this, as always, in Emacs.""" start="00:28:54.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I also noticed some limitations""" start="00:29:00.100" video="mainVideo-web" id="subtitle"]]
+[[!template text="""when trying to actually host bom.el on the public web.""" start="00:29:03.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Given the limited access to the Emacs server,""" start="00:29:07.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I was comfortable enough to give bom.el a go""" start="00:29:13.540" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to serve it on the public web.""" start="00:29:16.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""However, I immediately stopped""" start="00:29:18.800" video="mainVideo-web" id="subtitle"]]
+[[!template text="""after noticing how slow it is.""" start="00:29:20.560" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It can take more than 30 seconds""" start="00:29:22.880" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to load a page of weather forecast for a state.""" start="00:29:24.720" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I am also not sure how many simultaneous connections""" start="00:29:27.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""it can handle.""" start="00:29:31.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""In any case, I think the package emacs-web-server""" start="00:29:32.380" video="mainVideo-web" id="subtitle"]]
+[[!template text="""could do with some performance enhancement.""" start="00:29:36.440" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""Firefox with emacs for extensions""" start="00:29:40.420" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""Right. Because of the time constraints,""" start="00:29:40.420" video="mainVideo-web" id="subtitle"]]
+[[!template text="""I will briefly touch one final idea,""" start="00:29:44.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which is to use Emacs as a Firefox browser extension.""" start="00:29:45.760" video="mainVideo-web" id="subtitle"]]
+[[!template text="""We already have org-protocol,""" start="00:29:50.420" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which allows Firefox to communicate""" start="00:29:52.900" video="mainVideo-web" id="subtitle"]]
+[[!template text="""with a running Emacs server""" start="00:29:54.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""by sending an org-protocol URL to the latter.""" start="00:29:55.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It can be used not just for capturing or storing links,""" start="00:29:59.780" video="mainVideo-web" id="subtitle"]]
+[[!template text="""but to execute arbitrary code on any component of the URL.""" start="00:30:03.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""However, it is fire and forget,""" start="00:30:10.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""and Emacs cannot tell Firefox what to do.""" start="00:30:11.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""There may be a length restriction, too.""" start="00:30:16.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""For example, Firefox may not be able to send back""" start="00:30:17.920" video="mainVideo-web" id="subtitle"]]
+[[!template text="""the whole DOM.""" start="00:30:20.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""This claim needs to be verified, though.""" start="00:30:22.420" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Native messaging is one solution to this problem.""" start="00:30:26.220" video="mainVideo-web" id="subtitle"]]
+[[!template text="""It is a two-way communication channel""" start="00:30:30.020" video="mainVideo-web" id="subtitle"]]
+[[!template text="""between a Firefox web extension and a local system process""" start="00:30:31.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""started by the web extension.""" start="00:30:35.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""The process could be an Emacs server,""" start="00:30:37.840" video="mainVideo-web" id="subtitle"]]
+[[!template text="""which would make Emacs effectively""" start="00:30:40.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""a Firefox web browser extension.""" start="00:30:42.400" video="mainVideo-web" id="subtitle"]]
+[[!template text="""In this case, Elisp would be the main extension language,""" start="00:30:48.680" video="mainVideo-web" id="subtitle"]]
+[[!template text="""rather than JavaScript.""" start="00:30:52.000" video="mainVideo-web" id="subtitle"]]
+[[!template text="""However, JavaScript is still needed at the Firefox end""" start="00:30:53.620" video="mainVideo-web" id="subtitle"]]
+[[!template text="""of the communication channel.""" start="00:30:56.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""As a simple example of this idea,""" start="00:30:59.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Firefox could ask Emacs to redirect a URL""" start="00:31:01.160" video="mainVideo-web" id="subtitle"]]
+[[!template text="""by removing tracking and using alternative frontend, etc.""" start="00:31:04.440" video="mainVideo-web" id="subtitle"]]
+[[!template text="""However, I was not able to implement this""" start="00:31:08.320" video="mainVideo-web" id="subtitle"]]
+[[!template text="""due to some tricky business""" start="00:31:12.480" video="mainVideo-web" id="subtitle"]]
+[[!template text="""with enforcing synchronicity""" start="00:31:14.280" video="mainVideo-web" id="subtitle"]]
+[[!template text="""that allows the web extension""" start="00:31:15.640" video="mainVideo-web" id="subtitle"]]
+[[!template text="""to wait for responses from Emacs.""" start="00:31:17.120" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Some further work, I suppose.""" start="00:31:20.200" video="mainVideo-web" id="subtitle"]]
+
+[[!template new="1" text="""Thank you""" start="00:31:25.360" video="mainVideo-web" id="subtitle"]]
+
+[[!template text="""That concludes my talk.""" start="00:31:25.360" video="mainVideo-web" id="subtitle"]]
+[[!template text="""Thank you for your attention.""" start="00:31:28.254" video="mainVideo-web" id="subtitle"]]
+
+
+
+Captioner: ken
+
+<a name="web-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: 2 seconds. And I think we are live.""" start="00:00:04.740" video="qanda-web" id="subtitle"]]
+[[!template text="""Hi Yuchen, how are you doing?""" start="00:00:05.980" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm gonna just walk off.""" start="00:00:08.720" video="qanda-web" id="subtitle"]]
+[[!template text="""I'm not sure if I... Yeah,""" start="00:00:10.840" video="qanda-web" id="subtitle"]]
+[[!template text="""I mean, brain not working well at this""" start="00:00:13.440" video="qanda-web" id="subtitle"]]
+[[!template text="""moment. How about you?""" start="00:00:14.660" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Well, mine is about to get fried because""" start="00:00:18.420" video="qanda-web" id="subtitle"]]
+[[!template text="""EmacsConf is a very taxing process and I can""" start="00:00:21.040" video="qanda-web" id="subtitle"]]
+[[!template text="""tell you we could have a race to know who's""" start="00:00:24.599" video="qanda-web" id="subtitle"]]
+[[!template text="""more more tired right now between you and""" start="00:00:26.720" video="qanda-web" id="subtitle"]]
+[[!template text="""myself but I guess we'll find out at the end""" start="00:00:29.480" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: All right, sounds good.""" start="00:00:32.080" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: of the Q&A. And thank you for...""" start="00:00:34.200" video="qanda-web" id="subtitle"]]
+[[!template text="""How late or how early I should say is it for""" start="00:00:37.760" video="qanda-web" id="subtitle"]]
+[[!template text="""you right now? It should be like 6am or""" start="00:00:39.480" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thanks. It's 7.45 but I normally get up at""" start="00:00:43.860" video="qanda-web" id="subtitle"]]
+[[!template text="""like 8.30 or something.""" start="00:00:45.020" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: something? Right, okay.""" start="00:00:46.560" video="qanda-web" id="subtitle"]]
+[[!template text="""Well, anyway, thank you for the sacrifice""" start="00:00:48.380" video="qanda-web" id="subtitle"]]
+[[!template text="""just to answer some of the questions.""" start="00:00:50.200" video="qanda-web" id="subtitle"]]
+[[!template text="""All right, so I'll be displaying the""" start="00:00:56.160" video="qanda-web" id="subtitle"]]
+[[!template text="""questions. I'll be, let me just maximize this""" start="00:00:59.180" video="qanda-web" id="subtitle"]]
+[[!template text="""on the stream so that people can read""" start="00:01:01.440" video="qanda-web" id="subtitle"]]
+[[!template text="""everything on my screen.""" start="00:01:02.280" video="qanda-web" id="subtitle"]]
+[[!template text="""So what I'm going to do,""" start="00:01:03.400" video="qanda-web" id="subtitle"]]
+[[!template text="""Yuchen, as usual, I'm going to start reading""" start="00:01:05.340" video="qanda-web" id="subtitle"]]
+[[!template text="""the questions on the pad.""" start="00:01:06.540" video="qanda-web" id="subtitle"]]
+[[!template text="""I'm going to ask Sasha to open the Q&A.""" start="00:01:12.160" video="qanda-web" id="subtitle"]]
+[[!template text="""Yes, it's already open.""" start="00:01:13.620" video="qanda-web" id="subtitle"]]
+[[!template text="""Cool. So if you want to join us,""" start="00:01:15.280" video="qanda-web" id="subtitle"]]
+[[!template text="""people, Feel free to click on the link on the""" start="00:01:19.360" video="qanda-web" id="subtitle"]]
+[[!template text="""talk or on IRC to join us on BBB and to ask""" start="00:01:21.820" video="qanda-web" id="subtitle"]]
+[[!template text="""your questions. Otherwise just leave them on""" start="00:01:23.440" video="qanda-web" id="subtitle"]]
+[[!template text="""the pad. Alright, Yuchen,""" start="00:01:24.320" video="qanda-web" id="subtitle"]]
+[[!template text="""starting with the first question.""" start="00:01:25.440" video="qanda-web" id="subtitle"]]
+[[!template text="""I like the idea of using org-mode to display""" start="00:01:28.260" video="qanda-web" id="subtitle"]]
+[[!template text="""data from the web. Are there many different""" start="00:01:30.300" video="qanda-web" id="subtitle"]]
+[[!template text="""packages that do not, I assume.""" start="00:01:33.220" video="qanda-web" id="subtitle"]]
+[[!template text="""I'm new to Emacs, so maybe this is obvious to""" start="00:01:35.560" video="qanda-web" id="subtitle"]]
+[[!template text="""everyone else.""" start="00:01:36.040" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I think so. I mean...""" start="00:01:43.860" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Yeah, I think it's a little complicated to""" start="00:01:49.240" video="qanda-web" id="subtitle"]]
+[[!template text="""specify what is it to display data from the""" start="00:01:51.480" video="qanda-web" id="subtitle"]]
+[[!template text="""web. Just reading it like this,""" start="00:01:53.360" video="qanda-web" id="subtitle"]]
+[[!template text="""I'm reminded of Adam, Arthur Pappa,""" start="00:01:55.900" video="qanda-web" id="subtitle"]]
+[[!template text="""I mean, Code All Capture Web,""" start="00:01:58.260" video="qanda-web" id="subtitle"]]
+[[!template text="""which technically captures the web and allows""" start="00:02:00.860" video="qanda-web" id="subtitle"]]
+[[!template text="""you to embed it in the page,""" start="00:02:02.120" video="qanda-web" id="subtitle"]]
+[[!template text="""but is it really displaying data from the""" start="00:02:04.280" video="qanda-web" id="subtitle"]]
+[[!template text="""web? Are we implying live transmission?""" start="00:02:06.340" video="qanda-web" id="subtitle"]]
+[[!template text="""Do you see what I'm talking about?""" start="00:02:07.720" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I suspect the question is asking,""" start="00:02:10.680" video="qanda-web" id="subtitle"]]
+[[!template text="""like, having Emacs as a client that's sort of""" start="00:02:17.040" video="qanda-web" id="subtitle"]]
+[[!template text="""getting data from the web and then displays""" start="00:02:19.740" video="qanda-web" id="subtitle"]]
+[[!template text="""in Emacs, like using API or using web script.""" start="00:02:25.120" video="qanda-web" id="subtitle"]]
+[[!template text="""So yeah, like the hreader package or a few""" start="00:02:35.220" video="qanda-web" id="subtitle"]]
+[[!template text="""packages mentioned in my talk.""" start="00:02:37.580" video="qanda-web" id="subtitle"]]
+[[!template text="""Yeah, that's a good question.""" start="00:02:39.920" video="qanda-web" id="subtitle"]]
+[[!template text="""I mean, I really don't know how many.""" start="00:02:46.220" video="qanda-web" id="subtitle"]]
+[[!template text="""So from my experience,""" start="00:02:48.060" video="qanda-web" id="subtitle"]]
+[[!template text="""maybe I use like 10, less than 10 packages""" start="00:02:55.960" video="qanda-web" id="subtitle"]]
+[[!template text="""that do these things. And among these""" start="00:03:01.220" video="qanda-web" id="subtitle"]]
+[[!template text="""packages, maybe it's half of them are org,""" start="00:03:03.840" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: So you mean half of them are org-based?""" start="00:03:09.480" video="qanda-web" id="subtitle"]]
+[[!template text="""Is that what you said?""" start="00:03:10.840" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: half of them don't. Yeah,""" start="00:03:11.840" video="qanda-web" id="subtitle"]]
+[[!template text="""but that's just based on the packages I use.""" start="00:03:16.920" video="qanda-web" id="subtitle"]]
+[[!template text="""I haven't done a survey about this.""" start="00:03:22.440" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: I think it's okay, you don't need to have all""" start="00:03:25.520" video="qanda-web" id="subtitle"]]
+[[!template text="""the answers. I mean, you already demonstrate""" start="00:03:26.880" video="qanda-web" id="subtitle"]]
+[[!template text="""a lot of competence and you talk about all""" start="00:03:29.380" video="qanda-web" id="subtitle"]]
+[[!template text="""the things you approach with your particular""" start="00:03:31.100" video="qanda-web" id="subtitle"]]
+[[!template text="""setup, So you don't need to have all the""" start="00:03:33.040" video="qanda-web" id="subtitle"]]
+[[!template text="""answers. Okay. All right,""" start="00:03:36.040" video="qanda-web" id="subtitle"]]
+[[!template text="""moving on to the next question.""" start="00:03:37.160" video="qanda-web" id="subtitle"]]
+[[!template text="""Have you tried EAF, i.e.""" start="00:03:39.340" video="qanda-web" id="subtitle"]]
+[[!template text="""The Emacs application framework and its""" start="00:03:41.680" video="qanda-web" id="subtitle"]]
+[[!template text="""browser? If yes, what is your opinion about""" start="00:03:43.940" video="qanda-web" id="subtitle"]]
+[[!template text="""it?""" start="00:03:44.120" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Oh, I haven't tried it.""" start="00:03:47.520" video="qanda-web" id="subtitle"]]
+[[!template text="""I try to remember why I haven't tried it.""" start="00:03:53.760" video="qanda-web" id="subtitle"]]
+[[!template text="""It has a browser. I assume the browser""" start="00:04:03.520" video="qanda-web" id="subtitle"]]
+[[!template text="""executes JavaScript by default.""" start="00:04:06.840" video="qanda-web" id="subtitle"]]
+[[!template text="""I have to check. Emacs.daf""" start="00:04:12.320" video="qanda-web" id="subtitle"]]
+[[!template text="""slash daf browser.""" start="00:04:15.820" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: It's also OK if you want to have a look later""" start="00:04:25.520" video="qanda-web" id="subtitle"]]
+[[!template text="""and you know whenever you want to report to""" start="00:04:27.380" video="qanda-web" id="subtitle"]]
+[[!template text="""the pad you know you write a little blurb""" start="00:04:28.940" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah sure yeah so yeah I know about EAF but I""" start="00:04:34.700" video="qanda-web" id="subtitle"]]
+[[!template text="""haven't tried it.""" start="00:04:35.460" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: about it. Okay well that's already an answer""" start="00:04:38.060" video="qanda-web" id="subtitle"]]
+[[!template text="""that's cool. We're gonna move on to a""" start="00:04:41.400" video="qanda-web" id="subtitle"]]
+[[!template text="""question that is a little bit off topic,""" start="00:04:42.720" video="qanda-web" id="subtitle"]]
+[[!template text="""but I've also been interested about your""" start="00:04:44.700" video="qanda-web" id="subtitle"]]
+[[!template text="""nickname on IRC. This is not really relevant""" start="00:04:47.420" video="qanda-web" id="subtitle"]]
+[[!template text="""to the talk, quoting the question,""" start="00:04:48.900" video="qanda-web" id="subtitle"]]
+[[!template text="""but I'm curious about your nickname.""" start="00:04:50.400" video="qanda-web" id="subtitle"]]
+[[!template text="""You have some connection to Norway.""" start="00:04:52.020" video="qanda-web" id="subtitle"]]
+[[!template text="""Your nick indicates an interest in the""" start="00:04:54.480" video="qanda-web" id="subtitle"]]
+[[!template text="""architectural style inspired by the""" start="00:04:56.040" video="qanda-web" id="subtitle"]]
+[[!template text="""decoration on Viking ships that was popular""" start="00:04:58.280" video="qanda-web" id="subtitle"]]
+[[!template text="""in the early 20th century because""" start="00:05:00.460" video="qanda-web" id="subtitle"]]
+[[!template text="""Dragonsteel, I assume in Norwegian,""" start="00:05:01.880" video="qanda-web" id="subtitle"]]
+[[!template text="""is Dragon style. Are you familiar with this?""" start="00:05:04.860" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, it's just my favorite architecture""" start="00:05:10.760" video="qanda-web" id="subtitle"]]
+[[!template text="""style, I think. I mean,""" start="00:05:15.560" video="qanda-web" id="subtitle"]]
+[[!template text="""I lived in Sweden for like 2,""" start="00:05:19.040" video="qanda-web" id="subtitle"]]
+[[!template text="""1 half years and yeah I went to Norway once""" start="00:05:25.900" video="qanda-web" id="subtitle"]]
+[[!template text="""and I saw like this church in Lofoten Island,""" start="00:05:32.520" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 0]: was amazing. In Luton Island,""" start="00:05:36.766" video="qanda-web" id="subtitle"]]
+[[!template text="""on Luton Island. Right.""" start="00:05:36.820" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: on Lofoten Island. Yeah it Yeah,""" start="00:05:36.833" video="qanda-web" id="subtitle"]]
+[[!template text="""it was amazing. So, yeah,""" start="00:05:40.280" video="qanda-web" id="subtitle"]]
+[[!template text="""that's exactly why I chose that as my""" start="00:05:43.780" video="qanda-web" id="subtitle"]]
+[[!template text="""nickname, because it's my favorite""" start="00:05:46.520" video="qanda-web" id="subtitle"]]
+[[!template text="""architecture style.""" start="00:05:47.540" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Okay, well, that was a very astute remark by""" start="00:05:51.940" video="qanda-web" id="subtitle"]]
+[[!template text="""the viewers, so I hope you feel validated in""" start="00:05:54.760" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 0]: assumptions. Moving on""" start="00:05:58.480" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: your to another question.""" start="00:05:58.980" video="qanda-web" id="subtitle"]]
+[[!template text="""Yuchen, do you have any thoughts about Nixed,""" start="00:06:01.960" video="qanda-web" id="subtitle"]]
+[[!template text="""about its name, its approach,""" start="00:06:03.880" video="qanda-web" id="subtitle"]]
+[[!template text="""its relevance? About Nixed,""" start="00:06:08.560" video="qanda-web" id="subtitle"]]
+[[!template text="""the browser, N-Y-X-T. Oh,""" start="00:06:11.500" video="qanda-web" id="subtitle"]]
+[[!template text="""Nixed.""" start="00:06:11.720" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: About what? Yeah, I have tried it.""" start="00:06:17.220" video="qanda-web" id="subtitle"]]
+[[!template text="""Well, I mean, it's not Emacs.""" start="00:06:21.360" video="qanda-web" id="subtitle"]]
+[[!template text="""It's kind of similar. I think it tries to do""" start="00:06:26.140" video="qanda-web" id="subtitle"]]
+[[!template text="""something similar to Emacs,""" start="00:06:27.440" video="qanda-web" id="subtitle"]]
+[[!template text="""but The problem with Nix is that very early""" start="00:06:33.860" video="qanda-web" id="subtitle"]]
+[[!template text="""on I encountered an issue with keybinding.""" start="00:06:37.180" video="qanda-web" id="subtitle"]]
+[[!template text="""So the first thing I want to do is to make""" start="00:06:43.040" video="qanda-web" id="subtitle"]]
+[[!template text="""all its keybindings emax-y.""" start="00:06:44.300" video="qanda-web" id="subtitle"]]
+[[!template text="""So that's obviously...""" start="00:06:46.920" video="qanda-web" id="subtitle"]]
+[[!template text="""So what was the problem?""" start="00:06:51.200" video="qanda-web" id="subtitle"]]
+[[!template text="""So yeah, I couldn't even do that.""" start="00:06:53.040" video="qanda-web" id="subtitle"]]
+[[!template text="""I thought, I was expecting that it could...""" start="00:06:56.120" video="qanda-web" id="subtitle"]]
+[[!template text="""There shouldn't be any issues with setting up""" start="00:07:02.660" video="qanda-web" id="subtitle"]]
+[[!template text="""whatever key binding you want.""" start="00:07:03.960" video="qanda-web" id="subtitle"]]
+[[!template text="""So I, the, the issue was that when I tried to""" start="00:07:08.680" video="qanda-web" id="subtitle"]]
+[[!template text="""do when I tried to bind Ctrl S Ctrl R to the""" start="00:07:15.400" video="qanda-web" id="subtitle"]]
+[[!template text="""prompt going up and down,""" start="00:07:17.380" video="qanda-web" id="subtitle"]]
+[[!template text="""so I use I was I complete and I'm used to""" start="00:07:22.900" video="qanda-web" id="subtitle"]]
+[[!template text="""like the control S and control R to go,""" start="00:07:26.760" video="qanda-web" id="subtitle"]]
+[[!template text="""to cycle through the selections.""" start="00:07:28.980" video="qanda-web" id="subtitle"]]
+[[!template text="""And so I want it the same in next in its""" start="00:07:35.560" video="qanda-web" id="subtitle"]]
+[[!template text="""prompt like when, for example,""" start="00:07:38.460" video="qanda-web" id="subtitle"]]
+[[!template text="""typing a URL and get completion from history.""" start="00:07:43.620" video="qanda-web" id="subtitle"]]
+[[!template text="""But it has a conflict with the...""" start="00:07:48.900" video="qanda-web" id="subtitle"]]
+[[!template text="""And also, I try to bind the hint.""" start="00:07:55.680" video="qanda-web" id="subtitle"]]
+[[!template text="""So when I want to follow a link,""" start="00:08:00.440" video="qanda-web" id="subtitle"]]
+[[!template text="""So I press a hint key and then like all these""" start="00:08:05.800" video="qanda-web" id="subtitle"]]
+[[!template text="""links are highlighted with like little""" start="00:08:10.120" video="qanda-web" id="subtitle"]]
+[[!template text="""letters that I can like choose which 1 I want""" start="00:08:13.660" video="qanda-web" id="subtitle"]]
+[[!template text="""which link I want to follow.""" start="00:08:14.820" video="qanda-web" id="subtitle"]]
+[[!template text="""So I try to bind that 1 to J sort of like""" start="00:08:20.140" video="qanda-web" id="subtitle"]]
+[[!template text="""Control C, Control J, or mode.""" start="00:08:23.560" video="qanda-web" id="subtitle"]]
+[[!template text="""But apparently there's a conflict here.""" start="00:08:28.780" video="qanda-web" id="subtitle"]]
+[[!template text="""So when I do both these prompt mode binding""" start="00:08:33.320" video="qanda-web" id="subtitle"]]
+[[!template text="""and the document mode binding,""" start="00:08:36.260" video="qanda-web" id="subtitle"]]
+[[!template text="""Yeah, the prompt no longer works.""" start="00:08:39.960" video="qanda-web" id="subtitle"]]
+[[!template text="""And I reported the bug to Nixt.""" start="00:08:43.840" video="qanda-web" id="subtitle"]]
+[[!template text="""And yeah, and there was response but there""" start="00:08:50.500" video="qanda-web" id="subtitle"]]
+[[!template text="""are so many bugs there,""" start="00:08:52.580" video="qanda-web" id="subtitle"]]
+[[!template text="""and I don't think that bug is very high""" start="00:08:55.640" video="qanda-web" id="subtitle"]]
+[[!template text="""priority. So yeah, I basically stopped trying""" start="00:09:00.540" video="qanda-web" id="subtitle"]]
+[[!template text="""that because key mining is very important to""" start="00:09:03.500" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Right, but, sorry, please finish.""" start="00:09:07.600" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: me. Yeah, so I mean, yeah,""" start="00:09:15.620" video="qanda-web" id="subtitle"]]
+[[!template text="""without key bindings I can't like,""" start="00:09:17.320" video="qanda-web" id="subtitle"]]
+[[!template text="""I won't. So, okay, I feel this is a very""" start="00:09:23.940" video="qanda-web" id="subtitle"]]
+[[!template text="""basic functionality. I'm kind of reluctant to""" start="00:09:29.280" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Without key bindings, they are.""" start="00:09:31.220" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: continue trying what These are pieces.""" start="00:09:32.020" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: It reminds me of 2 points.""" start="00:09:34.200" video="qanda-web" id="subtitle"]]
+[[!template text="""So yesterday with Stefan we were talking""" start="00:09:35.840" video="qanda-web" id="subtitle"]]
+[[!template text="""about sane defaults and when he was sleeping""" start="00:09:37.540" video="qanda-web" id="subtitle"]]
+[[!template text="""today we talked about it again with a""" start="00:09:39.440" video="qanda-web" id="subtitle"]]
+[[!template text="""speaker. We did the mentor talk.""" start="00:09:41.400" video="qanda-web" id="subtitle"]]
+[[!template text="""Feel free to re-watch it afterwards.""" start="00:09:43.020" video="qanda-web" id="subtitle"]]
+[[!template text="""But it's funny how, you know,""" start="00:09:48.320" video="qanda-web" id="subtitle"]]
+[[!template text="""regardless of how big the package actually""" start="00:09:50.920" video="qanda-web" id="subtitle"]]
+[[!template text="""is, they always provide some kind of sane""" start="00:09:54.520" video="qanda-web" id="subtitle"]]
+[[!template text="""default and with Nixed,""" start="00:09:55.640" video="qanda-web" id="subtitle"]]
+[[!template text="""obviously, it's built with a Vim mentality""" start="00:09:58.620" video="qanda-web" id="subtitle"]]
+[[!template text="""and modality of key bindings.""" start="00:10:02.020" video="qanda-web" id="subtitle"]]
+[[!template text="""And for us, we are more used to the Emacs way""" start="00:10:05.860" video="qanda-web" id="subtitle"]]
+[[!template text="""of doing things. It's a complete blocker.""" start="00:10:08.040" video="qanda-web" id="subtitle"]]
+[[!template text="""No matter how great the pieces of""" start="00:10:10.320" video="qanda-web" id="subtitle"]]
+[[!template text="""functionality behind Nixed are,""" start="00:10:12.280" video="qanda-web" id="subtitle"]]
+[[!template text="""just the fact that UX-wise we cannot get into""" start="00:10:15.060" video="qanda-web" id="subtitle"]]
+[[!template text="""it or we cannot have it behave nicely with""" start="00:10:18.220" video="qanda-web" id="subtitle"]]
+[[!template text="""what we do. It's a massive block that is""" start="00:10:20.280" video="qanda-web" id="subtitle"]]
+[[!template text="""preventing appropriation of such tools.""" start="00:10:22.040" video="qanda-web" id="subtitle"]]
+[[!template text="""So it might seem very basic to bounce a""" start="00:10:25.940" video="qanda-web" id="subtitle"]]
+[[!template text="""package at the level of key bindings but""" start="00:10:28.300" video="qanda-web" id="subtitle"]]
+[[!template text="""that's what we all do.""" start="00:10:29.620" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I totally agree.""" start="00:10:32.800" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Right, if I can just interrupt,""" start="00:10:36.180" video="qanda-web" id="subtitle"]]
+[[!template text="""we have about 2 more minutes of questions and""" start="00:10:38.520" video="qanda-web" id="subtitle"]]
+[[!template text="""I see people are writing more questions.""" start="00:10:40.940" video="qanda-web" id="subtitle"]]
+[[!template text="""Did you want to add something,""" start="00:10:42.180" video="qanda-web" id="subtitle"]]
+[[!template text="""Yucheng? On what we're saying?""" start="00:10:43.780" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: No, no, no, Let's continue.""" start="00:10:47.620" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: had plenty of time. Okay,""" start="00:10:51.340" video="qanda-web" id="subtitle"]]
+[[!template text="""I'm going to ask you to be quick about this""" start="00:10:53.100" video="qanda-web" id="subtitle"]]
+[[!template text="""1. I'm going to read the question,""" start="00:10:53.860" video="qanda-web" id="subtitle"]]
+[[!template text="""which is slightly long,""" start="00:10:54.620" video="qanda-web" id="subtitle"]]
+[[!template text="""and you're going to have about 30 seconds to""" start="00:10:56.320" video="qanda-web" id="subtitle"]]
+[[!template text="""answer it. Do you feel capable of this?""" start="00:10:57.720" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: I thought we Yeah, let's try it.""" start="00:10:59.860" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Let's try it. At least try it.""" start="00:11:02.860" video="qanda-web" id="subtitle"]]
+[[!template text="""Okay, so quoting, I find the JavaScript trap""" start="00:11:05.208" video="qanda-web" id="subtitle"]]
+[[!template text="""almost impossible to avoid since I like to""" start="00:11:06.680" video="qanda-web" id="subtitle"]]
+[[!template text="""buy used stuff online and use my online bank.""" start="00:11:10.360" video="qanda-web" id="subtitle"]]
+[[!template text="""How do you deal with a JavaScript trap?""" start="00:11:13.140" video="qanda-web" id="subtitle"]]
+[[!template text="""I use NoScript and compromise on a few things""" start="00:11:15.400" video="qanda-web" id="subtitle"]]
+[[!template text="""I really feel I cannot live without.""" start="00:11:16.760" video="qanda-web" id="subtitle"]]
+[[!template text="""EWW is nice for a lot of things,""" start="00:11:19.080" video="qanda-web" id="subtitle"]]
+[[!template text="""especially with R for less noise,""" start="00:11:21.260" video="qanda-web" id="subtitle"]]
+[[!template text="""but I need Firefox for those GS and trapped""" start="00:11:23.760" video="qanda-web" id="subtitle"]]
+[[!template text="""pages. So do you have a quick answer to this?""" start="00:11:25.760" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I don't have a good answer,""" start="00:11:29.500" video="qanda-web" id="subtitle"]]
+[[!template text="""but I have a quick answer.""" start="00:11:30.640" video="qanda-web" id="subtitle"]]
+[[!template text="""So I use VPN and like a more,""" start="00:11:38.140" video="qanda-web" id="subtitle"]]
+[[!template text="""what do you call it, move out the Swedish VPN""" start="00:11:41.680" video="qanda-web" id="subtitle"]]
+[[!template text="""browser, move out browser.""" start="00:11:43.480" video="qanda-web" id="subtitle"]]
+[[!template text="""Yeah, so I unfortunately I have to use""" start="00:11:48.960" video="qanda-web" id="subtitle"]]
+[[!template text="""JavaScript in these cases as well,""" start="00:11:50.660" video="qanda-web" id="subtitle"]]
+[[!template text="""but I try to minimize the use of these""" start="00:11:53.800" video="qanda-web" id="subtitle"]]
+[[!template text="""things.""" start="00:11:54.020" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: How long do you think it will take for us to""" start="00:11:56.920" video="qanda-web" id="subtitle"]]
+[[!template text="""save the world with Emacs,""" start="00:11:58.140" video="qanda-web" id="subtitle"]]
+[[!template text="""or save the web at least?""" start="00:11:59.340" video="qanda-web" id="subtitle"]]
+[[!template text="""5 years, 10 years, maybe a little less than""" start="00:12:01.360" video="qanda-web" id="subtitle"]]
+[[!template text="""this?""" start="00:12:01.560" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Well I think it's, unfortunately it's""" start="00:12:06.600" video="qanda-web" id="subtitle"]]
+[[!template text="""probably independent of Emacs,""" start="00:12:08.300" video="qanda-web" id="subtitle"]]
+[[!template text="""like it will only be saved when,""" start="00:12:12.180" video="qanda-web" id="subtitle"]]
+[[!template text="""like it's saved on like the normal,""" start="00:12:14.860" video="qanda-web" id="subtitle"]]
+[[!template text="""the more popular browsers like Firefox.""" start="00:12:18.960" video="qanda-web" id="subtitle"]]
+[[!template text="""I have no clue how long it will take for,""" start="00:12:23.680" video="qanda-web" id="subtitle"]]
+[[!template text="""I don't know, for example,""" start="00:12:25.120" video="qanda-web" id="subtitle"]]
+[[!template text="""Tala to pick up so that you can buy things""" start="00:12:28.660" video="qanda-web" id="subtitle"]]
+[[!template text="""without running JavaScript.""" start="00:12:30.020" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Right. Well, I guess we'll have to cross our""" start="00:12:33.220" video="qanda-web" id="subtitle"]]
+[[!template text="""fingers then for Firefox to save the world.""" start="00:12:35.380" video="qanda-web" id="subtitle"]]
+[[!template text="""All right Yuchen, we're about out of time,""" start="00:12:37.260" video="qanda-web" id="subtitle"]]
+[[!template text="""we're moving on to the next talk in 20""" start="00:12:38.800" video="qanda-web" id="subtitle"]]
+[[!template text="""seconds. Thank you so much for your""" start="00:12:40.200" video="qanda-web" id="subtitle"]]
+[[!template text="""presentation and for waking up early and""" start="00:12:41.940" video="qanda-web" id="subtitle"]]
+[[!template text="""answering the question,""" start="00:12:42.540" video="qanda-web" id="subtitle"]]
+[[!template text="""and I can tell you, you were very alert and""" start="00:12:44.820" video="qanda-web" id="subtitle"]]
+[[!template text="""definitely more energetic than I was.""" start="00:12:47.020" video="qanda-web" id="subtitle"]]
+[[!template text="""All right, see you later.""" start="00:12:52.600" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 1]: Thank you. See you.""" start="00:12:53.940" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 2]: Bye. And we go to the next talk right now.""" start="00:12:58.400" video="qanda-web" id="subtitle"]]
+[[!template text="""[Speaker 0]: You are currently""" start="00:13:02.620" video="qanda-web" id="subtitle"]]
+[[!template text="""you""" start="00:13:15.260" video="qanda-web" id="subtitle"]]
+
+Questions or comments? Please e-mail [id@ypei.org](mailto:id@ypei.org?subject=Comment%20for%20EmacsConf%202023%20web%3A%20Emacs%20saves%20the%20Web%20%28maybe%29)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/web-before.md b/2023/info/web-before.md
new file mode 100644
index 00000000..ee6fcdab
--- /dev/null
+++ b/2023/info/web-before.md
@@ -0,0 +1,32 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 32-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="web-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="web-mainVideo" data="""
+00:00.000 Overview
+00:35.680 Background problems
+05:31.940 Solutions outside of Emacs
+09:46.480 Emacs solutions
+09:54.600 Free clients in Emacs
+12:43.021 Web browsers in Emacs
+16:52.380 emacs-web-server - overview
+17:30.380 emacs-web-server - hello emacs!
+18:17.580 emacs-web-server - yolo
+23:07.940 emacs-web-server - emacs web framework
+29:40.420 Firefox with emacs for extensions
+31:25.360 Thank you
+
+"""]]<div></div>Duration: 31:33 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--main.webm">Download --main.webm (53MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei.org">Download .org</a></li><li><a href="https://toobnix.org/w/fvzGU4cQQ2meZVKNGEHMht">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="web-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="web-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--answers.opus"></audio></div><div></div>Duration: 15:53 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--answers.opus">Download --answers.opus (7.6MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-web--emacs-saves-the-web-maybe--yuchen-pei--answers.webm">Download --answers.webm (18MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/web-nav.md b/2023/info/web-nav.md
new file mode 100644
index 00000000..0afd6a12
--- /dev/null
+++ b/2023/info/web-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/mentor">Mentoring VS-Coders as an Emacsian (or How to show not tell people about the wonders of Emacs)</a>
+Next by track: <a href="/2023/talks/sharing">Sharing Emacs is Caring Emacs: Emacs education and why I embraced video</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2023/info/windows-after.md b/2023/info/windows-after.md
new file mode 100644
index 00000000..4d8d8729
--- /dev/null
+++ b/2023/info/windows-after.md
@@ -0,0 +1,1260 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="windows-mainVideo-transcript"></a>
+# Transcript (unedited)
+
+[[!template text="""Oh, wow, how exciting. Well, maybe I should share something then. Um, well, thank you very much and welcome to uh""" start="00:00:00.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Welcome to my talk i'm a little distracted here""" start="00:00:11.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I had a friend who came over and just brought me a whole bunch of peanut butter cups homemade peanut butter cups""" start="00:00:13.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Maybe i'll show those off. Uh""" start="00:00:20.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""later""" start="00:00:22.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, what okay here, uh, put it right there""" start="00:00:23.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All good stuff""" start="00:00:30.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, so i'm going to uh get over to my planned uh stuff i'm sharing here""" start="00:00:33.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""hopefully""" start="00:00:41.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, and and we'll jump jump right in because i'm gonna need as much time as I can possibly have today""" start="00:00:42.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""thanks so much for uh joining me for emacs conference and for""" start="00:00:49.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""especially for""" start="00:00:54.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:00:56.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""all of you who who participated, you know in the discussions contributing talks and""" start="00:00:57.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, you know, uh, you know, including running the copy the the and it's just so much fun to be here, um""" start="00:01:03.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I guess while i'm standing here and and saying stuff that's that i'm gonna have to""" start="00:01:11.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""transcribe because I didn't uh prepare a""" start="00:01:16.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""recorded version""" start="00:01:20.560" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, I had a lot of trouble trimming this down so I can solve that problem by just talking a lot at the beginning""" start="00:01:22.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""about other stuff, um""" start="00:01:28.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So in addition to the thanks I just want to say thanks also to the""" start="00:01:33.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Folks on the development list that helped me kind of come up to speed on this. I won't make a big list here. But""" start="00:01:37.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:01:43.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And and for all that i've learned from my previous conferences""" start="00:01:45.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It's just I can't stress enough what a great opportunity volunteering for""" start="00:01:48.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh free software related things are""" start="00:01:53.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh as a way to get involved people will just totally teach you how to be helpful and i'm loving it""" start="00:01:55.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Sasha can you please maximize?""" start="00:02:00.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Hold on""" start="00:02:02.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I can preview the stream, but it's not super easy right now""" start="00:02:14.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I got all my screens kind of dedicated to other stuff""" start="00:02:17.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so should I pause for a second before I get into the slides because there's""" start="00:02:20.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""There they'll be hard to see if i'm not full screen""" start="00:02:24.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Yeah, yeah, okay, well i'll keep ad-libbing then because I just have a million, uh things I can say, um""" start="00:02:28.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, so, uh, let me just quickly talk, uh things that aren't in here. Um,""" start="00:02:37.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'm going to mention the mysis2.org and the that project which provides a port""" start="00:02:43.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""of the GNU""" start="00:02:51.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Of uh glibc and a lot of GNU""" start="00:02:53.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and other free software""" start="00:02:58.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, so""" start="00:03:01.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, I don't pushing a room to uh a dvd room to stefan""" start="00:03:03.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, so i'm gonna take mumble out of my uh, pardon me folks just gonna take mumble out of my speakers here""" start="00:03:12.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay""" start="00:03:19.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, in fact we'll take the speakers out of play entirely and i'll just switch to some headphones""" start="00:03:22.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, so""" start="00:03:33.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Gorman you're good to go""" start="00:03:35.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Perfect. What an amazing amount of time. All right. So thanks a lot. Uh today i've got a jam-packed talk""" start="00:03:36.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, i've i've done my best to make""" start="00:03:43.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""To make this not too overwhelming, but overall we're going to try to try to actually build""" start="00:03:46.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um emacs while we're talking today and we might actually build several emacs""" start="00:03:52.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, so let's take a look at that real quick""" start="00:03:58.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, so over here we have a screen where I am""" start="00:04:00.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Just once a minute looking. Uh""" start="00:04:05.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Indirectly at whether there have been any pushes, uh upstream to either the emacs 29 or emacs 30 branches""" start="00:04:09.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so i've""" start="00:04:17.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Arranged for us to sort of keep an eye on that""" start="00:04:19.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um while we talk and you know, maybe that's that's one thing that we'll do and then additionally we'll probably""" start="00:04:22.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Fire up a shell. This is the mysis 2 environment that I talked about before""" start="00:04:30.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And we'll probably create some directories and things""" start="00:04:36.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But before we get into all that let's let's give some some context. I've been doing my best to try to""" start="00:04:40.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, make sure all this information is on the emacs wiki as well""" start="00:04:47.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So, uh, sorry, as I said, I got a little caught off guard. So i'm moving my foot pedals""" start="00:04:51.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""To the float back to the floor here""" start="00:04:56.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And I should be able to advance slides here. All right, so""" start="00:05:00.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:05:05.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I kind of provided some special definitions for things i'm going to kind of level set with those""" start="00:05:07.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the uh""" start="00:05:14.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um when I say a binary release i'm talking about some some i'm talking about emacs for windows as""" start="00:05:17.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Just ready to run out of its folder or in whatever similar form""" start="00:05:25.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The when I say a build i'm talking about kind of a process of doing that""" start="00:05:30.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um when emacs.get of course, that's the upstream hosted by gnu savannah""" start="00:05:36.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The emacs release is a tarball created from that the sources""" start="00:05:41.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""For um emacs are going to be one of those two things""" start="00:05:48.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um very specifically so i'm not going to talk about patches patching there's some implications there perhaps we'll get into it""" start="00:05:54.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:06:02.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So a snapshot is when I build from anything other than a release source""" start="00:06:03.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh a tarball""" start="00:06:09.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, just if I if I say that i'm talking specifically""" start="00:06:11.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""about the uh, the xz""" start="00:06:16.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Version of the file as as a technical point""" start="00:06:18.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, so that may come up. All right, nothing else I think up my sleeve. Um""" start="00:06:22.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:06:29.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh as as a key data point it's worth understanding that there's a file called configure ac""" start="00:06:30.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It's going to be processed, uh as part of autoconf. We we initially access that when we run""" start="00:06:37.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um autogen as you'll see in a little bit""" start="00:06:44.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:06:48.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The but before but um, so the autogen script will generally consider this. Uh, so in a release build""" start="00:06:49.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, this has been thought about kind of for us as part of um making the tarball""" start="00:06:57.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um the configure dot a""" start="00:07:03.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""ac""" start="00:07:05.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:07:07.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Yeah, I think I pretty much covered covered this so""" start="00:07:08.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um those those that kind of partially built status that's a might be another phrase that you hear me use""" start="00:07:12.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so this""" start="00:07:19.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Slide unpacks that a little more""" start="00:07:20.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:07:24.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So it can be a little confusing to understand what exactly?""" start="00:07:26.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the you know, what is it, you know, how stable is emacs depending on what I have so that I got a""" start="00:07:30.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It's kind of a set of rules of thumb here right first I want the highest, uh, you know dot""" start="00:07:36.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh dot release value that I can get assuming that that's higher than one""" start="00:07:43.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""If it's if it were to only be one, let's say my choices were 29.1 and 30.1""" start="00:07:49.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I would take 30.1""" start="00:07:56.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:07:58.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""because that's that's weird, but um""" start="00:07:59.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""What you'll normally see is you might see a 28.2""" start="00:08:02.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You might see a 29.1""" start="00:08:06.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So here I think 28.2 has got the most most most stable""" start="00:08:08.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:08:15.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""set, uh the""" start="00:08:16.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh, or set of release binaries""" start="00:08:18.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:08:21.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""29.1 will will have a little more features, but will tend to be more stable""" start="00:08:23.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""than""" start="00:08:28.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Any lower point releases for 29""" start="00:08:29.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, certainly than any release candidates for 29, which might even have new features""" start="00:08:32.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, but are mostly going to just be patches so they're going to become the most stable""" start="00:08:38.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""thing here""" start="00:08:43.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and especially if they they have a""" start="00:08:44.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know if this this is not""" start="00:08:48.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, if this were to be 29.2 release candidate one as well looking forward to seeing""" start="00:08:50.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:08:56.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:08:57.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""30.0.50""" start="00:09:00.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:09:02.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And and in between this this pre-test here, we're talking about kind of developer land. Um, so""" start="00:09:03.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, the expectation is that you know what you're doing that applies to windows users""" start="00:09:10.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh just as much if you are building anything in the snapshot range any of that is going to be in this""" start="00:09:14.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""30.0.50 currently that'll change when""" start="00:09:21.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:09:24.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""when the""" start="00:09:25.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""30 30 an emacs 30 release tags, uh, or release branches come""" start="00:09:27.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, so""" start="00:09:34.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Let's talk about the local um, there's not much to know about what I have going on""" start="00:09:37.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""except that I have my my paths mess messed with so""" start="00:09:43.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, if if that that were to come up if you're wondering how why does this?""" start="00:09:48.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh in in sys command work that's that's probably the way place where you notice it""" start="00:09:52.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, I am using windows 10. I haven't tried windows 11""" start="00:09:58.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh as mentioned my sys2 is critical to all this""" start="00:10:02.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""There's one script in particular that will error out if you try to do anything other than use my sys's""" start="00:10:06.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""My sys's shell and in fact my sys owns""" start="00:10:11.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Or provides three shells and of them that script is designed to work with a specific one of them as we'll come to""" start="00:10:14.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I don't talk about installing the dependencies, but just as as kind of some kind of help. Um,""" start="00:10:23.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You can search using this formula and install""" start="00:10:31.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Using this formula good luck with those, you know grep commands""" start="00:10:37.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And sys is the tool for building the self-installing self-extracting installer or uh executable self-installer""" start="00:10:43.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, the script for that is provided along with the emac source""" start="00:10:51.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, and i've provided a helpful link to the main page for the project download link on the left. It is not""" start="00:10:56.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It's kind of scare where the way that this link appears, but I have clicked it and it's working for me""" start="00:11:05.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Automation does uh, we'll we have some time we'll be looking at this at a minimum""" start="00:11:14.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I wanted to mention that what I do on my local what you're seeing in the crawler, I hope""" start="00:11:19.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh represents a""" start="00:11:25.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:11:27.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""A simple sleep loop, uh, and we'll we'll look into that if we have time""" start="00:11:30.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, I do have a little but I do use like a cron job and so on to clean up some hosting that I pay for""" start="00:11:36.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um where i've got where I where I kind of self-host""" start="00:11:44.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""some uh snapshots""" start="00:11:48.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""more stuff than I feel comfortable uploading to""" start="00:11:50.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh, to gnu""" start="00:11:54.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The um""" start="00:11:57.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know, I never said, uh, my name is corwin bruce for the last couple of years i've been the volunteer making""" start="00:12:01.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh making the snapshots the quote-unquote official binaries, uh for windows of the""" start="00:12:08.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:12:15.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Of of emacs for windows. So that's that's all the different versions. Uh help is always welcome with that""" start="00:12:17.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'd be very happy to teach you in more depth. This video is""" start="00:12:23.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know kind of my drop dead file. Uh, I don't have specific plans. Uh, if somebody's like hey get out of the way""" start="00:12:27.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""This is the one thing I think I can do""" start="00:12:33.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, hey, that's real relatable""" start="00:12:35.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, um, so I haven't tried uh, the I haven't tried a lot of fun things that I won't talk about""" start="00:12:39.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, the uh, the rest of this talk is going to get into the nitty-gritty as I said, um""" start="00:12:46.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""If we can't convince emacs to start building over on that screen, we'll be opening it up here on the center stage""" start="00:12:52.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:12:59.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, this begins and there's there's there's there's great insight here too on the wiki, uh""" start="00:13:01.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""With picking an ftp source for any official release""" start="00:13:08.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That is for a stable product. Please visit""" start="00:13:12.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um ftp.gnu.org""" start="00:13:16.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Otherwise, you'll want to switch that ftp dot at the beginning to alpha dot and take a pre-test""" start="00:13:19.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, or any snapshot or otherwise then they're not published there""" start="00:13:25.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The uh next""" start="00:13:30.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh, you know""" start="00:13:32.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""i'm gonna you have some examples in here that assume that you're doing a release build that you're doing 29.1, but""" start="00:13:34.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, i'm glancing out of the the right side of my face at the""" start="00:13:41.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Chat on the optance anybody in there wants to direct me at a particular""" start="00:13:48.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, we can make some other we can build something""" start="00:13:53.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Else if you want to see a snapshot build more mention that um the examples that you're going to see here""" start="00:13:56.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That I will without other direction cut and paste""" start="00:14:03.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:14:07.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Are all based on a release bill""" start="00:14:09.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so""" start="00:14:12.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, and so, uh, we'll use the uh, I mentioned that there are several shells provided by mysis2""" start="00:14:14.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""To the min-gw64""" start="00:14:22.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Shell is the one that we mostly need""" start="00:14:25.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, I tested all of this as well with the min-gw32 shell""" start="00:14:28.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:14:34.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So that that should work and and see mix binaries that that work for me""" start="00:14:35.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh""" start="00:14:44.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I as I mentioned, I don't get into the details of installing all your prerequisites""" start="00:14:46.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I found that doing it in a headfirst manner wasn't uh,""" start="00:14:50.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Wasn't difficult and I also found that there's a number of tutorials. I didn't want to pick one to link here""" start="00:14:54.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um there uh""" start="00:15:03.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Here are uh, okay, so""" start="00:15:06.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Our general formula for building emacs irrespective of windows""" start="00:15:10.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""looks like""" start="00:15:15.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Does the configure script exist if not run autogen?""" start="00:15:16.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""from a windows build standpoint""" start="00:15:21.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""This is if i'm not running a release that release build call the autogen script""" start="00:15:23.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Right and this would be in the directory where we want to pack this i'll demonstrate""" start="00:15:31.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""within""" start="00:15:35.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""three minutes if uh""" start="00:15:37.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""If one if nobody's pushed upstream to emacs""" start="00:15:39.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:15:42.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so, uh the configure, uh, and""" start="00:15:44.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""configure options""" start="00:15:48.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""are uh""" start="00:15:50.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh the configure, you know if the configure sorry if the configure script exists then""" start="00:15:53.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh doesn't doesn't exist. So the only reason so in my process I will always execute that step because I clean everything""" start="00:15:58.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""after every build, um in all my contexts""" start="00:16:06.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, however, if you were you know had a""" start="00:16:10.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Checkout of emacs dot get and you are building it at several releases""" start="00:16:14.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Then maybe you've got a configure script and then you'll want to know""" start="00:16:19.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um the you know""" start="00:16:22.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Whether you have to bootstrap and the typical complexities, but otherwise you might be able to skip that in in the abstract""" start="00:16:24.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:16:32.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Is that right or is it is""" start="00:16:36.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Make uh, so and if the make file doesn't exist make install. I know i'm""" start="00:16:38.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Looking at that and i'm questioning whether it's correct. Sorry about that""" start="00:16:43.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um in any case, uh, so autogen configure make install is our recipe autogen""" start="00:16:48.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Creates the configure script configure creates the make file the make file""" start="00:16:55.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um in the case of windows, I almost always want the install""" start="00:17:00.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh and to specify some location where the installed emacs will land this is""" start="00:17:04.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""where""" start="00:17:10.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""all of the recipes for packaging emacs""" start="00:17:11.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""go""" start="00:17:14.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and if I were""" start="00:17:15.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know using this as a movie to upgrade I personally would do that by""" start="00:17:18.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""by specifying an install path quote unquote on top of""" start="00:17:23.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh a main installation. I don't do that. I update shortcuts manually based on what specifically I want to try""" start="00:17:27.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh in an effort to to to notice, uh interesting patches and confirm they work on windows""" start="00:17:34.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Which mostly they do there's not a lot of code in my experience that is""" start="00:17:41.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Windows specific and very very little around the build process""" start="00:17:46.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right""" start="00:17:50.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Huge rabbit hole zone and I still have a minute before I have to kick off the first part of our demo""" start="00:17:51.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so""" start="00:18:00.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Let's let's keep keep diving in""" start="00:18:01.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:18:04.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The those specific part windows specific parts beside the dot exe extension that we're going to find slammed onto all of our familiar""" start="00:18:05.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh executables. We're also going to have emacs client w""" start="00:18:14.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Which is a wrapper that hides?""" start="00:18:18.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um how hard it is to get""" start="00:18:22.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh to take it""" start="00:18:25.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""How bad the abstraction is between the window management layer and the gooey?""" start="00:18:27.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And then all the different parts on windows essentially it wants to create a shell window if we just double click emacs.exe""" start="00:18:32.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So emacs client w""" start="00:18:39.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh and run emacs are going to solve that problem""" start="00:18:41.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:18:45.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Wrapping emacs and emacs client respectively""" start="00:18:46.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And""" start="00:18:51.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Just uh""" start="00:18:53.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, so let's let's go ahead and do something i'll i'm going to take away the ticker here for a minute""" start="00:18:56.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And what you're not seeing is off stage. I am""" start="00:19:02.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Killing that so we don't get builds in parallel""" start="00:19:07.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:19:11.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So, um""" start="00:19:15.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So at this point i'm going to open up a shell and i'm going to start talking just a little bit about""" start="00:19:17.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""My local build environment, which we haven't gotten into in fact just to make that even easier""" start="00:19:22.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""let's um""" start="00:19:28.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Let's just take a look at it a little bit probably the easiest spot""" start="00:19:31.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Is""" start="00:19:37.560" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Here""" start="00:19:40.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, so here we have the familiar windows my computer interface""" start="00:19:47.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I have the g drive and the h drive""" start="00:19:52.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""four terabyte drives""" start="00:19:56.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um dedicated to""" start="00:20:00.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""my""" start="00:20:02.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, really overblown emacs build process""" start="00:20:03.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, this just lets me be super lazy. There's no reason you need any massive amount of storage to do any of this""" start="00:20:08.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um inside here and now i'll actually switch you back to the other screen""" start="00:20:15.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:20:21.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We'll we'll find""" start="00:20:24.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Oops""" start="00:20:35.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Sorry about that""" start="00:20:38.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It didn't take the time to label that one""" start="00:20:40.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Label that one""" start="00:20:42.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, so here you can see the primary output that""" start="00:20:44.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That i'm looking at through this automated process""" start="00:20:49.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I come along I look at the bug reports or maybe i'm just restarting my computer and choosing what emacs""" start="00:20:52.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""version at random and then in that case, I look at this modified date and I say""" start="00:20:58.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um my config that I""" start="00:21:03.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know that i'm playing with right now is all set for emacs 30""" start="00:21:05.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Or i'm testing them both and i'm relaunching both of these right""" start="00:21:09.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So for me that starts by diving into the install folder going into the bin folder""" start="00:21:13.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Which looks exactly the way my automation leaves it. I then come in to run the run emacs""" start="00:21:18.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And I create a shortcut""" start="00:21:25.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:21:27.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""To it""" start="00:21:29.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so""" start="00:21:30.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'm a keyboard person. So that's usually done like this""" start="00:21:31.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And then I just know that the context menu is going to come up in the right place so i'll come up and""" start="00:21:36.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:21:42.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Possibly change the change the shortcut, right?""" start="00:21:44.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""If I don't mess with it""" start="00:21:53.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:21:56.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So here's where i'll add my minus q if that's kind of where my world is at or it kind of depends on what i'm doing""" start="00:21:57.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""With these which varies week to week""" start="00:22:03.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, so restarting my emacs, uh involves doing the same thing going to my desktop""" start="00:22:07.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And where you'll find a number of emac shortcuts""" start="00:22:12.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and""" start="00:22:17.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um updating the shortcut in the same manner""" start="00:22:20.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Actually, maybe we'll just let's go back there and just show it. So if we look at for example my erc""" start="00:22:23.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You can see it's going to be pointing at one of these""" start="00:22:33.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""clones, and then it's gonna""" start="00:22:37.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Maybe tell me that I want it wants to be full screen. No, not currently and then it might uh,""" start="00:22:39.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Have some stuff in there about auto loading a config and what connections i'm going to some commands i've defined to start connections""" start="00:22:45.560" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So""" start="00:22:53.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, and sorry I got a phone call I was checking it wasn't in an order the organ the other organizers giving me the hook""" start="00:23:00.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So, um, all right, so that's that's probably enough on the local system. Let's get back to""" start="00:23:08.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""To to building emacs and now it hopefully makes a certain amount of sense when I say we're gonna wander over to the h drive""" start="00:23:15.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and recreate the structure that""" start="00:23:22.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""both""" start="00:23:25.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""My process sort of assumes and the scripts you'll find in the admin nt""" start="00:23:27.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh build disk folder in source""" start="00:23:34.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Used to assume those scripts are in need of some love and in just a little bit i'll be mentioning a build""" start="00:23:38.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:23:45.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""a uh""" start="00:23:46.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""A a particular bug that you might want to pay attention to if you're interested in making a self installer""" start="00:23:47.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""all right, so""" start="00:23:54.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:23:57.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We're going to create""" start="00:23:58.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh an emacs build directory""" start="00:24:01.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And we've got a handy git clone stage git clone command stage for ourself that would work""" start="00:24:08.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:24:16.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Do not currently see anybody lobbying for that. So instead we will run the rather faster""" start="00:24:19.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh w get command""" start="00:24:28.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""On savannah, which is not pasted in here. Nice. Let's see if I can freehand it not gonna do it""" start="00:24:30.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:24:37.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:24:45.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Beg your pardon i'm grabbing a url from the internet""" start="00:24:51.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, okay. Yeah, I can't I can't honestly I can't freehand it whatever""" start="00:25:00.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Sorry, I uh""" start="00:25:06.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I didn't have that bookmarked and all handy like I thought I did""" start="00:25:07.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, so we'll just say ftp.gnu""" start="00:25:12.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text=""".org""" start="00:25:15.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, what is it pub emacs emacs-29.1""" start="00:25:17.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh""" start="00:25:26.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Hmm""" start="00:25:34.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I""" start="00:25:36.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Didn't""" start="00:25:40.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Really think i'd have this command sitting around it makes me want to scrap the whole demo i'm not gonna lie""" start="00:25:43.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, how am I doing your time?""" start="00:25:48.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, I think at least 15 minutes. Um, but in the command that you were freehanding should the pub be gnu instead""" start="00:25:51.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Oh, thanks""" start="00:25:59.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'm, sorry""" start="00:26:01.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""There we go, thank you. All right, and then we'll""" start="00:26:07.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And i'm not sure I provided commands for this either""" start="00:26:17.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But it is trivially easy to do and while that happens we'll get to move on a few slides""" start="00:26:22.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:26:29.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The configure script i'm not talking about in a lot of detail""" start="00:26:31.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But I do want to mention that the gnu binaries are provided with native""" start="00:26:35.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh compilation enabled that's the feature that uses gcc""" start="00:26:41.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""lib gcc get on windows if available that looks gcc get will be used""" start="00:26:46.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, but when but if if emacs has that feature then it will take by compile""" start="00:26:53.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""native code and""" start="00:27:01.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""asynchronously""" start="00:27:04.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Compile that as needed""" start="00:27:05.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh with the ahead of time feature""" start="00:27:07.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We're going to do as much of that ahead of time and for folks that are consuming the windows binary""" start="00:27:09.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The thinking goes that they might not have mysys too. They might not have""" start="00:27:14.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Gcc jet they might be""" start="00:27:19.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Happy that they're enabled""" start="00:27:22.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""In a you know a lot of time run emacs on their local environments""" start="00:27:24.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""At all""" start="00:27:30.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know in a maybe a lockdown at a corporate context""" start="00:27:31.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so""" start="00:27:35.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""aside""" start="00:27:36.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""that""" start="00:27:37.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""There's your first glimpse at the configure""" start="00:27:38.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Program that we're going to run in a moment. In fact, i'm going to go as far as""" start="00:27:42.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Putting it on the clipboard""" start="00:27:47.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:27:49.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Really just looking at this the aot flag""" start="00:27:50.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It's the one i'd call attention to but it's worth understanding that windows doesn't provide a dbus capability""" start="00:27:53.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So windows native program isn't gonna be able to depend on dbus. We're gonna""" start="00:27:58.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We're gonna explicitly ask that that be left out. I think that's actually optional. It's documentation""" start="00:28:03.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I think the configure program is smart enough to know that we don't want dbus""" start="00:28:09.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""on windows""" start="00:28:13.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, otherwise we tend to compile with things. Um, there there's missing documentation. We could say the uh,""" start="00:28:15.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""all of the libraries are treated in the way I mentioned in that""" start="00:28:23.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Jpeg support will be available as long as""" start="00:28:27.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Jpeg is is available in our environment and configure script certainly notices that""" start="00:28:32.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, the new provided binaries are provided with minus o2 and that's also my default personally on windows. Um,""" start="00:28:37.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""However, and i'm going to skip this since I mentioned it""" start="00:28:45.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um mentioned""" start="00:28:49.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh, and uh""" start="00:28:51.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:28:54.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So I guess i'll say um, you can um say with""" start="00:28:56.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:29:01.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It's worth knowing that you if you're not one reason that that you're building might be because you want to turn off native""" start="00:29:02.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Compilation for whatever reason if you have load juices you get it, but don't want emacs to use it""" start="00:29:08.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, especially as that default looks like it could be changing with emacs 30""" start="00:29:14.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:29:19.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the uh""" start="00:29:20.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the debug configuration, um, this is this is the uh, kind of""" start="00:29:22.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, what what i'm currently using this on commentary. Uh, i've seen on the emacs development list""" start="00:29:27.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:29:34.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, let's check on our checkout and see if we can't get a build running""" start="00:29:40.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, this is a release build so I won't be starting with""" start="00:29:44.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, so we'll start by hopping into its directory""" start="00:29:49.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And we um we have""" start="00:29:53.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh""" start="00:29:59.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But not""" start="00:30:05.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, so that tells us we're gonna run""" start="00:30:11.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Our configure program""" start="00:30:15.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But we don't need to run uh config ic""" start="00:30:18.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So""" start="00:30:23.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So let's get that going and""" start="00:30:31.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:30:34.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Hopefully that's showing through just enough to be fun not too much to be distracting""" start="00:30:36.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um the uh the unoptimized""" start="00:30:46.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, please report issues if your emacs is crashing, uh to the emacs development list not to me personally""" start="00:30:52.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, although you are of course welcome to copy me""" start="00:30:59.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, if you especially i'm subscribed to that list so I get all the mail so I don't mind being copied""" start="00:31:02.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh, and""" start="00:31:09.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""as well""" start="00:31:11.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""if you think it's""" start="00:31:12.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:31:13.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know related to packaging that actually makes sense""" start="00:31:15.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Or windows related even and uh, it can be tested with an extra snapchat that should be uploaded to the gnu alpha side""" start="00:31:18.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I could look at that if I have time""" start="00:31:25.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay""" start="00:31:27.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That is with the configure script to make file for""" start="00:31:29.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Emacs is really really complicated if time permits which i'm, you know now confident it will not""" start="00:31:32.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We will look at a makefile that I tried writing that orchestrates this whole process that i'm talking about""" start="00:31:39.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um as uh, let's see, so the build uh build process I run my builds with""" start="00:31:47.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh explicitly specifying the max cpu, uh""" start="00:31:54.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""with minus j""" start="00:31:59.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But minus b1 to get the full build, uh full login to your recipes. That is probably the magic thing""" start="00:32:01.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""that um""" start="00:32:09.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""shouldn't to understand with uh""" start="00:32:10.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Or that uh that that uh that i'm glad that I know, uh as i'm trying to write my automations""" start="00:32:15.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:32:24.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh the um""" start="00:32:26.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So I call that out here the binary, uh releases""" start="00:32:29.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay. So in this section, we're going to start to get into what are all those files""" start="00:32:35.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And there's a bug report related to that that I didn't get into here. So""" start="00:32:39.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, that's kind of to the point about the less said about this the better""" start="00:32:43.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That's my explanation for stepping through some of these slides. Uh, of course""" start="00:32:47.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Share them all um""" start="00:32:52.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Hopefully by the time that this video is published""" start="00:32:55.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I mentioned it. Um, I may have mentioned already freshly installed but uh fully installed""" start="00:33:01.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh this the the key distinction here is that uh emacs is""" start="00:33:07.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Distributed in the binary form for windows with some dll files that actually come from the mysis 2""" start="00:33:13.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Project there's an implication there to gcc that I definitely want to get to it talking about""" start="00:33:21.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, so freshly installed means""" start="00:33:28.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We haven't copied those binaries from the mysis 2""" start="00:33:31.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh installation""" start="00:33:35.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""into the emacs""" start="00:33:37.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh installation""" start="00:33:39.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh, and then""" start="00:33:41.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""When we re-archive that local emacs installation, that's how we're going to create the full zip""" start="00:33:43.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So hopefully that actually is a pretty good summary of what all those files are""" start="00:33:48.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, but there are readme files on the ftp. They do a pretty good job""" start="00:33:53.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""If you can dig enough to find one and my apologies for uh tardiness getting a new version on that posted""" start="00:33:59.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:34:07.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the emacs""" start="00:34:09.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, so those dependencies, uh are listed within the emacs itself and as we'll just talk about in a moment""" start="00:34:10.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""There's a way""" start="00:34:17.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh that we can use we can access that""" start="00:34:18.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""When we collect them in order to meet the gcc requirement that is essentially""" start="00:34:22.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""to include""" start="00:34:27.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um include the sources for the for those binaries the things that were compiled against""" start="00:34:29.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:34:36.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The uh, so so here we go, we're we're into the build process""" start="00:34:39.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Let's just take a look and see if configure it got done it sure did""" start="00:34:42.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and now we can see a table of""" start="00:34:46.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Hopefully good, but good and bad news""" start="00:34:49.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um in potential""" start="00:34:51.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um where we're learning that we're using the pdumper strategy and any number of other things that we might be""" start="00:34:53.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Messing with as our motivation for for building ourselves on emacs""" start="00:34:59.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""again, this table represents""" start="00:35:04.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh what you'll what""" start="00:35:07.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""What what it looks like for me when i'm building for the gnu distributed binaries""" start="00:35:10.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, so um""" start="00:35:17.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Kind of moving moving as quickly as I can here""" start="00:35:20.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'm at 40 after I believe that's the five minute mark""" start="00:35:24.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so""" start="00:35:28.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um having just succeeded in in configuring emacs. I don't think we're going to build it. Uh""" start="00:35:29.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I don't think we're going to actually get to running make install""" start="00:35:35.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, but I have it sitting here on my keyboard or clipboard assuming that we will right?""" start="00:35:39.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""No""" start="00:35:49.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Oh, wow""" start="00:35:50.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I think i've managed to confuse this. All right, so for me that looks simply like""" start="00:35:52.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh make""" start="00:35:57.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""v equals one""" start="00:35:59.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh install, uh prefix equals""" start="00:36:01.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:36:10.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And we can at least get it kicked off""" start="00:36:18.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And that that command is just uh""" start="00:36:22.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Just is no no different than I showed on the slide where I where I gave it""" start="00:36:26.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, I wasn't planning to stop and explain it. I was just planning to paste it in""" start="00:36:31.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so""" start="00:36:35.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So so again recapping the rest of the process here and maybe actually making it if you can believe it or not""" start="00:36:36.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""through the rest of these slides, um""" start="00:36:42.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We to to create the full set of binaries. We're going to need a no dependent no depth archive. That's without the mysys2""" start="00:36:45.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""To uh deal provided dlls just the things that we compile as part of making emacs""" start="00:36:52.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:36:59.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The uh, the build depth zip script is uh provided with the source distribution is your tool""" start="00:37:02.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""for uh meeting the gpl requirements ride source as mentioned before""" start="00:37:10.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, there is a second bug that I did, uh include some more information on in my notes already""" start="00:37:14.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um that uh""" start="00:37:22.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That gets into the details of this other feature I alluded to""" start="00:37:24.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, i'll just skip into that""" start="00:37:28.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:37:31.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""we can with with uh""" start="00:37:32.560" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""With a an appropriate version of that which you may need a patch""" start="00:37:35.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh to""" start="00:37:41.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""To have you can list out the dependencies""" start="00:37:42.560" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And and that version as well can consider the dependencies of the emacs binary versus the hard-coded list""" start="00:37:45.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You might find depending on when you look at this file in the source tree""" start="00:37:51.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The different um""" start="00:37:56.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so""" start="00:37:59.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I also have a hack here that uh works around the absolute requirement to run this with the mysys2""" start="00:38:00.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And not the mingw64""" start="00:38:07.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""64""" start="00:38:09.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Script""" start="00:38:14.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:38:17.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Once we've made that zip file that contain that's that's our installed emacs without the dlls provided by mysys2""" start="00:38:18.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We'll then unpack the dependencies that were created by that python script. We just talked about from the emacs source tree""" start="00:38:28.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So at that point once those are unpacked we can now make what's called the full""" start="00:38:36.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Installer or sometimes I might call it the unqualified installer because it's just going to be called emacs29.1.zip""" start="00:38:41.600" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um and that uh that file which which creates the archive""" start="00:38:51.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That""" start="00:38:58.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""that that file is exactly the same plus the""" start="00:38:59.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, the dependencies that we unzipped in the bin folder of the installed emacs""" start="00:39:03.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:39:09.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Executable self-installer, which I would love to have more time to talk about I gave a few pointers here on the hard part of running""" start="00:39:10.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""it most importantly""" start="00:39:17.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""If i've installed in any kind of funny looking name, I end up renaming it to like emacs-29.1""" start="00:39:19.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Or emacs-29. or 30.0.50 or whatever and I just rename that installed""" start="00:39:26.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Emacs folder and then I go to the root of wherever I created that the parent directory above it""" start="00:39:33.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And that's where I make my copy of the emacs nsi""" start="00:39:40.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um the the nsis script""" start="00:39:44.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and uh""" start="00:39:47.560" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That's also where I""" start="00:39:49.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And then uh, then from that parent directory I execute uh making sys uh here I as mentioned""" start="00:39:51.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:39:59.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I I can get away with this because I have it on my path and it's my recollection""" start="00:40:00.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I think I tested this and couldn't reproduce the problem. So I didn't document it here, but i've had some problems with running this when""" start="00:40:05.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:40:12.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""When nsis wasn't on my path""" start="00:40:13.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The uh, the the final step here""" start="00:40:16.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And the last the gpl requirement is to include all the sources""" start="00:40:20.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Except when i'm doing a release build I always do this""" start="00:40:25.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, and that's the new practice when making snapchat binaries is to go ahead and include the sources""" start="00:40:30.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Even though we might have the specific revision number""" start="00:40:36.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, our thinking is we want absolute clarity""" start="00:40:39.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""that that somebody""" start="00:40:44.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh can say okay this binary did this thing from the source for it i'm gonna go take that into my own open source""" start="00:40:45.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""yeah, maybe they would the jerks them into my own open source project and""" start="00:40:53.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:40:57.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Off, you know off they go, uh, and that needs to be possible""" start="00:40:59.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:41:04.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so, um""" start="00:41:06.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Beyond that the rest of this is is really detailed that you find covered in the gnu maintainers manual""" start="00:41:07.960" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, this is the the current set of windows binaries that um, it's busily working on""" start="00:41:14.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""creating a like for like a""" start="00:41:20.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Mirror to behind the scenes here is called a 29.1 underscore two""" start="00:41:23.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, and I have a lot of""" start="00:41:30.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Automation available on this site. So at this point i'm just I think i'm only""" start="00:41:32.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""minute 40 seconds over i'm""" start="00:41:38.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""gonna""" start="00:41:41.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""invite my""" start="00:41:42.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Co-organizers back onto the call or any volunteers that want to jump in and anybody if there's people on the bbb""" start="00:41:44.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'd be happy to take questions if there aren't""" start="00:41:50.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, I have a screen full of""" start="00:41:53.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The automation stuff ready to go as a kind of a second ring in my circus today""" start="00:41:57.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So if you're still with me, thanks a lot for joining me, and I really enjoyed this talk""" start="00:42:03.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, if this is where we're going to close it out. I don't know where we're at for schedule today""" start="00:42:07.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, thanks a lot for a great talk corwin""" start="00:42:13.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um in terms of like schedule, yeah, you went over a little bit for the official like, um""" start="00:42:16.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""schedule or time of your talk, but I think""" start="00:42:22.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We actually have maybe like six or seven more minutes. Um here on stream""" start="00:42:24.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""For um questions and such if folks have questions or if you want to like quickly maybe show one or two more things""" start="00:42:29.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:42:36.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But I think the hard stuff is about like""" start="00:42:37.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Maybe 10 minutes ish for now and then we'll have to rush over to um""" start="00:42:39.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""for the closing remarks, so""" start="00:42:43.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Well, that sounds awesome""" start="00:42:48.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, so i'm looking at the the dev chat, uh, I see a comment on cross compiling the emacs""" start="00:42:51.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But i'm sorry, i'm looking at irc primarily, but uh, feel free to jump in if you're on bbb with me or""" start="00:42:58.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, uh, if if you put something on the pad i'm sure""" start="00:43:05.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I will see it between the two of us""" start="00:43:09.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh over here""" start="00:43:13.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, so cross compiling emacs for serenity. I haven't tried really any cross compiling. I think that would be very interesting""" start="00:43:14.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I would most likely focus on""" start="00:43:21.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Doing exactly what I do on a gnu system completely ditching""" start="00:43:23.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:43:29.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So I guess with my my remaining time rather than walking through code""" start="00:43:30.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um for my automation which can be another talk if in fact there's an interest in that""" start="00:43:35.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:43:40.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I want to I guess say a couple words about the non-free operating system""" start="00:43:41.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That i'm using here. I did my best to use no""" start="00:43:46.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""non-free software other than""" start="00:43:50.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:43:53.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh the operating system""" start="00:43:55.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That is the context for this talk in preparing this talk for you""" start="00:43:57.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I personally have a lot more""" start="00:44:02.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh time and energy I have to say invested in proprietary tools for doing a lot of the things that""" start="00:44:06.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That go into this so I really respect the work of people that pull that off. Um""" start="00:44:14.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'm, sorry, I didn't get my pre-recorded stuff. Uh kind of in order for everybody, but I just want to stress like""" start="00:44:20.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, it is all absolutely possible and just hats off to everybody that that used uh entirely free software to get their""" start="00:44:28.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Get their recordings done in time""" start="00:44:36.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, and what you did see""" start="00:44:38.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Unless it was provided by the operating system in my presentation today was all""" start="00:44:41.640" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh free software with the debatable exception of nsys which styles itself""" start="00:44:46.040" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""as open source""" start="00:44:51.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""maybe for uh marketing reasons""" start="00:44:53.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh in any case, uh, certainly we can get out of the source""" start="00:44:57.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Thanks for the note corinne, it's good to know that uh""" start="00:45:08.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Building or uh, yeah doing the build of emacs for windows on windows can be done using only free software""" start="00:45:11.320" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Yeah, absolutely""" start="00:45:19.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Probably the right closing note, right?""" start="00:45:23.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, I just uh, thanks again to the organizers for bearing with me and like every time I was like you guys i'm""" start="00:45:26.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Terrible at this. They're just like no you're doing fine. Keep going. You did a great job live last time""" start="00:45:32.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You can do it live, you know and and saying all the right things to just uh, encourage me to come back""" start="00:45:37.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""This year and everywhere""" start="00:45:44.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Well, as I said before we were very lucky to have you and the rest of the team of course as well and""" start="00:45:49.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um goes without saying but all the speakers and all the audience the participants as well, so""" start="00:45:54.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:46:08.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So, uh, are we we're still live over here that you know, you know me i'm the mike hog that I am I can't resist""" start="00:46:09.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um throwing throwing up another screen here and uh,""" start="00:46:17.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""In fact, let's go ahead and go back to our to our crawler, right?""" start="00:46:22.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And i'll bring back our build if it finishes and maybe we'll show making the installer as well, um""" start="00:46:30.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But I have the cpu count turned down a little bit here""" start="00:46:39.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Note I didn't specify minus j here""" start="00:46:44.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, so""" start="00:46:47.400" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Over here is my automation, uh in case you do want to take a look""" start="00:46:49.480" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I can at least provide the orientation of what you're looking at scrape log is probably my first thing. I want to show off""" start="00:46:52.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, it's not beautiful, but this works, uh, pretty well for me to""" start="00:46:59.800" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Get a sense if something might have changed in terms of how many warnings or errors are happening""" start="00:47:06.280" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""When I build emacs, so I have this awful automation going on and I frequently want to answer the question""" start="00:47:13.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know, what's the change rate in uh warnings or what have you?""" start="00:47:19.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So this kind of gives me a count""" start="00:47:24.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""of that""" start="00:47:26.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:47:28.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""so from there, uh""" start="00:47:29.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Crude ci is the script. We're we're watching run in the other pane""" start="00:47:32.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, you can""" start="00:47:37.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""see it's uh""" start="00:47:39.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Just starting to do its thing again""" start="00:47:42.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And uh""" start="00:47:48.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The make file I mentioned this is a top-down rewrite of everything else that i've done it has some bugs right now""" start="00:47:51.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um the uh""" start="00:48:00.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:48:03.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Build distribution is the main script that I use for my personal builds""" start="00:48:04.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""This is what is run by the crude ci script""" start="00:48:10.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, it has a fun tie-in to this""" start="00:48:13.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh web interface here""" start="00:48:16.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um where we can you don't need the port number when you go to it. That's just if i'm going to post""" start="00:48:19.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um the""" start="00:48:25.260" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh""" start="00:48:28.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Blah blah blah blah this this script is really long and complicated and probably needs some diving into but you can see that""" start="00:48:31.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, one of the complexities I have to deal with is that i'm going to need a something in the format of an emacs dash""" start="00:48:38.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""version for strategic""" start="00:48:44.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um nsys reasons so""" start="00:48:47.100" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:48:50.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It takes care of kind of every complexity and stuff that I mentioned today in some respects""" start="00:48:51.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, as does the make file build release""" start="00:48:57.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""is""" start="00:49:00.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um another fairly useful""" start="00:49:01.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Incarnation of this this is just focused on the release process and this does work""" start="00:49:05.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""for example to create the""" start="00:49:12.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:49:14.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know like I like well I could""" start="00:49:15.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Like uh for like files as far as I can tell so what are currently posted for emacs 29.1""" start="00:49:17.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and the release candidate""" start="00:49:24.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:49:27.660" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So i'll probably use that next time and if it's still like for like i'll probably post the ones that came from this""" start="00:49:28.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:49:35.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh building a tree sitter I make some dlls there if you're looking for hints on how to get going or just simply""" start="00:49:37.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""A huge long list of git repositories that make grammars you can use""" start="00:49:45.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That is here as well""" start="00:49:50.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, finally I mentioned I have a""" start="00:49:53.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, I have a a website where I publish my own personal snapshots that I make""" start="00:49:58.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""That folder full of install directories, but all of the usual""" start="00:50:04.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""GNU style binary distributables including the source code and the source code for the dependencies""" start="00:50:08.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:50:14.860" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the""" start="00:50:15.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:50:17.820" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So this program is another one of those""" start="00:50:20.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Complicated find commands and therefore potentially the most useful thing in here to take to you""" start="00:50:24.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, and here i'm deleting binaries older than 17 years""" start="00:50:29.340" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh everything except""" start="00:50:34.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""the uh""" start="00:50:36.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""No deps file and the sources of it. You'll find on my website""" start="00:50:37.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Currently those indefinitely i'll probably roll out""" start="00:50:41.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""120 days or something""" start="00:50:44.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um for those eventually""" start="00:50:47.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Oh, uh, I can talk about this one even um the uh""" start="00:50:53.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""The""" start="00:50:57.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So here you'll see the two branches that i'm tracking the job of this script""" start="00:50:58.700" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Is this runs on the website? I call it with a like a remote rsync""" start="00:51:02.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh type""" start="00:51:07.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, or an ssh remote ssh command""" start="00:51:08.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:51:12.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""And right after the rsync r syncing up any new emacs that I built""" start="00:51:13.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""and""" start="00:51:19.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh, it's""" start="00:51:20.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, its job is to update my fancy directory indexing so let's look at corwin's website""" start="00:51:23.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Here's my emacs 29 folder""" start="00:51:31.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We have about two more minutes corwin""" start="00:51:44.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Yeah, it'll take that entire two minutes to uh, load this directory because I am""" start="00:51:47.420" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Because I have not yet ever pruned any of these dang binaries""" start="00:51:52.940" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So every version of uh emacs 29 that i've ever made for myself is probably here""" start="00:51:56.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""nice""" start="00:52:02.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, I strongly recommend that you bookmark this folder if you're using these for something and you always want the latest""" start="00:52:03.580" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, so here this particular, uh latest 29 emacs 29 latest or simply replace the 29 with 30 to get those""" start="00:52:09.980" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh""" start="00:52:18.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""alas""" start="00:52:19.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""No, no such luck for tree setter""" start="00:52:20.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""but if we look at""" start="00:52:23.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""that""" start="00:52:25.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Live this long without making a typo now look at me""" start="00:52:36.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay""" start="00:52:40.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Oh""" start="00:52:44.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So here, um""" start="00:52:51.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You know, we can see the iconification and so on even in the tree sitter folder""" start="00:52:53.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""this is all i'm talking about about the fanciness that's set up by that other script that""" start="00:52:57.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""i'm showing over here and run after each time I run the upload it just""" start="00:53:02.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Looks to see if anything's new and add some lines to the dot htaccess file""" start="00:53:07.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um""" start="00:53:15.900" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'm, particularly proud of this one. I'm not going to lie. Um, linking out to each each""" start="00:53:17.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""project that we're using letting us know the commit version and then""" start="00:53:23.500" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""For the dlls quick link out to the log and the signature file for this dll""" start="00:53:28.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um""" start="00:53:34.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I find that a lot just a lot""" start="00:53:37.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""More readable""" start="00:53:40.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""than uh""" start="00:53:42.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Listing them all out individually and i'd love to do something like that on the new site""" start="00:53:44.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So i'm""" start="00:53:51.180" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I think we've got to be out of time by now. I've just got to say hey, thanks again for having me""" start="00:53:52.220" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh for those that uh watch the talk either live or after the conference""" start="00:53:56.780" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""uh appreciate everyone's support to get me to the point where i'm able to""" start="00:54:02.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh to do this this this cool volunteer task""" start="00:54:06.540" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Uh, which is fun and easy to do and reach out to me if you're interested in helping with it""" start="00:54:10.380" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Well, awesome, thanks a lot for the awesome talk corbin and uh, of course as a fellow core core organizer""" start="00:54:19.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""For our for all that you do, um in and around emacs conf and of course for uh, can we max as well? It's much appreciated""" start="00:54:26.060" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Big big words from coming from you my friend""" start="00:54:36.140" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um, thanks for the kind words""" start="00:54:41.740" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Cheers my pleasure. All right, and with that I think we're gonna uh wrap up the dev track here and we'll be""" start="00:54:45.020" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""With you again shortly in a few minutes on the gen stream the gen track for the closing remarks for today""" start="00:54:52.300" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um only for today because we're gonna be back tomorrow again as well""" start="00:54:58.620" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So don't go anywhere and uh, see you on the gen track in a bit""" start="00:55:02.460" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So""" start="00:55:05.760" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Oh my god, I did it we got done within the time you're my hero""" start="00:55:28.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""um, and thank you so much for just keeping me honest there and uh""" start="00:55:31.840" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Like helping me keep my eye on the time and such""" start="00:55:36.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""You have to look at the recording and see whether you feel like doing it again""" start="00:55:50.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I'm sorry. I had my sound screwed up and i'm sorry if I talked over somebody I couldn't hear anything on mumble until this very""" start="00:55:56.160" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""moment""" start="00:56:01.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Oh, uh because he used your webcam for it, um, like as a like a virtual webcam thingy""" start="00:56:03.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""It was low res especially when things are changing as you were""" start="00:56:09.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""scrolling around""" start="00:56:13.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""So we'll see what kind of recording we can recover from it and then you can decide whether you maybe want to clean it up""" start="00:56:15.120" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""with like""" start="00:56:20.720" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""screenshots and""" start="00:56:22.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I recorded on this end too. We shouldn't have that problem with my recording. Thank you. Thank you. Thank you""" start="00:56:24.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I think we're still live on the dev stream""" start="00:56:29.360" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Someone could uh, thanks. Oh, yes""" start="00:56:34.240" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Because uh, i'll set it to rebroadcast""" start="00:56:38.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Yeah, I I love doing that for the closing remarks that's""" start="00:56:45.520" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""a fine tradition""" start="00:56:49.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Or it's a tradition now because i'm pretty sure this means we've done it twice""" start="00:56:52.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""I""" start="00:56:55.440" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Once heard that, you know, uh as a fan""" start="00:57:02.560" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Meaning like a fannish is a term of endearment for a science fiction fan to another we say we're we're fans or things""" start="00:57:05.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""We do our fannish and a fannish tradition then is if you do it three times, it's tradition""" start="00:57:11.680" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""But um, we're on a budget here. So""" start="00:57:18.000" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Nope""" start="00:57:22.880" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""All right, I think we should um head over to mumble and talk on mumble""" start="00:57:25.920" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Um and decide and see like which big blue button room we're going to be in for closing""" start="00:57:30.080" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Okay, so we're clear on bbb here""" start="00:57:35.200" video="mainVideo-windows" id="subtitle"]]
+[[!template text="""Yep, I think so""" start="00:57:37.760" video="mainVideo-windows" id="subtitle"]]
+
+<a name="windows-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""Oh, wow, how exciting. Well, maybe I should share something then. Um, well, thank you very much and""" start="00:00:00.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""welcome to, uh, uh, welcome to my talk. I'm a little distracted here. I had a friend who came""" start="00:00:06.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""over and just brought me a whole bunch of peanut butter cups, homemade peanut butter cups. Maybe""" start="00:00:14.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""I'll show those off, uh, later. What? Okay. Here, uh, put it right there.""" start="00:00:20.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""Okay. So I'm going to, uh, get over to my plan, uh, stuff I'm sharing here, hopefully.""" start="00:00:33.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""Uh, and, and we'll jump, jump right in because I'm going to need as much time as I can possibly""" start="00:00:42.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""have today. Thanks so much for, uh, joining me for Emacs conference and for, especially for,""" start="00:00:48.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""um, all of you who, who, who participated, you know, in the discussions, contributing talks and,""" start="00:00:56.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""um, you know, uh, you know, including running the, the, the, and it's just so much fun to be here.""" start="00:01:03.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, I guess while I'm standing here and, and saying stuff that's, that I'm going to have to""" start="00:01:09.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""transcribe, cause I didn't, uh, prepare a recorded version. Uh, I had a lot of trouble""" start="00:01:16.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""trimming this down so I can solve that problem by just talking a lot at the beginning, uh,""" start="00:01:23.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""about other stuff. Um, so in addition to the thanks, I just want to say thanks also to the""" start="00:01:28.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""folks on the development list that helped me kind of come up to speed on this. I won't make a big""" start="00:01:37.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""list here, but, um, and, and, and for all that I've learned from my previous conferences, it's""" start="00:01:41.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""just, I can't stress enough what a great opportunity volunteering for, uh, free software related things""" start="00:01:48.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""are, uh, as a way to get involved. People will just totally teach you how to be helpful and I'm""" start="00:01:55.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""loving it. I can preview the stream, but it's not super easy right now. I got all my screens""" start="00:02:00.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""kind of dedicated to other stuff. So should I pause for a second before I get into the slides?""" start="00:02:18.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""Cause that's, they're, they'll be hard to see if I'm not full screen.""" start="00:02:23.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""Yeah, that would be nice. Okay. Well, I'll keep ad libbing then cause I just have a million,""" start="00:02:29.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, things I can say. Um, uh, so, uh, let me just quickly talk, uh, things that aren't in here.""" start="00:02:34.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, I'm going to mention the mysis2.org and the, that project, which provides a port""" start="00:02:42.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""of, uh, the GNU, uh, uh, glibc and a lot of GNU and, uh, uh, their free software. Um, so, uh,""" start="00:02:51.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""I don't...""" start="00:03:03.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right, I'm switching a room to, uh, a DVD room to Stefan.""" start="00:03:03.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right. So I'm going to take mumble out of my, uh, pardon me, folks.""" start="00:03:12.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""It's going to take mumble out of my speakers here.""" start="00:03:16.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""Okay. We'll take the speakers out of play entirely and I'll just switch to some headphones.""" start="00:03:22.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right. So...""" start="00:03:33.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""Perfect. What an amazing amount of time. All right. So thanks a lot. Uh, today I've got a jam""" start="00:03:36.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""packed talk. Um, I've, I've done my best to make, to make this not too overwhelming,""" start="00:03:42.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""but overall we're going to try to try to actually build, um, Emacs while we're talking today.""" start="00:03:48.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""And we might actually build several Emacs. Uh, so let's take a look at that real quick.""" start="00:03:55.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, so over here we have a screen where I am just once a minute looking, uh,""" start="00:04:00.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, indirectly at whether there have been any pushes, uh, upstream to either the Emacs 29 or""" start="00:04:08.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""Emacs 30 branches. So I've arranged for us to sort of keep an eye on that, um, while we talk.""" start="00:04:15.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""And, you know, maybe that's, that's one thing that we'll do. And then additionally, we'll probably""" start="00:04:24.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""fire up a shell. This is the MySys2 environment that I talked about before,""" start="00:04:30.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""and we'll probably create some directories and things. But before we get into all that, let's,""" start="00:04:36.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""let's give some, some context. Uh, I've been doing my best to try to, uh, make sure all this""" start="00:04:42.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""information is on the Emacs wiki as well. So, uh, sorry, as I said, I got a little caught off guard.""" start="00:04:48.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""So I'm moving my foot pedals to the floor, back to the floor here. And I should be able to advance""" start="00:04:54.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""slides here. All right. So, um, I kind of provided some special definitions for things. I'm going to""" start="00:05:02.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""kind of level set with those. The, uh, um, when I say a binary release, I'm talking about some,""" start="00:05:11.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""some, uh, I'm talking about Emacs for Windows as, uh, just ready to run out of its folder or""" start="00:05:21.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""in whatever similar form. The, when I say a build, I'm talking about kind of a process of doing that.""" start="00:05:28.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, when Emacs.get, of course, that's the upstream hosted by GNU Savannah.""" start="00:05:36.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""The Emacs release is, is a tarball created from that. The sources for, um, Emacs are going to be""" start="00:05:41.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""one of those two things, um, very specifically. So I'm not going to talk about patches patching.""" start="00:05:51.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""There's some implications there. Perhaps we'll get into it. Uh, so a snapshot is when I build""" start="00:05:58.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""from anything other than a release source, uh, a tarball. Um, just if I, if I say that I'm talking""" start="00:06:06.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""specifically about the, uh, the XZ version of the file as, as a technical point. Um,""" start="00:06:14.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""so that may come up. All right. Nothing else I think up my sleeve. Um, the, uh, as, as a key""" start="00:06:23.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""data point, it's worth understanding that there's a file called configure AC. It's going to be""" start="00:06:32.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""processed, uh, as part of auto-conf. We, we initially access that when we run, um, auto-gen""" start="00:06:38.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""as you'll see in a little bit. Um, the, but before, but, uh, so the auto-gen script will""" start="00:06:46.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""generally consider this, uh, so in a release build, um, this has been thought about kind of for us as""" start="00:06:52.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""part of, um, making the tarball. Um, the configure.ac, um, yeah, I think I pretty much covered,""" start="00:07:00.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""covered this. So, um, those, those that kind of partially built status, that's a,""" start="00:07:10.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""might be another phrase that you hear me use. So this slide unpacks that a little more.""" start="00:07:16.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, so it can be a little confusing to understand what exactly the, you know, what is it, you know,""" start="00:07:22.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""how stable is Emacs depending on what I have. So the, I got a kind of set of rules of thumb here,""" start="00:07:29.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""right? First I want the highest, uh, you know, dot, uh, dot release value that I can get,""" start="00:07:36.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""assuming that that's higher than one. If it's, if it were to only be one, let's say,""" start="00:07:43.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""if it were to only be one, let's say my choices were 29.1 and 30.1, I would take 30.1. Um,""" start="00:07:50.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""cause that's, that's weird. But, um, what you'll normally see is you might see a 28.2,""" start="00:07:59.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""you might see a 29.1. So here I think 28.2 is got the most, most, most stable, um,""" start="00:08:06.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""set, uh, the, uh, or set of release binaries. The 29.1 will, will have a little more features,""" start="00:08:16.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""but will tend to be more stable than, uh, any, uh, lower point releases for 29, uh, certainly""" start="00:08:26.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""than any release candidates for 29, which might even have new features, um, but are mostly going""" start="00:08:33.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""to just be packages. So they're going to become the most stable thing here. And especially if""" start="00:08:39.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""they, they, they have a, you know, if this, this is not, uh, if this were to be 29.2 release""" start="00:08:46.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""candidate one as well, looking forward to seeing, um, the, uh, 30.50. Um, and, and in between this,""" start="00:08:53.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""this pretest here, we're talking about kind of developer land. Um, so, um, the expectation is""" start="00:09:04.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""that, you know, what you're doing that applies to windows users, uh, just as much if you are""" start="00:09:11.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""building anything in the snapshot range, any of that is going to be in this 30.0.50. Currently""" start="00:09:16.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""that'll change when the, uh, when the 30, 30, uh, an Emacs 30 release tags, uh, or release branches""" start="00:09:22.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""come. Okay. So let's talk about the local. Um, there's not much to know about what I have going""" start="00:09:32.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""on, except that I have my, my paths mess messed with. So, um, if, if that, that were to come up,""" start="00:09:42.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""if you're wondering how, why does this, uh, and insist command work, that's probably the place""" start="00:09:51.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""where you'd notice it. Uh, I am using windows 10. I haven't tried windows 11, uh, as mentioned,""" start="00:09:57.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""mysis2 is critical to all this. There's one script in particular that will error out if you try to do""" start="00:10:03.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""anything other than use mysis's, mysis's shell. And in fact, mysis owns or provides three shells""" start="00:10:09.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""and of them, that script is designed to work with a specific one of them as, as we'll come to.""" start="00:10:16.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""Uh, I don't talk about installing the dependencies, but just as, as kind of some kind of help,""" start="00:10:22.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""um, you can search using this formula and install, uh, using this formula.""" start="00:10:29.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""Good luck with those, you know, grep commands.""" start="00:10:38.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""And this is the tool for building the self-installing self-extracting installer or, uh,""" start="00:10:43.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""executable self-installer. Um, the script for that is provided along with the Emacs source.""" start="00:10:49.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, and I've provided a helpful link to the main page for the project download link on the left.""" start="00:10:56.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""It is not, um, it's kind of scare where the way that this link appears, but I have clicked it and""" start="00:11:03.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""it's working for me. Automation does, uh, we'll, we have some time we'll be looking at this at a""" start="00:11:09.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""minimum. I wanted to mention that what I do on my local, what you're seeing in the crawler, I hope,""" start="00:11:18.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, represents a, uh, a simple sleep loop. Uh, and we'll, we'll look into that if we have time.""" start="00:11:25.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, I do have a little bit, I do use like a cron job and so on to clean up some hosting that,""" start="00:11:36.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""that I pay for, um, where I've got, where I, where I kind of self host some, uh, snapshots,""" start="00:11:42.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""more stuff than I feel comfortable uploading to, uh, to GNU. The, um,""" start="00:11:50.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""you know, I never said, uh, my name is Corwin Brust. For the last couple of years, I've been""" start="00:12:01.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""the volunteer making, uh, um, making the snapshots, the quote unquote, official binaries,""" start="00:12:06.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, for windows of the, um, of, of Emacs for windows. So that's, that's all the different""" start="00:12:12.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""versions. Uh, help is always welcome with that. I'd be very happy to teach you in more depth.""" start="00:12:20.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""This video is, you know, kind of my drop dead file. Uh, I don't have specific plans. Uh, if""" start="00:12:25.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""somebody's like, Hey, get out of the way, this is the one thing I think I can do. Um, Hey,""" start="00:12:31.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""that's real relatable. Okay. Um, so I haven't tried, uh, the, I haven't tried a lot of fun""" start="00:12:36.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""things that I won't talk about. Um, the, uh, the rest of this talk is going to get into the""" start="00:12:44.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""nitty gritty. As I said, um, if we can't convince Emacs to start building over on that screen,""" start="00:12:50.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""we'll be opening it up here on the center stage. Um, uh, this begins and there's, there's, there's,""" start="00:12:56.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""there's great insight here too, on the wiki, uh, with picking an FTP source for any official""" start="00:13:05.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""release that is for a stable product, please visit, um, ftp.gnu.org. Otherwise you'll want""" start="00:13:11.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""to switch that FTP dot at the beginning to alpha dot and take a pretest, uh, or any snapshot or""" start="00:13:19.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""otherwise, then publish there the, uh, next, uh, you know, I'm gonna, you have some examples in""" start="00:13:27.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""here that assume that you're doing a release bill that you're doing $29 one, but, um, I am glancing""" start="00:13:36.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""out of the, the right side of my face at the chat on the opt-ins. Anybody in there wants to direct""" start="00:13:43.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""me at a particular, um, we can make some other, we can build something else. If you want to see""" start="00:13:51.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""a snapshot build more mentioned that, um, the examples that you're going to see here that I""" start="00:13:57.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""will, without other direction, cut and paste, um, are all, uh, based on the release bill. So,""" start="00:14:03.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""um, so, uh, we'll use the, uh, I mentioned that there are several shells provided by MySys2.""" start="00:14:14.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""The MinGW64 shell is the one that we mostly need. Um, I tested all of this as well with the MinGW32""" start="00:14:22.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""shell. Um, so that, that should work and, and see mix binaries that, that, that work for me.""" start="00:14:33.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""Uh, I, as I mentioned, I don't get into the details of installing all your prerequisites.""" start="00:14:44.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""I found that doing it in a headfirst manner wasn't, uh, wasn't difficult. And I also found""" start="00:14:50.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""that there's a number of tutorials. I didn't want to pick one to link here.""" start="00:14:56.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, there, uh, here, uh, okay. So our general formula for building Emacs, irrespective of""" start="00:15:01.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""Windows, looks like, does the configure script exist if not run autogen? From a Windows build""" start="00:15:10.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""standpoint, this is, if I'm not running a release, release build, call the autogen script.""" start="00:15:19.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""Right. And this would be in the directory where we want to pack this. I'll demonstrate""" start="00:15:27.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""within three minutes if, uh, if one, if nobody's pushed upstream to Emacs. Um, so, uh, the configure,""" start="00:15:32.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, and, uh, configure options are, uh, uh, the, the configure, you know, if the configure, sorry,""" start="00:15:42.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""the configure script exists, then, uh, it doesn't, doesn't exist. So the only reason,""" start="00:15:54.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""so in my process, I will always execute that step because I clean everything after every build,""" start="00:16:01.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""um, in all my contexts. Um, however, if you were, you know, had a, a checkout of emacs.get""" start="00:16:07.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""and you are building it at several releases, then maybe you've got a configure script and then you""" start="00:16:16.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""all want to know, um, the, you know, whether you have to bootstrap and the typical complexities,""" start="00:16:21.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""but otherwise you might be able to skip that in, in, in the abstract. Um,""" start="00:16:27.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""is that right? Or is it, is it the make, uh, so, and if they make file doesn't exist,""" start="00:16:36.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""make install. I know I'm looking at that in question whether it's correct. Sorry about that.""" start="00:16:41.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, in any case, uh, so auto-gen configure make install is our recipe. Auto-gen creates the""" start="00:16:46.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""configure script, configure creates the make file, the make file. Um, in the case of windows,""" start="00:16:55.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""I almost always want the install, uh, and to specify some location where the installed emacs""" start="00:17:01.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""will land. This is where all of the recipes for packaging emacs go. And if I were, uh, you know,""" start="00:17:08.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""using this as a movie to upgrade, I personally would do that by, by specifying an install path,""" start="00:17:19.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""quote unquote, on top of, uh, a main installation. I don't do that. I update shortcuts mainly based""" start="00:17:24.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""on what specifically I want to try, uh, in an effort to, to, to, to notice, uh, interesting""" start="00:17:31.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""patches and confirm they work on windows, which mostly they do. There's not a lot of code in my""" start="00:17:37.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""experience that is, uh, windows specific and very, very little around the build process.""" start="00:17:44.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right. Huge rabbit hole zone. And I still have a minute before I have to, uh, kick off""" start="00:17:50.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""the first part of our demo. So let's, let's keep, keep diving in, um, the, those specific part""" start="00:17:57.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""windows specific parts beside the dot exe extension that we're going to find slammed""" start="00:18:07.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""onto all of our familiar, uh, executables. We're also going to have emacs client W,""" start="00:18:11.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""which is a wrapper that hides, um, how hard it is to get, uh, to, to, to get it,""" start="00:18:18.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""how bad the abstraction is between the window management layer and the GUI,""" start="00:18:27.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""and then all the different parts on windows. Essentially, it wants to create a shell window.""" start="00:18:32.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""If we just double click emacs dot exe. So emacs client W, uh, and run emacs,""" start="00:18:37.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""they're going to solve that problem. Um, uh, wrapping emacs and emacs client respectively.""" start="00:18:42.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""And, um, just, uh, all right. So let's, let's go ahead and do something. I'll, I'm going to""" start="00:18:51.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""take away the ticker here for a minute. And what you're not seeing is off stage. I am killing that""" start="00:19:00.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""so we don't get built in parallel. Um, so, um, so at this point I'm going to open up a shell and""" start="00:19:08.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""I'm going to start talking just a little bit about my local build environment, which we haven't""" start="00:19:19.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""gotten into. In fact, just to make that even easier, let's, um, let's just take a look at it""" start="00:19:24.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""a little bit. Probably the easiest spot is here.""" start="00:19:32.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right. So here we have the familiar windows, my computer interface. I have the G drive and the""" start="00:19:47.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""H drive, four terabyte drives, um, dedicated to my, um, really overblown emacs build process.""" start="00:19:55.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, this just lets me be super lazy. There's no reason you need any massive amount of storage""" start="00:20:08.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""to do any of this. Um, inside here, and now I'll actually switch you back to the other screen.""" start="00:20:14.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, we'll, we'll find,""" start="00:20:23.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""oops, sorry about that. I didn't take the time to label that one. Um, so here you can see""" start="00:20:37.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""the primary output that I'm looking at through this automated process. I come along, I look at""" start="00:20:46.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""the bug reports, or maybe I'm just restarting my computer and choosing what emacs version at random.""" start="00:20:53.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""And then in that case, I look at this modified date and I say, um, my config that I, you know,""" start="00:20:59.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""that I'm playing with right now is all set for emacs 30, or I'm testing the both and I'm""" start="00:21:06.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""relaunching both of these. Right. So for me, that starts by diving into the install folder,""" start="00:21:11.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""going into the bin folder, which looks exactly the way my automation leaves it. I then come in""" start="00:21:16.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""to run the run emacs and I create a shortcut, um, to it. So I'm a keyboard person. So that's""" start="00:21:22.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""usually done like this. And then I just know that the context menu is going to come up in the right""" start="00:21:34.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""place. So I'll come up and, um, possibly change the, change the shortcut, right.""" start="00:21:40.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""If I don't mess with it. Um, so here's where I'll add my minus Q, if that's kind of where""" start="00:21:53.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""my world was at, or it kind of depends on what I'm doing with these, which varies week to week.""" start="00:22:01.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, so restarting my emacs, uh, involves doing the same thing, going to my desktop""" start="00:22:07.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""and where you'll find a number of emac shortcuts and, um, updating the shortcut in the same manner""" start="00:22:12.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""joint actually, maybe we'll just, let's go back there and just show it.""" start="00:22:23.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""So if we look at, for example, my ERC,""" start="00:22:28.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""you can see, it's going to be pointing at one of these clones and then it's going to""" start="00:22:31.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""maybe tell me that I want, it wants to be full screen. Nope, not currently. And then it might,""" start="00:22:39.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, have some stuff in there about auto-loading at config and what""" start="00:22:44.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""connections I'm going to, some commands I've defined to start connections.""" start="00:22:48.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right. And sorry, I got a phone call. I was checking. It wasn't in an org, the org,""" start="00:22:53.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""not the other organizers giving me the hook. So, um, all right. So that's, that's probably""" start="00:22:57.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""enough on the local system. Let's get back to the, to, to building emacs. And now it hopefully makes""" start="00:23:04.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""a certain amount of sense when I say we're going to wander over to the H drive and, and, and, and,""" start="00:23:11.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""hopefully makes a certain amount of sense when I say we're going to wander over to the H drive""" start="00:23:17.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""and recreate the structure that, um, both my process sort of assumes and the scripts you'll""" start="00:23:22.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""find in the admin NT, uh, build disk folder in source used to assume. Those scripts are in need""" start="00:23:31.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""of some love. And in just a little bit, I'll be mentioning a build, uh, a, uh, a, a, a particular""" start="00:23:41.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""bug that you might want to pay attention to if you're interested in making a self-installer.""" start="00:23:49.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right. So, um, we're going to create, uh, an emacs build directory.""" start="00:23:54.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""And we've got a handy git clone stage, git clone command stage for ourself. That would work. Um,""" start="00:24:04.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""do not currently see anybody lobbying for that. So instead we will run the rather faster""" start="00:24:19.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, W get command on Savannah, which is not pasted in here. Nice. Let's see if I can freehand it.""" start="00:24:27.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""Not going to do it. Uh,""" start="00:24:36.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""okay.""" start="00:24:40.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""I beg your pardon. I'm grabbing a URL from the internet.""" start="00:24:52.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""Uh, okay. Yeah, I can, I can honestly, I can freehand it, whatever. Okay. Sorry. I, uh,""" start="00:25:00.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""I didn't have that bookmarked in all handy. Like I thought I did. Um, so we'll just say""" start="00:25:07.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""ftp.gnu.org slash, uh, what is it? Pub emacs, emacs-29.1, uh, .org.gnu.org.exe.""" start="00:25:13.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""I really think I'd have this command sitting around. It makes me want to scrap the whole""" start="00:25:30.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""demo. I'm not going to lie. Okay. How am I doing? Um, I think at least 15 minutes. Um,""" start="00:25:47.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""but in the command that you were freehanding, should the pub be GNU instead?""" start="00:25:54.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""Oh, thanks. I'm sorry.""" start="00:25:59.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""There we go. Thank you. All right. And then we'll,""" start="00:26:07.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""and I'm not sure I provided commands for this either,""" start="00:26:17.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""but it is trivially easy to do. And while that happens, we'll get to move on a few slides.""" start="00:26:20.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, the configure script I'm not talking about in a lot of detail, but I do want to mention that the""" start="00:26:31.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""GNU binaries are provided with native, uh, compilation enabled. That's the feature that""" start="00:26:38.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""uses gcc lib gcc get on windows. If available, that lib gcc get will be used. Um, but when,""" start="00:26:44.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""but, uh, if, if, uh, emacs has that feature, then it will take by compile, uh, native code and,""" start="00:26:55.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, asynchronously compile that as needed, uh, with the ahead of time feature. We're going to""" start="00:27:03.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""do as much of that ahead of time. And for folks that are consuming the windows binary, the""" start="00:27:10.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""thinking goes that they might not have my assist too. They might not have lib gcc jet. They might""" start="00:27:15.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""be happy that they're enabled in a, you know, a lot of time running emacs on their local environments""" start="00:27:21.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""at all, you know, in a, maybe a lockdown, uh, corporate context. So aside that, um, there's""" start="00:27:30.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""your first glimpse at the configure, um, program that we're going to run in a moment. In fact,""" start="00:27:39.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""I'm going to go as far as putting it on the clipboard. Um, really just looking at this,""" start="00:27:45.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""the AOT flag is the one I'd call attention to, but it's worth understanding that windows doesn't""" start="00:27:52.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""provide a D bus capability. So windows native program isn't going to be able to depend on D""" start="00:27:57.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""bus. We're going to, we're going to explicitly ask that that be left out. I think that's actually""" start="00:28:02.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""optional and it's documentation. I think the configure program is smart enough to know that""" start="00:28:07.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""we don't want D bus on windows. Um, otherwise we tend to compile with things. Um, there there's""" start="00:28:12.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""missing documentation. We could say the, uh, all of the libraries are treated in the way I mentioned""" start="00:28:20.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""in that, um, JPEG support will be available as long as the JPEG is, is available in our environment""" start="00:28:26.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""and configure script certainly notices that, um, the GNU provided binaries are provided with""" start="00:28:34.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""minus O2. And that's also my default personally on windows. Um, however, and I'm going to skip""" start="00:28:40.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""this since I mentioned it, um, mentioned, uh, and, uh, um, so I guess I'll say, um, you can,""" start="00:28:47.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""um, say with the, it's worth knowing that you, if you're not one reason that, that you're building""" start="00:28:59.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""might be because you want to turn off native compilation for whatever reason. If you have""" start="00:29:06.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""low juices, you get, get, but don't want Emacs to use it. Uh, especially as that default looks like""" start="00:29:11.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""it could be changing with Emacs 30. Um, the, uh, the debug configuration, um, this is, this is the,""" start="00:29:16.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, kind of, uh, what, what I'm currently using this on commentary, uh, I've seen on the next""" start="00:29:26.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""development list. Let's check on our checkout and see if we can't get a build running. Um,""" start="00:29:33.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""this is a release build, so I won't be starting with, uh, so we'll start by hopping into its""" start="00:29:45.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""directory and we, um, we have, uh, but not. Okay. So that tells us we're going to run""" start="00:29:51.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""our configure program, but we don't need to run a config IC. So,""" start="00:30:14.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""so let's get that going and, uh,""" start="00:30:31.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""hopefully that's showing through just enough to be fun, not too much to be distracting.""" start="00:30:36.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, the, uh, the unoptimized, uh, uh, um, please report issues. If your Emacs is crashing,""" start="00:30:45.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, to the Emacs development list, not to me personally. Um, although you are of course,""" start="00:30:55.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""welcome to copy me. Um, if you especially I'm subscribed to that list, so I get all the mail.""" start="00:31:01.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""So I don't mind being copied. Uh, and, uh, as well, if you think it's, uh,""" start="00:31:06.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""you know, related to packaging, that actually makes sense or windows related to even, and,""" start="00:31:15.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, it can be tested with an extra snapshot that should be uploaded to the canoe alpha side.""" start="00:31:20.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""I could look at that if I have time. There's with the configure script to make file for""" start="00:31:25.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""Emacs is really, really complicated. If time permits, which I'm now confident it will not,""" start="00:31:32.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""we will look at, uh, make file that I tried writing that, uh, orchestrates this whole""" start="00:31:39.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""process that I'm talking about. Um, as, uh, let's see. So the build, uh, build process,""" start="00:31:44.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""I run my builds with, uh, explosively specifying the max CPU, uh, with minus J, but minus B one""" start="00:31:52.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""to get the full build, uh, full log into your recipes. That is probably the magic thing.""" start="00:32:03.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""Matt, um, shouldn't to understand what, uh,""" start="00:32:09.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""or that, uh, that, that, uh, that I'm glad that I know, uh, as I'm trying to write my automations,""" start="00:32:16.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, the, um, so I call that out here, the binary, uh, releases. Um, okay. So in this section,""" start="00:32:26.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""we're going to start to get into what are all those files. And there's a bug report related to""" start="00:32:36.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""that, but I didn't get into here. So, um, that's kind of to the point about the less said about""" start="00:32:41.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""this, the better, uh, that's my explanation for stepping through some of these slides.""" start="00:32:46.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""Uh, of course we'll share them all, uh, uh, hopefully by the time that this video is published.""" start="00:32:50.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""Oh, I mentioned, um, I may have mentioned already freshly installed, but, uh, fully installed. Uh,""" start="00:32:58.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""the, the, the key distinction here is that, uh, Emacs is distributed in the binary form for Windows""" start="00:33:06.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""with some DLL files that actually come from the mysys2 project. There's an implication there to""" start="00:33:15.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""there's an implication there to GCC that I definitely want to get to it talking about.""" start="00:33:21.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, so freshly installed means we haven't copied those binaries from the mysys2, uh,""" start="00:33:28.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""installation into the Emacs, uh, installation. Uh, and then, uh, when we re-archived that""" start="00:33:35.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""local Emacs installation, that's how we're going to create the full zip.""" start="00:33:45.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""So hopefully that actually is a pretty good summary of what all those files are. Um, but""" start="00:33:48.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""there are readme files, uh, on the FTP that do a pretty good job, um, if you can dig enough to find""" start="00:33:54.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""one and my apologies for, uh, tardiness getting a new version on that posted. Um, the Emacs, uh,""" start="00:34:00.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""so those dependencies, uh, are listed within Emacs itself. And as we'll just talk about in a moment,""" start="00:34:11.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""there's a way, uh, that we can use, we can access that when we collect them in order to meet, uh,""" start="00:34:17.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""the GCC requirement that is essentially to include, um, include the sources for the,""" start="00:34:24.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""for those binaries, the things that were compiled against. Um, the, uh, so, so here we go,""" start="00:34:31.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""we're, we're into the build process. Let's just take a look and see if configure it got done.""" start="00:34:41.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""It sure did. And now we can see a table of, of hopefully good, but good and bad news, um,""" start="00:34:45.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""and potential, um, where we're learning that we're using the pdumper strategy and any number of other""" start="00:34:52.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""things that we might be messing with as our motivation for, for building ourselves on Emacs.""" start="00:34:57.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, again, this table represents, uh, what you'll, what, what, what it looks like for me when I'm""" start="00:35:04.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""building for the GNU distributed binaries. All right. So, um, kind of moving, moving as quickly""" start="00:35:12.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""as I can here. I'm at 40 after, I believe that's the five minute mark. So, um, having just succeeded""" start="00:35:22.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""in, in configuring Emacs, I don't think we're going to build it. Uh, uh, I don't think we're""" start="00:35:31.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""going to actually get to running make install. Um, but I have it sitting here on my keyboard""" start="00:35:37.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""or clipboard, assuming that we will, right? No. Oh, wow. I think I've managed to confuse this.""" start="00:35:43.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""All right. So for me, that looks simply like, uh, make, uh, V equals one install, uh,""" start="00:35:54.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""prefix equals, uh,""" start="00:36:08.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""and we can at least get it kicked off.""" start="00:36:18.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""And that can, that command is just, uh, just is no, no different than I showed on the slide where""" start="00:36:20.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""I, where I gave it, uh, wasn't planning to stop and explain it. I was just planning to paste it.""" start="00:36:27.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""So, so, so again, recapping the rest of the process here and maybe actually making it,""" start="00:36:33.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""if you can believe it or not, through the rest of these slides, um, we, to, to, to create the""" start="00:36:38.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""full set of binaries, we're going to need a no dependent, no depths archive. That's without the""" start="00:36:44.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""mysys2, uh, deal provided DLLs, just the things that we compile as part of making Emacs. Um,""" start="00:36:49.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""the, uh, the build depths zip script is provided with the source distribution is your tool for,""" start="00:37:00.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, meeting the GPL requirements, right? Source as mentioned before,""" start="00:37:07.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""um, there is a second bug that I did, uh, include some more information on in my notes already.""" start="00:37:12.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, that, uh, that gets into the details of this other feature I alluded to.""" start="00:37:19.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, I'll just skip into that. Um, we, we can, with, with, uh, with a, an appropriate version""" start="00:37:26.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""of that, which you may need a patch, uh, to, to have, you can list out the dependencies""" start="00:37:35.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""and, and that version as well. Can consider the dependencies of the Emacs binary versus""" start="00:37:42.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""the hard-coded list you might find, depending on when you look at this file in the source tree.""" start="00:37:47.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""The diff, um, so I also have a hack here that, uh, works around the absolute requirement to""" start="00:37:53.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""run this with the mysys2 and not the minGW64 script. Um, once we've made that zip file that""" start="00:38:01.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""contain that's, that's our installed Emacs without the DLLs provided by mysys2, we'll then unpack""" start="00:38:18.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""the dependencies that were created by that Python script we just talked about from the Emacs source""" start="00:38:25.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""tree. At that point, once those are unpacked, we can now make what's called the full installer,""" start="00:38:30.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""or sometimes I might call it the unqualified installer, because it's just going to be called""" start="00:38:38.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""Emacs29.1.zip. Um, and that, uh, that file, which, which creates the, the, the, the, the,""" start="00:38:42.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""which creates the archive, uh, that, uh, that, that, that file is exactly the same,""" start="00:38:54.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""plus the, uh, the dependencies that we unzipped in the bin folder of the installed Emacs.""" start="00:39:02.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""The, uh, executable self-installer, which I would love to have more time to talk about.""" start="00:39:09.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""I gave a few pointers here on the hard part of running it. Most importantly,""" start="00:39:14.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""if I've installed in any kind of funny looking name, I end up renaming it to like Emacs-29.1""" start="00:39:19.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""or Emacs-29. or 30.0.50 or whatever. And I just renamed that installed Emacs folder.""" start="00:39:26.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""And then I go to the root of wherever I created that, the parent directory above it.""" start="00:39:35.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""And that's where I make my copy of the Emacs NSI, um, the, the NSIS script.""" start="00:39:40.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""And, uh, that's also where I, and then, um, then from that parent directory, I execute,""" start="00:39:47.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, making sys, uh, here. I, as mentioned, um, I, I can get away with this because I have it""" start="00:39:55.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""on my path and it's my recollection. I think I tested this and couldn't reproduce the problem.""" start="00:40:02.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""So I didn't document it here, but I've had some problems with running this""" start="00:40:07.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""when, uh, when NSIS wasn't on my path. The, uh, the, the, the final step here""" start="00:40:11.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""and the last, the GPL requirement is to include all the sources, except when I'm doing a release""" start="00:40:20.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""build, I always do this. Um, and that's the new practice when making Snapchat binaries is to go""" start="00:40:27.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""ahead and include the sources, even though we might have the specific revision number, um,""" start="00:40:34.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""our thinking is we want absolute clarity, um, that, that somebody, uh, can say, okay,""" start="00:40:39.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""this binary did this thing, send me the source for it. I'm going to go take that into my own""" start="00:40:46.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""open source, or yeah, maybe they would, the jerks, um, into my own open source project.""" start="00:40:51.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""And, um, you know, off they go, uh, and that needs to be possible.""" start="00:40:56.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, so, um, beyond that, the rest of this is, is really detailed that you find covered in the GNU""" start="00:41:04.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""maintainers manual. Um, this is the, the current set of Windows binaries that, um, it's busily""" start="00:41:12.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""working on creating a like for like a mirror to behind the scenes here is called a 29.1 underscore""" start="00:41:19.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""two. Um, and I have a lot of automation, uh, available on this site. So at this point,""" start="00:41:29.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""I'm just, I think I'm only a minute, 40 seconds over. I'm gonna invite my, uh, co-organizers""" start="00:41:36.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""back onto the call or any volunteers that want to jump in and anybody, if there's people on the""" start="00:41:45.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""BBB, I'd be happy to take questions. If there aren't, um, I have a screen full of, uh, the""" start="00:41:49.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""automation stuff ready to go as a kind of a second ring in my circus today. So if you're still with""" start="00:41:57.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""me, thanks a lot for joining me. And I really enjoyed this talk. Uh, if this is where we're""" start="00:42:04.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""going to close it out, I don't know where we're at for schedule today. Thanks a lot for a great""" start="00:42:08.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""talk, Corwin. Um, in terms of like schedule, yeah, you went over a little bit for the official,""" start="00:42:14.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""like, um, schedule or time of your talk, but I think, uh, we actually have maybe like six or""" start="00:42:20.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""seven more minutes, um, here on stream for, um, questions and such, if folks have questions,""" start="00:42:26.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""or if you want to like quickly maybe show one or two more things. Um, but I think the hard stuff""" start="00:42:32.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""is about like maybe 10 minutes ish for now. And then we'll have to rush over to, um, uh, for the""" start="00:42:38.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""closing remarks. So, well, that sounds awesome. Okay. So I'm looking at the, the dev chat. Uh,""" start="00:42:43.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""I see a comment on cross-compiling the emacs, but I'm sorry, I'm looking at IRC primarily, but,""" start="00:42:55.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, feel free to jump in if you're on, uh, BBB with me, or, uh, uh, if, if you put something on""" start="00:43:01.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""the pad, I'm sure, uh, we'll see it between the two of us, uh, over here. Okay. So cross-compiling""" start="00:43:08.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""emacs for Serenity. I haven't tried really any cross-compiling. I think that would be very""" start="00:43:16.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""interesting. I would most likely focus on doing exactly what I do on a GNU system, completely""" start="00:43:20.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""ditching. Um, so I guess with my, my remaining time, rather than walking through code, um, for""" start="00:43:28.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""my automation, which can be another talk, if in fact there's an interest in that, um, I want to,""" start="00:43:35.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""I guess, say a couple of words about the non-free operating system that I'm using here. I did my""" start="00:43:42.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""best to use no non-free software other than the, uh, the operating system that is the context for""" start="00:43:48.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""this talk in preparing this talk for you. I personally have a lot more, uh, time and energy,""" start="00:43:58.880" video="qanda-windows" id="subtitle"]]
+[[!template text="""I have to say, invested in proprietary tools for doing a lot of the things that, that go into this.""" start="00:44:07.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""So I really respect the work of people that pull that off. Um, I'm sorry I didn't get my pre-recorded""" start="00:44:15.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""stuff, uh, kind of in order for everybody, but I just want to stress, like, uh, it is all absolutely""" start="00:44:22.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""possible and just hats off to everybody that, that used, uh, entirely free software to get their,""" start="00:44:30.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""get their recordings done in time. Um, and what you did see, unless it was provided by the operating""" start="00:44:36.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""system in my presentation today, was all, uh, free software with the debatable exception of""" start="00:44:43.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""NSYS, which styles itself as open source, maybe for, uh, marketing reasons.""" start="00:44:49.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""Okay, uh, in any case, uh, certainly we can get all that source.""" start="00:44:56.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""Thanks for the note, Corin. It's good to know that, uh, building or, uh, yeah, doing the build of Emacs""" start="00:45:08.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""for Windows on Windows can be done, uh, using only free software. Yeah, absolutely.""" start="00:45:14.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""Probably the right closing note, right? Um, I just, uh, thanks again to the organizers for""" start="00:45:23.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""bearing with me. And like, every time I was like, you guys, I'm terrible at this. They're just like,""" start="00:45:29.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""no, you're doing fine. Keep going. You did a great job live last time. You can do it live,""" start="00:45:33.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""you know, and, and saying all the right things to just, uh, encourage me to come back,""" start="00:45:38.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, this year and every year.""" start="00:45:43.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""Well, as I said before, we were very lucky to have you and the rest of the team, of course,""" start="00:45:49.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""as well. And, um, goes without saying, but all the speakers and the audience, the participants as""" start="00:45:53.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""well. So, um, so, uh, are we, we're still live over here that, you know, you know, me, I'm the""" start="00:45:59.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""Mike Hogg that I am. I can't resist, um, throwing, throwing up another screen here. And, uh, in fact,""" start="00:46:14.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""let's go ahead and go back to our, to our crawler, right? And I'll bring back our build""" start="00:46:22.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""if it finishes and maybe we'll show making the installer as well. Um, uh, but I have the CPU""" start="00:46:32.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""account turned down a little bit here. Uh, note, I didn't specify minus J here. Um, so, uh, over""" start="00:46:40.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""here is my automation. Uh, in case you do want to take a look, I can at least provide the""" start="00:46:49.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""orientation of what you're looking at. Scrape log is probably my first thing I want to show off.""" start="00:46:54.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, it's not beautiful, but this works, uh, pretty well for me to get a sense of something might""" start="00:46:59.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""have changed in terms of how many warnings or errors are happening when I build Emacs. So I""" start="00:47:08.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""have this whole automation going on and I frequently want to answer the question,""" start="00:47:14.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""you know, what's the change rate in, uh, warnings or what have you. So this kind of gives me a count""" start="00:47:19.280" video="qanda-windows" id="subtitle"]]
+[[!template text="""of that. Um, so from there, uh, accrued CI is the script we're watching run in the other pane.""" start="00:47:26.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, we can see it's, uh, just starting to do its thing again.""" start="00:47:37.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""And, uh, the make file I mentioned, this is a top-down rewrite of everything else that I've done.""" start="00:47:48.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""It has some bugs right now. Um, the, uh, the build distribution is the main script that I use for my""" start="00:47:57.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""personal builds. This is what is run by the crude CI script. Uh, it has a fun tie-in to this, uh,""" start="00:48:08.640" video="qanda-windows" id="subtitle"]]
+[[!template text="""web interface here, um, where we can, you don't need the port number when you go to it. That's""" start="00:48:17.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""just if I'm going to post. Um, the, uh, blah, blah, blah, blah, blah. This, this script is""" start="00:48:23.200" video="qanda-windows" id="subtitle"]]
+[[!template text="""really long and complicated and probably needs some diving into, but you can see that, um, one""" start="00:48:33.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""of the complexities I have to deal with is that I'm going to need something in the format of an""" start="00:48:39.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""emacs-version for strategic, um, nsys reasons. So, uh, it takes care of kind of every complexity""" start="00:48:43.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""that I mentioned today in some respects, um, as does the make file. Build release is, um, another""" start="00:48:54.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""fairly useful incarnation of this. This is just focused on the release process, and this does""" start="00:49:03.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""work, uh, for example, to create the, the, the, you know, like, like, well, I could like, uh,""" start="00:49:11.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""for like files as far as I can tell. So what are currently posted for emacs 29.1 and the release""" start="00:49:18.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""candidate. Um, so I'll probably use that next time. And if it's still like, for like, I'll""" start="00:49:25.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""probably post the ones that came from this. Um, uh, building, uh, TreeSitter, I make some DLLs""" start="00:49:32.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""there. If you're looking for hints on how to get going or just simply, uh, a huge long list""" start="00:49:40.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""of Git repositories that make grammars, you can use that is here as well. Um, finally, I mentioned""" start="00:49:47.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""I have a, um, I have a website where I publish my own personal snapshots that I make, uh, that""" start="00:49:55.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""folder full of install directories, but all of the usual GNU style binary distributables, including""" start="00:50:04.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""the source code and the source code for the dependencies. Um, the, uh, so this program is""" start="00:50:11.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""another one of those complicated find commands and therefore potentially the most useful thing""" start="00:50:22.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""in here to take to you. Um, and here I'm deleting, uh, binaries older than 17 years. Uh, everything""" start="00:50:27.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""except the, uh, node apps file and the sources of it you'll find on my website. Currently those""" start="00:50:34.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""indefinitely, I'll probably roll out 120 days or something, um, for those eventually.""" start="00:50:42.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""Oh, uh, I can talk about this one even. Um, the, uh, so here you'll see the two branches that I'm""" start="00:50:53.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""tracking. The job of this script is, uh, this runs on the website. I call it with a, like a remote""" start="00:51:00.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""rsync, uh, type, uh, or an SSA remote, uh, SSH command. Um, and right after the rsync,""" start="00:51:06.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""rsyncing up any new Emacs that I built. And, uh, it's, uh, it's job is to update my fancy""" start="00:51:15.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""directory indexing. So let's look at Corwin's website. Here's my Emacs 29 folder.""" start="00:51:26.080" video="qanda-windows" id="subtitle"]]
+[[!template text="""We have about two more minutes, Corwin. Yeah. It'll take that entire two minutes to, uh,""" start="00:51:37.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""load this directory because I am, because I have not yet ever pruned any of these dang binaries.""" start="00:51:50.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""So every version of, uh, Emacs 29 that I've ever made for myself is probably here. Nice.""" start="00:51:56.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""Uh, I strongly recommend that you bookmark this folder if you're using these for something and""" start="00:52:03.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""you always want the latest. Um, so here, this particular, uh, latest 29, Emacs 29 latest,""" start="00:52:08.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""or simply replace the 29 with 30 to get those. Uh, alas, no, no such luck for TreeSetter.""" start="00:52:14.240" video="qanda-windows" id="subtitle"]]
+[[!template text="""But if we look at, uh, that,""" start="00:52:23.120" video="qanda-windows" id="subtitle"]]
+[[!template text="""live this long without making a typo. Now look at me.""" start="00:52:36.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""Uh-oh. Oh.""" start="00:52:40.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""So here, um, you know, we can see the icon application and so on, even in the TreeSetter""" start="00:52:51.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""folder. This is all I'm talking about, about the fanciness that's set up by that other script that""" start="00:52:56.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""I'm showing over here and run after each time I run the upload. It just""" start="00:53:02.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""looks to see if anything's new and add some lines to the .htaccess file.""" start="00:53:07.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""Um, I'm particularly proud of this one. I'm not going to lie. Um, linking out to each,""" start="00:53:15.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""each, uh, project that we're using, letting us know the commit version,""" start="00:53:22.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""and then, uh, for the DLLs, quick link out to the log and the signature file for this DLL. Um,""" start="00:53:26.560" video="qanda-windows" id="subtitle"]]
+[[!template text="""I find that a lot, just a lot more readable than, uh, listing them all out individually. And I'd""" start="00:53:36.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""love to do something like that on the GNU site. So I'm, I think we've got to be out of time by""" start="00:53:46.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""now. I've just got to say, hey, thanks again for having me, uh, for those that, uh, watch the talk""" start="00:53:53.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""either live or after the conference. Uh, appreciate everyone's support to get me to""" start="00:53:59.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""the point where I will be able to, uh, to do this, this, this cool volunteer task,""" start="00:54:04.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""uh, which is fun and easy to do and reach out to me if you're interested in helping with it.""" start="00:54:10.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""Well, awesome. Thanks a lot for the awesome talk, Corbyn. And, uh, of course, as a fellow""" start="00:54:18.960" video="qanda-windows" id="subtitle"]]
+[[!template text="""core, uh, core organizer, uh, for all, for all that you do, um, in and around Emacs Conf""" start="00:54:24.320" video="qanda-windows" id="subtitle"]]
+[[!template text="""and of course for, uh, GNU Emacs as well, it's much appreciated.""" start="00:54:29.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""Big, big words from coming from you, my friend. Um, thanks for the kind words.""" start="00:54:36.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""Cheers. My pleasure. All right. And with that, I think we're gonna, uh, wrap up the dev, uh,""" start="00:54:45.040" video="qanda-windows" id="subtitle"]]
+[[!template text="""track here and, uh, we'll be with you again shortly in a few minutes on the gen stream,""" start="00:54:49.840" video="qanda-windows" id="subtitle"]]
+[[!template text="""the gen track for the closing remarks for today, um, only for today, because we're going to be""" start="00:54:55.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""back tomorrow again as well. So don't go anywhere and, uh, see you on the gen track in a bit.""" start="00:55:00.400" video="qanda-windows" id="subtitle"]]
+[[!template text="""Oh my God, I did it. We got done within the time. You're my hero. Um, and thank you so""" start="00:55:25.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""much for just keeping me honest there and, uh, like helping me keep my eye on the time and such.""" start="00:55:32.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""You have to look at the recording and see whether you feel like doing it again.""" start="00:55:41.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""I'm sorry. I had my sound screwed up and I'm sorry if I talked over somebody,""" start="00:55:56.160" video="qanda-windows" id="subtitle"]]
+[[!template text="""I couldn't hear anything on mumble until this very moment.""" start="00:55:59.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""Oh, uh, because he's your webcam for it. Um, like as a, like a virtual webcam thingy,""" start="00:56:03.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""it was low res, especially when things are changing as you're scrolling around. So we'll""" start="00:56:09.440" video="qanda-windows" id="subtitle"]]
+[[!template text="""see what kind of recording we can recover from it. And then you can decide whether you maybe""" start="00:56:15.760" video="qanda-windows" id="subtitle"]]
+[[!template text="""want to clean it up with like screenshots. I recorded on this end too. We shouldn't have""" start="00:56:19.920" video="qanda-windows" id="subtitle"]]
+[[!template text="""that problem with my recording. Thank you. Thank you. Thank you. I think we're still live on the""" start="00:56:26.480" video="qanda-windows" id="subtitle"]]
+[[!template text="""dev stream. Someone could, uh, take that off. Oh, yes. Because, uh, I'll, I'll set it to rebroadcast.""" start="00:56:30.720" video="qanda-windows" id="subtitle"]]
+[[!template text="""Yeah. I love doing that for the closing remarks. That's a fine tradition""" start="00:56:45.520" video="qanda-windows" id="subtitle"]]
+[[!template text="""or it's a tradition now. Cause I'm pretty sure this means we've done it twice.""" start="00:56:52.000" video="qanda-windows" id="subtitle"]]
+[[!template text="""I once heard that, you know, uh, as a fan-ish meaning like a fan-ish is a term of endearment""" start="00:57:01.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""for a science fiction fan to another. We say we're, we're fans or things we do are fan-ish and""" start="00:57:07.360" video="qanda-windows" id="subtitle"]]
+[[!template text="""a fan-ish tradition then is if you do it three times, it's tradition, but we're on a budget here.""" start="00:57:12.800" video="qanda-windows" id="subtitle"]]
+[[!template text="""So, all right. I think we should, um, head over to mumble and talk on mumble. Um, and just decide""" start="00:57:19.680" video="qanda-windows" id="subtitle"]]
+[[!template text="""and see like which big blue button room we're going to be in for closing. Okay. So we're clear""" start="00:57:31.600" video="qanda-windows" id="subtitle"]]
+[[!template text="""on BBB here? Yep. I think so.""" start="00:57:36.240" video="qanda-windows" id="subtitle"]]
+
+Questions or comments? Please e-mail [corwin@bru.st](mailto:corwin@bru.st?subject=Comment%20for%20EmacsConf%202023%20windows%3A%20Windows%20into%20Freedom)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/windows-before.md b/2023/info/windows-before.md
new file mode 100644
index 00000000..a3de3379
--- /dev/null
+++ b/2023/info/windows-before.md
@@ -0,0 +1,18 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 58-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="windows-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-windows--windows-into-freedom--corwin-brust--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 57:48 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--main.opus">Download --main.opus (29MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--main.webm">Download --main.webm (80MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/4DeRkvJyKFdCBLWnHtsZW2">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><div>Listen to just the audio:<br /><audio controls preload="none" id="windows-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--answers.opus"></audio></div><div></div><div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--answers.opus">Download --answers.opus (29MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-windows--windows-into-freedom--corwin-brust--answers.vtt">Download --answers.vtt</a> (unedited)</li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/windows-nav.md b/2023/info/windows-nav.md
new file mode 100644
index 00000000..05dc3b17
--- /dev/null
+++ b/2023/info/windows-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/doc">Literate Documentation with Emacs and Org Mode</a>
+Next by track: <a href="/2023/talks/scheme">Bringing joy to Scheme programming</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/woof-nav.md b/2023/info/woof-nav.md
new file mode 100644
index 00000000..35fd3ab8
--- /dev/null
+++ b/2023/info/woof-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/emacsen">The Emacsen family, the design of an Emacs and the importance of Lisp</a>
+Next by track: <a href="/2023/talks/sun-open">Sunday opening remarks</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/world-after.md b/2023/info/world-after.md
new file mode 100644
index 00000000..ce8bdc00
--- /dev/null
+++ b/2023/info/world-after.md
@@ -0,0 +1,381 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="world-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Draw and scribble in GNU Emacs""" start="00:00:00.780" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:00:00.780" video="mainVideo-world" id="subtitle"]]
+[[!template text="""drawing and scribbling in Emacs using SVG.""" start="00:00:02.900" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's start with `canvas-mode`.""" start="00:00:07.167" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will define the width and the height.""" start="00:00:10.067" video="mainVideo-world" id="subtitle"]]
+[[!template text="""The default is polyline,""" start="00:00:17.540" video="mainVideo-world" id="subtitle"]]
+[[!template text="""which means you can scribble anything that you want.""" start="00:00:19.333" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Very handy for taking quick notes.""" start="00:00:23.733" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we will look at""" start="00:00:30.300" video="mainVideo-world" id="subtitle"]]
+[[!template text="""drawing a triangle using some lines.""" start="00:00:32.700" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Okay. Now let's draw a circle.""" start="00:00:46.333" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can use the mouse to adjust""" start="00:00:57.267" video="mainVideo-world" id="subtitle"]]
+[[!template text="""the radius of the circle.""" start="00:00:58.900" video="mainVideo-world" id="subtitle"]]
+[[!template text="""There is some problem with ellipse,""" start="00:01:02.860" video="mainVideo-world" id="subtitle"]]
+[[!template text="""we will look at it at the end of the video.""" start="00:01:04.333" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now let's put up some text,""" start="00:01:07.940" video="mainVideo-world" id="subtitle"]]
+[[!template text="""a typical &quot;Hello World&quot;.""" start="00:01:11.767" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Size, let's do a 20 font size,""" start="00:01:15.067" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and we will use the default font family.""" start="00:01:19.880" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Next, we will look at undoing what we have drawn.""" start="00:01:32.360" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Just press u for deleting the last drawn object.""" start="00:01:37.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""And you can continue pressing""" start="00:01:43.067" video="mainVideo-world" id="subtitle"]]
+[[!template text="""u for consecutive deletions.""" start="00:01:45.800" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can also make a selection of the objects""" start="00:01:51.960" video="mainVideo-world" id="subtitle"]]
+[[!template text="""on the screen using your mouse and then press u.""" start="00:01:54.533" video="mainVideo-world" id="subtitle"]]
+[[!template text="""This will delete all the objects in one go.""" start="00:01:57.700" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we are looking at stroke color.""" start="00:02:02.600" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will use a brown stroke color""" start="00:02:06.660" video="mainVideo-world" id="subtitle"]]
+[[!template text="""for drawing our objects.""" start="00:02:08.633" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Next, let's look at stroke width.""" start="00:02:12.880" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will use a width of 5.""" start="00:02:20.420" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Next, let's fill up the objects with a fill color.""" start="00:02:27.980" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we will look at zoom.""" start="00:02:41.620" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Use the mouse to select a region and zoom.""" start="00:02:47.160" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can also use +, - for zooming in and out.""" start="00:02:50.120" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Press 0 for resetting the zoom.""" start="00:02:54.360" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Next, let's save the file,""" start="00:03:07.133" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and q or Enter for exiting the canvas-mode.""" start="00:03:14.540" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we will open the file in Emacs itself.""" start="00:03:19.667" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can see the file,""" start="00:03:25.220" video="mainVideo-world" id="subtitle"]]
+[[!template text="""you can do Control-c Control-c (`C-c C-c`).""" start="00:03:26.180" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Finally, we look at ellipse.""" start="00:03:32.000" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks!""" start="00:03:44.420" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""SVG Symbols library""" start="00:03:46.400" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will draw""" start="00:03:46.400" video="mainVideo-world" id="subtitle"]]
+[[!template text="""schematics using symbols from SVG library in Emacs.""" start="00:03:48.333" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Press capital L to activate the symbol library""" start="00:03:52.067" video="mainVideo-world" id="subtitle"]]
+[[!template text="""that you can see on the right hand side,""" start="00:03:55.000" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and place the symbol on the canvas.""" start="00:03:57.867" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's add another register to this diagram.""" start="00:04:01.960" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can press capital R to rotate the symbol.""" start="00:04:06.640" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's place it on the canvas.""" start="00:04:11.820" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we will add a voltage source to the circuit.""" start="00:04:17.240" video="mainVideo-world" id="subtitle"]]
+[[!template text="""To connect the symbols,""" start="00:04:31.667" video="mainVideo-world" id="subtitle"]]
+[[!template text="""we will have to use some connecting wires.""" start="00:04:33.180" video="mainVideo-world" id="subtitle"]]
+[[!template text="""For that, press capital W""" start="00:04:36.967" video="mainVideo-world" id="subtitle"]]
+[[!template text="""to activate the connection mode.""" start="00:04:39.467" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Click anywhere on the canvas""" start="00:04:46.920" video="mainVideo-world" id="subtitle"]]
+[[!template text="""to draw intermediate points, and press Esc""" start="00:04:48.567" video="mainVideo-world" id="subtitle"]]
+[[!template text="""to exit that particular connection.""" start="00:04:53.133" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's connect other symbols too.""" start="00:05:00.033" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:05:16.633" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""GNU Emacs: A multimedia editor""" start="00:05:20.140" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:05:20.140" video="mainVideo-world" id="subtitle"]]
+[[!template text="""some basic multimedia editing using Emacs.""" start="00:05:22.167" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's start a media-edit session.""" start="00:05:24.933" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's open a video file.""" start="00:05:27.460" video="mainVideo-world" id="subtitle"]]
+[[!template text="""The left-hand side is your viewer area,""" start="00:05:32.000" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and the right-hand side is your track area.""" start="00:05:34.100" video="mainVideo-world" id="subtitle"]]
+[[!template text="""In the track area, you can use normal Emacs""" start="00:05:36.700" video="mainVideo-world" id="subtitle"]]
+[[!template text="""text editing movements.""" start="00:05:39.667" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now press `C-c r` to refresh the viewer mode""" start="00:05:42.040" video="mainVideo-world" id="subtitle"]]
+[[!template text="""with the exact time frame.""" start="00:05:48.167" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now press SPC to play or pause the video.""" start="00:05:52.767" video="mainVideo-world" id="subtitle"]]
+[[!template text="""This looks like an interesting point in the video,""" start="00:05:59.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""let's track it and split it. Press Enter to do that.""" start="00:06:03.233" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will extract some 10 seconds of this video.""" start="00:06:11.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's use this.""" start="00:06:20.733" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now go here and delete all these lines.""" start="00:06:23.233" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's review our edited clip.""" start="00:06:26.300" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Looks good! Now press e to export the video.""" start="00:06:44.133" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Provide an output file name.""" start="00:06:51.833" video="mainVideo-world" id="subtitle"]]
+[[!template text="""This will use FFmpeg to convert, and you can""" start="00:06:57.560" video="mainVideo-world" id="subtitle"]]
+[[!template text="""output to any file format supported by FFmpeg.""" start="00:07:04.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Okay. Let's open up shell and view this""" start="00:07:16.967" video="mainVideo-world" id="subtitle"]]
+[[!template text="""video file in an external video player.""" start="00:07:21.900" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:07:57.160" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Fill PDF form using GNU Emacs""" start="00:08:03.367" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:08:03.367" video="mainVideo-world" id="subtitle"]]
+[[!template text="""editing a PDF form using GNU Emacs.""" start="00:08:05.567" video="mainVideo-world" id="subtitle"]]
+[[!template text="""To start, we have to enable the annotation.""" start="00:08:09.760" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Then we can use Tab to move forward and Shift+Tab""" start="00:08:13.840" video="mainVideo-world" id="subtitle"]]
+[[!template text="""to move backwards through the fields.""" start="00:08:18.533" video="mainVideo-world" id="subtitle"]]
+[[!template text="""To edit a field, we press e.""" start="00:08:22.480" video="mainVideo-world" id="subtitle"]]
+[[!template text="""So let's edit a text box. We'll call it 'city'.""" start="00:08:25.967" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Next, we will edit a drop-down.""" start="00:08:33.580" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Again, press e, and you get a select.""" start="00:08:35.840" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Use the Minibuffer to select one of the values.""" start="00:08:38.680" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's select 'France'.""" start="00:08:45.833" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now let's edit a radio box.""" start="00:08:48.500" video="mainVideo-world" id="subtitle"]]
+[[!template text="""A checkbox or a radio box can be toggled using t.""" start="00:08:52.180" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can disable…""" start="00:08:55.900" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now let's save the file, `doc-view-save-form`.""" start="00:08:58.660" video="mainVideo-world" id="subtitle"]]
+[[!template text="""It will ask for a file name.""" start="00:09:05.140" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's call it `filled1.pdf`. If the file exists,""" start="00:09:08.360" video="mainVideo-world" id="subtitle"]]
+[[!template text="""it will ask you if you want to overwrite.""" start="00:09:13.400" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now let's verify this new file.""" start="00:09:17.260" video="mainVideo-world" id="subtitle"]]
+[[!template text="""In Firefox, we'll copy this file name, call it filled1.""" start="00:09:21.460" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's verify the values.""" start="00:09:27.160" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You have city, France and Driving License selected.""" start="00:09:29.100" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:09:32.620" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Desktop and window management in GNU Emacs""" start="00:09:34.900" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:09:34.900" video="mainVideo-world" id="subtitle"]]
+[[!template text="""desktop and window management in GNU Emacs.""" start="00:09:37.660" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We'll start with `task-view`.""" start="00:09:40.460" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Top row shows all the desktops,""" start="00:09:47.740" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and rest of the images are the active windows""" start="00:09:50.467" video="mainVideo-world" id="subtitle"]]
+[[!template text="""in that particular desktop.""" start="00:09:54.400" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can tap to select""" start="00:09:59.300" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and double tap to activate a particular window.""" start="00:10:09.160" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can use m to move selected windows""" start="00:10:13.320" video="mainVideo-world" id="subtitle"]]
+[[!template text="""to any of the desktops at the top.""" start="00:10:16.767" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's check the third desktop.""" start="00:10:25.100" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's bring it back to the second desktop.""" start="00:10:29.320" video="mainVideo-world" id="subtitle"]]
+[[!template text="""The best part,""" start="00:10:49.980" video="mainVideo-world" id="subtitle"]]
+[[!template text="""you can select multiple windows""" start="00:10:51.300" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and form a group by pressing g.""" start="00:10:54.800" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Then you can select any of the windows""" start="00:10:59.980" video="mainVideo-world" id="subtitle"]]
+[[!template text="""in this group to activate the complete group.""" start="00:11:04.867" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:11:07.640" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Screen mirroring in GNU Emacs""" start="00:11:10.440" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:11:10.440" video="mainVideo-world" id="subtitle"]]
+[[!template text="""screen mirroring using GNU Emacs.""" start="00:11:12.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Run `wfd`. Select an interface.""" start="00:11:14.280" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now it will scan for all the available devices""" start="00:11:18.780" video="mainVideo-world" id="subtitle"]]
+[[!template text="""for screen mirroring.""" start="00:11:20.967" video="mainVideo-world" id="subtitle"]]
+[[!template text="""I'll select my TV, which is an LG WebOS TV.""" start="00:11:24.800" video="mainVideo-world" id="subtitle"]]
+[[!template text="""If you don't decline, it will start streaming.""" start="00:11:30.400" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's change some buffer to check the visuals.""" start="00:11:38.720" video="mainVideo-world" id="subtitle"]]
+[[!template text="""To terminate the session, just click on quit.""" start="00:11:45.140" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:11:50.220" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Swipe for Text Input in GNU Emacs""" start="00:11:53.033" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Using Sweep to swipe and type &quot;as you like it.&quot;]""" start="00:11:53.033" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Formula Editor in GNU Emacs""" start="00:12:25.533" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Formula Editor]""" start="00:12:25.533" video="mainVideo-world" id="subtitle"]]
+[[!template text="""[Typing fractions in the formula]""" start="00:12:39.900" video="mainVideo-world" id="subtitle"]]
+[[!template text="""[Adding brackets and an exponent]""" start="00:12:45.033" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Transliteration in Emacs""" start="00:12:59.433" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Hindi (Devanagari script) Phonetic typing]""" start="00:12:59.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""[Phonetic typing Gujarati, Bangla, Kannada, and Tamil]""" start="00:13:05.200" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Social Media client - Tumblr, Reddit""" start="00:13:09.433" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Browsing Reddit in Emacs]""" start="00:13:09.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""[Browsing Tumblr in Emacs]""" start="00:13:19.533" video="mainVideo-world" id="subtitle"]]
+[[!template text="""[Browsing X (Twitter) in Emacs]""" start="00:13:29.533" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Comics Builder""" start="00:13:40.000" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Generating comic from a text script]""" start="00:13:40.000" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Matching game""" start="00:13:49.567" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Matching color names with color boxes]""" start="00:13:49.567" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Interactive XPath Builder in GNU Emacs""" start="00:13:59.567" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Running `xpath-builder` on an XML file]""" start="00:13:59.567" video="mainVideo-world" id="subtitle"]]
+[[!template text="""[Filtering `title`, `para`, and `author` from the XML]""" start="00:14:01.833" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Interactive JSON Builder in GNU Emacs""" start="00:14:10.767" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Filtering `father`, `father.name`, `children`""" start="00:14:10.767" video="mainVideo-world" id="subtitle"]]
+[[!template text="""`children[1]` from a JSON using JSON Builder]""" start="00:14:29.200" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""GNU Emacs as a lightweight IDE (CEDET Semantic): Java - Generate getter/setter""" start="00:14:35.233" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:14:35.233" video="mainVideo-world" id="subtitle"]]
+[[!template text="""generating getters and setters in Java using Emacs.""" start="00:14:37.633" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will run `srecode-getset-dialog`.""" start="00:14:41.660" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will get an option to select particular fields,""" start="00:14:46.233" video="mainVideo-world" id="subtitle"]]
+[[!template text="""you can expand and collapse.""" start="00:14:48.767" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can select all or deselect all,""" start="00:14:51.833" video="mainVideo-world" id="subtitle"]]
+[[!template text="""or you can choose any particular getter.""" start="00:14:54.100" video="mainVideo-world" id="subtitle"]]
+[[!template text="""So let's do protected version of this. Here you go.""" start="00:14:56.386" video="mainVideo-world" id="subtitle"]]
+[[!template text="""If you want to generate for other fields,""" start="00:15:02.633" video="mainVideo-world" id="subtitle"]]
+[[!template text="""you can re-run it.""" start="00:15:06.067" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can check the one that you have already""" start="00:15:08.300" video="mainVideo-world" id="subtitle"]]
+[[!template text="""generated is not there.""" start="00:15:11.267" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now select all, and you can see rest of the""" start="00:15:13.100" video="mainVideo-world" id="subtitle"]]
+[[!template text="""getters and setters have been generated.""" start="00:15:22.300" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:15:23.933" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""Generate C header""" start="00:15:26.133" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""[Generating C headers using `srecode-gen-header`]""" start="00:15:26.133" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""C Rename symbols""" start="00:16:11.640" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:16:11.640" video="mainVideo-world" id="subtitle"]]
+[[!template text="""renaming method across multiple files in a project.""" start="00:16:13.833" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's start with `semantic-symref-symbol`.""" start="00:16:17.633" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we have the references.""" start="00:16:24.640" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's use the menu to open all these occurrences.""" start="00:16:26.800" video="mainVideo-world" id="subtitle"]]
+[[!template text="""To rename it, we have to use""" start="00:16:35.400" video="mainVideo-world" id="subtitle"]]
+[[!template text="""&quot;Rename Symbol in Open hits.&quot;""" start="00:16:38.433" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's rename it to underscore 1 (`_1`).""" start="00:16:41.920" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will verify it by compiling the project.""" start="00:16:46.440" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's open the `*Messages*` buffer to see the results""" start="00:16:57.720" video="mainVideo-world" id="subtitle"]]
+[[!template text="""more clearly. No errors.""" start="00:17:00.300" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:17:04.167" video="mainVideo-world" id="subtitle"]]
+
+[[!template new="1" text="""SQL (offline)""" start="00:17:07.640" video="mainVideo-world" id="subtitle"]]
+
+[[!template text="""Hello. In this video, we will look at""" start="00:17:07.640" video="mainVideo-world" id="subtitle"]]
+[[!template text="""SQL editing with Semantic.""" start="00:17:09.733" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will define a schema in this SQL document.""" start="00:17:12.440" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's create a table.""" start="00:17:16.620" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We get already existing tables""" start="00:17:27.000" video="mainVideo-world" id="subtitle"]]
+[[!template text="""in the current document.""" start="00:17:30.267" video="mainVideo-world" id="subtitle"]]
+[[!template text="""It also supports auto-completion of some keywords.""" start="00:17:38.533" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we can do some queries on the tables.""" start="00:17:57.033" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We have `SELECT` as the keyword or the SQL,""" start="00:18:00.900" video="mainVideo-world" id="subtitle"]]
+[[!template text="""so we will select the SQL.""" start="00:18:03.333" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Here we have all the tables existing in this schema.""" start="00:18:06.833" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We can also use an alias for completions.""" start="00:18:13.560" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now let's look at a more complex example.""" start="00:18:25.633" video="mainVideo-world" id="subtitle"]]
+[[!template text="""We will try to do a join on two tables.""" start="00:18:31.267" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's add a `WHERE` clause.""" start="00:18:43.367" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Next, let's do insert.""" start="00:19:06.600" video="mainVideo-world" id="subtitle"]]
+[[!template text="""You can just click on Tab to go to the next field.""" start="00:19:23.333" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Let's fill in the columns.""" start="00:19:27.967" video="mainVideo-world" id="subtitle"]]
+[[!template text="""And do a Tab to go to the values""" start="00:19:30.700" video="mainVideo-world" id="subtitle"]]
+[[!template text="""and add the corresponding values.""" start="00:19:32.667" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Finally, an update.""" start="00:19:37.000" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Now we will try to delete this""" start="00:19:48.033" video="mainVideo-world" id="subtitle"]]
+[[!template text="""with a `WHERE col11 = 4`.""" start="00:20:00.700" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Lastly, let's try dropping the table.""" start="00:20:07.333" video="mainVideo-world" id="subtitle"]]
+[[!template text="""That's all for this video. Thanks.""" start="00:20:16.267" video="mainVideo-world" id="subtitle"]]
+[[!template text="""Slide with the text &quot;Let's Make Computing Personal.&quot;""" start="00:20:21.867" video="mainVideo-world" id="subtitle"]]
+
+
+
+Captioner: bhavin192
+
+<a name="world-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: Okay, folks. Thanks, Anand,""" start="00:00:07.120" video="qanda-world" id="subtitle"]]
+[[!template text="""for the great talk. So here is the live Q&A.""" start="00:00:11.259" video="qanda-world" id="subtitle"]]
+[[!template text="""Hi. Hello. I see questions being posted on""" start="00:00:22.279" video="qanda-world" id="subtitle"]]
+[[!template text="""the pad. Would you like me to read them out""" start="00:00:23.920" video="qanda-world" id="subtitle"]]
+[[!template text="""or would you prefer to read them yourself?""" start="00:00:25.320" video="qanda-world" id="subtitle"]]
+[[!template text="""[Speaker 1]: Okay. I'll try reading it out.""" start="00:00:31.880" video="qanda-world" id="subtitle"]]
+[[!template text="""If there are audio issues,""" start="00:00:33.340" video="qanda-world" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sure, thanks.""" start="00:00:35.420" video="qanda-world" id="subtitle"]]
+[[!template text="""[Speaker 1]: just let me know. A lot of what you showed""" start="00:00:37.360" video="qanda-world" id="subtitle"]]
+[[!template text="""was the type of stuff Emacs didn't do very""" start="00:00:39.960" video="qanda-world" id="subtitle"]]
+[[!template text="""well. This stuff looks like it could be""" start="00:00:43.040" video="qanda-world" id="subtitle"]]
+[[!template text="""useful for using Emacs with a touch screen""" start="00:00:45.020" video="qanda-world" id="subtitle"]]
+[[!template text="""and a tablet. Have you used it for purposes""" start="00:00:46.960" video="qanda-world" id="subtitle"]]
+[[!template text="""like this? No right now it's more proof of""" start="00:00:53.160" video="qanda-world" id="subtitle"]]
+[[!template text="""concept stage so I don't use it more than you""" start="00:00:58.580" video="qanda-world" id="subtitle"]]
+[[!template text="""know just making some demo software.""" start="00:01:03.420" video="qanda-world" id="subtitle"]]
+[[!template text="""The next question is, is there a mode for""" start="00:01:12.100" video="qanda-world" id="subtitle"]]
+[[!template text="""using FFmpeg through Emacs or did you make it""" start="00:01:15.080" video="qanda-world" id="subtitle"]]
+[[!template text="""yourself? Okay so this is something that I""" start="00:01:20.160" video="qanda-world" id="subtitle"]]
+[[!template text="""built. So the base of it is XWidget in Emacs,""" start="00:01:26.800" video="qanda-world" id="subtitle"]]
+[[!template text="""which is already there.""" start="00:01:28.160" video="qanda-world" id="subtitle"]]
+[[!template text="""But then I had to add a few control code for""" start="00:01:35.080" video="qanda-world" id="subtitle"]]
+[[!template text="""controlling VLC. So ffmpeg is like a shell""" start="00:01:42.240" video="qanda-world" id="subtitle"]]
+[[!template text="""command that finally stitches those bits of""" start="00:01:46.840" video="qanda-world" id="subtitle"]]
+[[!template text="""video clips. But what actually plays is VLC,""" start="00:01:51.780" video="qanda-world" id="subtitle"]]
+[[!template text="""and it's not FFmpeg. Hope that's clear.""" start="00:01:55.860" video="qanda-world" id="subtitle"]]
+[[!template text="""The next question is these demos are always""" start="00:02:03.580" video="qanda-world" id="subtitle"]]
+[[!template text="""so impressive. Do you plan to upstream any of""" start="00:02:06.020" video="qanda-world" id="subtitle"]]
+[[!template text="""these projects into Emacs?""" start="00:02:07.040" video="qanda-world" id="subtitle"]]
+[[!template text="""Right now, okay, let me read the complete""" start="00:02:13.940" video="qanda-world" id="subtitle"]]
+[[!template text="""questions. These demos are always so""" start="00:02:16.220" video="qanda-world" id="subtitle"]]
+[[!template text="""impressive. Do you plan to upstream any of""" start="00:02:17.960" video="qanda-world" id="subtitle"]]
+[[!template text="""these projects into Emacs or to publish them""" start="00:02:19.960" video="qanda-world" id="subtitle"]]
+[[!template text="""as, for example, helper packages?""" start="00:02:21.780" video="qanda-world" id="subtitle"]]
+[[!template text="""So right now, as it stands,""" start="00:02:26.480" video="qanda-world" id="subtitle"]]
+[[!template text="""I personally don't intend to do that because""" start="00:02:30.720" video="qanda-world" id="subtitle"]]
+[[!template text="""I don't have that time but I have signed my""" start="00:02:34.900" video="qanda-world" id="subtitle"]]
+[[!template text="""signed assignment copyright assignment so""" start="00:02:38.720" video="qanda-world" id="subtitle"]]
+[[!template text="""anybody has time and motivation to do it they""" start="00:02:41.600" video="qanda-world" id="subtitle"]]
+[[!template text="""can pick up the code and help me with that.""" start="00:02:47.120" video="qanda-world" id="subtitle"]]
+[[!template text="""The next is, how did you make that electronic""" start="00:02:53.200" video="qanda-world" id="subtitle"]]
+[[!template text="""circuit diagram? Is there a mode with the""" start="00:03:00.600" video="qanda-world" id="subtitle"]]
+[[!template text="""symbols already available.""" start="00:03:02.560" video="qanda-world" id="subtitle"]]
+[[!template text="""Okay so electronic circuit diagram is you""" start="00:03:08.240" video="qanda-world" id="subtitle"]]
+[[!template text="""know the canvas mode but and what you see is""" start="00:03:13.340" video="qanda-world" id="subtitle"]]
+[[!template text="""the is an extension of that canvas mode which""" start="00:03:19.540" video="qanda-world" id="subtitle"]]
+[[!template text="""uses a symbol library.""" start="00:03:25.440" video="qanda-world" id="subtitle"]]
+[[!template text="""And so The only difference is you press""" start="00:03:31.980" video="qanda-world" id="subtitle"]]
+[[!template text="""capital L to open up that symbol library.""" start="00:03:34.160" video="qanda-world" id="subtitle"]]
+[[!template text="""In this case, this symbol library happens to""" start="00:03:37.700" video="qanda-world" id="subtitle"]]
+[[!template text="""be just a library of electronic symbols.""" start="00:03:41.380" video="qanda-world" id="subtitle"]]
+[[!template text="""It can be any category of symbols and then""" start="00:03:44.640" video="qanda-world" id="subtitle"]]
+[[!template text="""you and use it to draw on your,""" start="00:03:47.600" video="qanda-world" id="subtitle"]]
+[[!template text="""in the canvas major mode.""" start="00:03:50.640" video="qanda-world" id="subtitle"]]
+[[!template text="""Next question is, I have seen your blog post""" start="00:04:02.240" video="qanda-world" id="subtitle"]]
+[[!template text="""with some of these features But can you link""" start="00:04:04.700" video="qanda-world" id="subtitle"]]
+[[!template text="""to the repo where you are doing the""" start="00:04:06.280" video="qanda-world" id="subtitle"]]
+[[!template text="""development for these packages?""" start="00:04:07.940" video="qanda-world" id="subtitle"]]
+[[!template text="""Sure, I can do that Most of these are""" start="00:04:18.899" video="qanda-world" id="subtitle"]]
+[[!template text="""available on my blogs.""" start="00:04:20.279" video="qanda-world" id="subtitle"]]
+[[!template text="""Typically the Reddit post always has a link""" start="00:04:26.200" video="qanda-world" id="subtitle"]]
+[[!template text="""to my blog. But I'll post it in this 1 as""" start="00:04:31.480" video="qanda-world" id="subtitle"]]
+[[!template text="""well.""" start="00:04:31.680" video="qanda-world" id="subtitle"]]
+[[!template text="""[Speaker 0]: I'll quickly note that we have about 4 more""" start="00:04:48.480" video="qanda-world" id="subtitle"]]
+[[!template text="""minutes of live Q&A, but if folks have more""" start="00:04:52.540" video="qanda-world" id="subtitle"]]
+[[!template text="""questions, they're welcome to either continue""" start="00:04:55.320" video="qanda-world" id="subtitle"]]
+[[!template text="""asking on the pad or come join us here on Big""" start="00:04:59.060" video="qanda-world" id="subtitle"]]
+[[!template text="""Blue Button and continue chatting once the""" start="00:05:02.080" video="qanda-world" id="subtitle"]]
+[[!template text="""stream moves on to the next talk.""" start="00:05:03.440" video="qanda-world" id="subtitle"]]
+[[!template text="""Thank you.""" start="00:05:03.940" video="qanda-world" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yes, so here's the link.""" start="00:05:13.360" video="qanda-world" id="subtitle"]]
+[[!template text="""And so right now, all of my development goes""" start="00:05:23.240" video="qanda-world" id="subtitle"]]
+[[!template text="""into a single development branch in this""" start="00:05:26.360" video="qanda-world" id="subtitle"]]
+[[!template text="""repository. But depending on the feature that""" start="00:05:28.940" video="qanda-world" id="subtitle"]]
+[[!template text="""you're looking at, you can look at that""" start="00:05:31.500" video="qanda-world" id="subtitle"]]
+[[!template text="""particular post and that post will have a""" start="00:05:33.820" video="qanda-world" id="subtitle"]]
+[[!template text="""link to the specific files that include the""" start="00:05:37.120" video="qanda-world" id="subtitle"]]
+[[!template text="""changes.""" start="00:05:37.320" video="qanda-world" id="subtitle"]]
+[[!template text="""Okay, there's a feedback.""" start="00:06:24.236" video="qanda-world" id="subtitle"]]
+[[!template text="""Thank you for showing so many new""" start="00:06:26.520" video="qanda-world" id="subtitle"]]
+[[!template text="""possibilities with Emacs.""" start="00:06:27.500" video="qanda-world" id="subtitle"]]
+[[!template text="""I'm glad you like those possibilities.""" start="00:06:30.960" video="qanda-world" id="subtitle"]]
+[[!template text="""And hopefully, you know,""" start="00:06:32.540" video="qanda-world" id="subtitle"]]
+[[!template text="""with Emacs, the possibilities are really""" start="00:06:34.540" video="qanda-world" id="subtitle"]]
+[[!template text="""endless. So I really encourage more people to""" start="00:06:38.480" video="qanda-world" id="subtitle"]]
+[[!template text="""explore it and, you know,""" start="00:06:41.120" video="qanda-world" id="subtitle"]]
+[[!template text="""try things that people have so far only been""" start="00:06:49.280" video="qanda-world" id="subtitle"]]
+[[!template text="""using other applications for.""" start="00:06:52.160" video="qanda-world" id="subtitle"]]
+[[!template text="""The next question is coming up.""" start="00:06:59.580" video="qanda-world" id="subtitle"]]
+[[!template text="""Okay, the PDF form filling is especially""" start="00:07:07.540" video="qanda-world" id="subtitle"]]
+[[!template text="""interesting. I would love to do my taxes in""" start="00:07:10.200" video="qanda-world" id="subtitle"]]
+[[!template text="""Emacs. Yes, In most cases you should be able""" start="00:07:16.400" video="qanda-world" id="subtitle"]]
+[[!template text="""to do it unless there are a lot of JavaScript""" start="00:07:18.900" video="qanda-world" id="subtitle"]]
+[[!template text="""involved with the PDF.""" start="00:07:20.500" video="qanda-world" id="subtitle"]]
+[[!template text="""For a simple form, you should be able to do""" start="00:07:24.800" video="qanda-world" id="subtitle"]]
+[[!template text="""it.""" start="00:07:24.960" video="qanda-world" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, we have about 1 minute remaining on the""" start="00:08:19.480" video="qanda-world" id="subtitle"]]
+[[!template text="""live stream. If folks have any other""" start="00:08:21.660" video="qanda-world" id="subtitle"]]
+[[!template text="""questions, please do continue posting on the""" start="00:08:24.960" video="qanda-world" id="subtitle"]]
+[[!template text="""pad or come and join BigBlueButton with an""" start="00:08:27.540" video="qanda-world" id="subtitle"]]
+[[!template text="""ad. And thanks again, Adam,""" start="00:08:28.940" video="qanda-world" id="subtitle"]]
+[[!template text="""for a great talk and for the discussions and""" start="00:08:30.880" video="qanda-world" id="subtitle"]]
+[[!template text="""questions and answers.""" start="00:08:31.560" video="qanda-world" id="subtitle"]]
+[[!template text="""[Speaker 1]: Great, thanks.""" start="00:08:36.100" video="qanda-world" id="subtitle"]]
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20world%3A%20GNU%20Emacs%3A%20A%20World%20of%20Possibilities)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/world-before.md b/2023/info/world-before.md
new file mode 100644
index 00000000..3b34d3bb
--- /dev/null
+++ b/2023/info/world-before.md
@@ -0,0 +1,32 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 21-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+<div class="vid"><video controls preload="none" id="world-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="world-mainVideo" data="""
+00:00:00.780 Draw and scribble in GNU Emacs
+03:46.400 SVG Symbols library
+05:20.140 GNU Emacs: A multimedia editor
+08:03.367 Fill PDF form using GNU Emacs
+09:34.900 Desktop and window management in GNU Emacs
+11:10.440 Screen mirroring in GNU Emacs
+11:53.033 Swipe for Text Input in GNU Emacs
+12:25.533 Formula Editor in GNU Emacs
+12:59.433 Transliteration in Emacs
+13:09.433 Social Media client - Tumblr, Reddit
+13:40.000 Comics Builder
+13:49.567 Matching game
+13:59.567 Interactive XPath Builder in GNU Emacs
+14:10.767 Interactive JSON Builder in GNU Emacs
+14:35.233 GNU Emacs as a lightweight IDE (CEDET Semantic): Java - Generate getter/setter
+15:26.133 Generate C header
+16:11.640 C Rename symbols
+17:07.640 SQL (offline)
+
+"""]]<div></div>Duration: 20:31 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.opus">Download --main.opus (9.3MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.webm">Download --main.webm (66MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/jFaSuNYt2FqibtcAvmVdbF">View on Toobnix</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/world-nav.md b/2023/info/world-nav.md
new file mode 100644
index 00000000..0c9d9fb1
--- /dev/null
+++ b/2023/info/world-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/scheme">Bringing joy to Scheme programming</a>
+Next by track: <a href="/2023/talks/flat">A modern Emacs look-and-feel without pain</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2023/info/writing-after.md b/2023/info/writing-after.md
new file mode 100644
index 00000000..1523f77d
--- /dev/null
+++ b/2023/info/writing-after.md
@@ -0,0 +1,520 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<a name="writing-mainVideo-transcript"></a>
+# Transcript
+
+
+[[!template new="1" text="""Intro""" start="00:00:00.000" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""Hello everyone, I'm Jeremy Friesen, pronouns he/him,""" start="00:00:00.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and today I'll be talking about""" start="00:00:04.560" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""how Emacs turbocharges my writing.""" start="00:00:05.880" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Quick intro: I've been programming since 1998""" start="00:00:08.600" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and blogging since 2011.""" start="00:00:11.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""In May of 2020 I switched to Emacs,""" start="00:00:14.080" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""having previously used a long list of different editors.""" start="00:00:16.640" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Curious about how Emacs impacted my writing,""" start="00:00:19.920" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I wrote some stuff on my personal site and""" start="00:00:23.040" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""found that I blogged about 95 words per day prior to Emacs,""" start="00:00:25.560" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and with Emacs I'm blogging about 340.""" start="00:00:30.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Now, this is not a fair comparison, many things changed.""" start="00:00:33.720" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""A pandemic removed 2 hours of commute every day""" start="00:00:37.960" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""as a big contributor.""" start="00:00:40.920" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Ultimately though, I've used Emacs and extended it""" start="00:00:44.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""to reduce barriers to capturing and writing and thinking,""" start="00:00:47.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and I'm always on the lookout for minor refinements""" start="00:00:50.320" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""that help me stay in my thinking.""" start="00:00:53.320" video="mainVideo-writing" id="subtitle"]]
+
+[[!template new="1" text="""How I got here""" start="00:00:57.120" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""How I got here was I started in WordPress,""" start="00:00:57.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""then I moved to Jekyll, and then to Hugo,""" start="00:00:59.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and through that process I started writing in Markdown.""" start="00:01:02.600" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And when I was learning Emacs,""" start="00:01:05.440" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I also didn't want to learn Org Mode,""" start="00:01:07.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""it felt intimidating because it could do so many things.""" start="00:01:09.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I later learned Org Mode grows with you,""" start="00:01:12.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and that's where I'm at now.""" start="00:01:15.520" video="mainVideo-writing" id="subtitle"]]
+
+[[!template new="1" text="""Friction""" start="00:01:18.400" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""But I didn't realize that friction""" start="00:01:18.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""between writing Markdown for my public blog""" start="00:01:20.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and then adopting Org Mode locally""" start="00:01:23.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""for writing and time tracking and things like that.""" start="00:01:25.480" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And also, where did I put things,""" start="00:01:28.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""because migrating the formats was just a little clunky.""" start="00:01:31.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So ultimately I spent some time thinking about the data flow""" start="00:01:35.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and where I would put things,""" start="00:01:38.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""this kind of pre-thinking,""" start="00:01:39.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""where does stuff go when it comes into and out of my brain.""" start="00:01:41.040" video="mainVideo-writing" id="subtitle"]]
+
+[[!template new="1" text="""Domains for notes""" start="00:01:45.960" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""So I have many domains where I'll write towards.""" start="00:01:45.960" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""The ones for this presentation are going to be""" start="00:01:49.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""blog posts, epigraphs, glossary, and melange.""" start="00:01:51.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Melange is, I don't know where it goes,""" start="00:01:54.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""but now I do, I just throw it in melange.""" start="00:01:56.320" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So I began exploring Org Mode via Org Roam,""" start="00:02:01.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""but I've ultimately switched from Org Roam""" start="00:02:04.480" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""to the simplified Denote package.""" start="00:02:07.560" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I didn't use a lot of the functionality""" start="00:02:10.640" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and I appreciate the plain text reality of Denote.""" start="00:02:13.200" video="mainVideo-writing" id="subtitle"]]
+
+[[!template new="1" text="""Demo""" start="00:02:15.920" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""So let's hop into the demo.""" start="00:02:15.920" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'm going to split my screen.""" start="00:02:18.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Over on the right is going to be""" start="00:02:19.920" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""where I'm going to be live typing stuff.""" start="00:02:21.960" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So let's get going.""" start="00:02:24.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""You'll notice I don't do a lot of screen splitting.""" start="00:02:27.320" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""It just makes it easier to focus.""" start="00:02:29.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So let's create a note.""" start="00:02:32.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""All right, I have bound hyper to my command key,""" start="00:02:34.040" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""my right command key.""" start="00:02:41.280" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""This opens up a whole world.""" start="00:02:42.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'm going to create a blog post""" start="00:02:43.680" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and we're going to name it the ever popular &quot;hello world&quot;.""" start="00:02:45.560" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""It's Emacs.""" start="00:02:49.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Great.""" start="00:02:50.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""We've saved it.""" start="00:02:51.520" video="mainVideo-writing" id="subtitle"]]
+
+[[!template new="1" text="""Dabbrev and hippie-expand""" start="00:02:55.440" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""One of the things I encourage everybody to do""" start="00:02:55.440" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""is to watch Jay Dixit's presentation, Emacs for Writers.""" start="00:02:57.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""It showed me the utility of Dabbrev for quick auto correction.""" start="00:03:02.040" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I also love using hippie-expand.""" start="00:03:08.080" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""When I watch VS coders code, it's always a little sad pants""" start="00:03:11.480" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""because they're thinking about coding or writing""" start="00:03:14.640" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""in terms of their code.""" start="00:03:17.320" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""But I have found as a programmer, I tend to write more tech,""" start="00:03:19.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""more like English instead of programming code.""" start="00:03:24.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So I think it's important to understand these tools""" start="00:03:27.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""that help me write better.""" start="00:03:30.720" video="mainVideo-writing" id="subtitle"]]
+
+[[!template new="1" text="""Links""" start="00:03:32.840" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""All right, we're going to go with links.""" start="00:03:32.840" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Links are foundational for the web.""" start="00:03:34.880" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'm going to insert a public link,""" start="00:03:37.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""which is a role playing game that I love,""" start="00:03:41.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Worlds Without Number.""" start="00:03:43.440" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I'm going to go ahead and describe it.""" start="00:03:45.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""A role playing game.""" start="00:03:48.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""But I don't want to always say role playing game.""" start="00:03:49.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'm going to abbreviate it.""" start="00:03:53.480" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So I wrote a function that will transform it.""" start="00:03:54.600" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And let's take a look at what that looks like on the inside.""" start="00:03:57.080" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""When I do this real quick, it's toggling it back and forth.""" start="00:04:00.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I'll just keep doing that.""" start="00:04:06.280" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I also have the idea of public notes and private notes.""" start="00:04:10.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Public is things that's going to have a URL.""" start="00:04:13.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I met a person at a conference.""" start="00:04:15.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""He gave a talk on something that I thought was very useful.""" start="00:04:16.880" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I didn't write down what he talked about on his note.""" start="00:04:19.640" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I wrote it where it was more relevant to the topic.""" start="00:04:23.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I can use a backlink to go find that.""" start="00:04:26.280" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Next up, I demonstrate the abbreviation.""" start="00:04:31.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I also have dates.""" start="00:04:34.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""This is a semantic date in HTML5.""" start="00:04:35.840" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I can just have the year.""" start="00:04:38.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I can also just have something like that date is today.""" start="00:04:41.840" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And we have date links.""" start="00:04:48.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I don't have backlinks built up for that,""" start="00:04:52.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""but I have ideas of how I go about doing it.""" start="00:04:54.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And last up, thank you Frank Herbert,""" start="00:04:56.960" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I want to introduce epigraphs.""" start="00:04:58.760" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So this is epigraph.""" start="00:05:00.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I just have that, any sufficiently, dot, dot, dot.""" start="00:05:04.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And that's my epigraph.""" start="00:05:08.720" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Backlinks, I mentioned that.""" start="00:05:10.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Let's go take a look at Jonathan, right?""" start="00:05:16.720" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""He's a Rubyist, but importantly is the backlinks.""" start="00:05:19.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""He gave a talk on, that's right, PDFs.""" start="00:05:23.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I can go look at what he spoke to""" start="00:05:27.320" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and I can reference that because I will remember""" start="00:05:28.960" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""that talk or I will remember, oh, I need to look up PDFs.""" start="00:05:31.880" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Oh, I have something in PDFs.""" start="00:05:36.680" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Again, it's about stumbling upon data in a good way.""" start="00:05:39.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So thinking of making linking easy helps me""" start="00:05:43.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""create more and more ways to find things,""" start="00:05:48.320" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""both by links, backlinks, indices, file searches, and so forth.""" start="00:05:52.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""It's all about information organization.""" start="00:05:57.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Next up is a really cool function of org capture.""" start="00:05:59.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So let's take a look here.""" start="00:06:04.880" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'm going to start a clock.""" start="00:06:06.680" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""It's running.""" start="00:06:08.040" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I'm going to bring up my browser.""" start="00:06:09.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I'm going to go ahead and capture to the content to clock.""" start="00:06:11.480" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And it brings up this block quote, which is lovely.""" start="00:06:19.680" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And boom, I'm going to save it.""" start="00:06:23.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'm going to close this.""" start="00:06:25.720" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""We're back here to my &quot;hello world&quot;.""" start="00:06:28.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And it has grabbed a block quote for this.""" start="00:06:30.960" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Again, it helps me gather stuff up quickly.""" start="00:06:33.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I've bound that also in my RSS feed.""" start="00:06:38.040" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""We're going to skip over macros, blocks, and the abstract.""" start="00:06:41.120" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And we're going to get into the export""" start="00:06:44.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""because this is where we can see the magic""" start="00:06:45.480" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""that happens because I want to take things""" start="00:06:47.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""from private to public.""" start="00:06:49.600" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So I have bound a key.""" start="00:06:51.080" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""These are my menu of things I don't want to forget.""" start="00:06:53.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I will export.""" start="00:06:55.560" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And here we go.""" start="00:06:56.760" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Here is my blog post in markdown format with Hugo shortcodes.""" start="00:06:57.840" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So let's go take a look at what that looks like.""" start="00:07:04.960" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Localhost.""" start="00:07:07.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'm not writing in Rails.""" start="00:07:09.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""&quot;Hello world&quot; right there.""" start="00:07:12.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""This is the epigraph.""" start="00:07:14.920" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I have a mention of Worlds without Number.""" start="00:07:17.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I have mentioned this as a abbreviation.""" start="00:07:22.280" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So I include the first time this text.""" start="00:07:24.800" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Here's also Jonathan.""" start="00:07:27.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""He is not a public reference thing.""" start="00:07:30.200" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Also, I have these things here.""" start="00:07:33.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And here's my captured information""" start="00:07:37.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""along with the citation link to it.""" start="00:07:39.400" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""Again, helpful to be consistent.""" start="00:07:42.600" video="mainVideo-writing" id="subtitle"]]
+
+[[!template new="1" text="""Conclusion""" start="00:07:49.160" video="mainVideo-writing" id="subtitle"]]
+
+[[!template text="""In conclusion, when I started learning Emacs,""" start="00:07:49.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I quickly shifted to vanilla Emacs and just started writing.""" start="00:07:52.280" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""As I wrote, when I needed to do something that I'd previously""" start="00:07:55.880" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""done in a text editor, I'd find an experiment with a package.""" start="00:07:59.520" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I continue that mindset.""" start="00:08:03.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""As I write, I'm attending to what I'm doing.""" start="00:08:04.680" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And eventually, I realize if I were to just write""" start="00:08:06.840" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""a function that does this one thing,""" start="00:08:08.880" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'd have a smoother writing experience.""" start="00:08:11.640" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""This helps me practice my craft, extend my editor,""" start="00:08:13.560" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""understand its capabilities, and begin exploring other things.""" start="00:08:16.360" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""The goal of this is all to minimize the distractions.""" start="00:08:20.000" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""As I'm thinking about it, I wanted to quickly add it""" start="00:08:23.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""and then move along,""" start="00:08:25.760" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""basically creating breadcrumbs for me""" start="00:08:27.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""to follow my thoughts in the future.""" start="00:08:29.560" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And one of those functions is""" start="00:08:31.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""I'd like to write an extender for my abbr,""" start="00:08:33.160" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""abbreviation export to work in Latex.""" start="00:08:36.480" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""It's like halfway there.""" start="00:08:38.680" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""So I'm looking forward to getting that done""" start="00:08:40.280" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""when I have some time and can prioritize it.""" start="00:08:42.240" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""But for now, thank you.""" start="00:08:45.440" video="mainVideo-writing" id="subtitle"]]
+[[!template text="""And I look forward to your questions.""" start="00:08:47.800" video="mainVideo-writing" id="subtitle"]]
+
+
+
+Captioner: bala
+
+<a name="writing-qanda-transcript"></a>
+# Q&A transcript (unedited)
+
+[[!template text="""[Speaker 0]: All right, I've started the recording,""" start="00:00:00.060" video="qanda-writing" id="subtitle"]]
+[[!template text="""so Sasha, you don't need to worry about this.""" start="00:00:01.400" video="qanda-writing" id="subtitle"]]
+[[!template text="""Hi Jeremy, how are you doing?""" start="00:00:03.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: I'm doing great, how about you?""" start="00:00:04.779" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: I am also doing great,""" start="00:00:08.039" video="qanda-writing" id="subtitle"]]
+[[!template text="""I am feeling replenished after this lunch""" start="00:00:09.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""break and I am happy to go back for 4 more""" start="00:00:11.780" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Me too. Let me""" start="00:00:15.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: hours of conferences. just,""" start="00:00:14.179" video="qanda-writing" id="subtitle"]]
+[[!template text="""yeah great, Let me just put up the questions.""" start="00:00:17.303" video="qanda-writing" id="subtitle"]]
+[[!template text="""So Jeremy is going to read the questions and""" start="00:00:20.660" video="qanda-writing" id="subtitle"]]
+[[!template text="""answer them and I will be doing jazz hands in""" start="00:00:22.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""the background or provide any bits of""" start="00:00:24.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""information I may, considering that Orgrim""" start="00:00:26.599" video="qanda-writing" id="subtitle"]]
+[[!template text="""has been mentioned during the presentation""" start="00:00:28.860" video="qanda-writing" id="subtitle"]]
+[[!template text="""and everyone's going to want to ask me.""" start="00:00:30.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""at... Show me? Yeah, go.""" start="00:00:35.640" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: So I'm looking I'm looking at the,""" start="00:00:35.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""do you think the line numbers for writing""" start="00:00:39.280" video="qanda-writing" id="subtitle"]]
+[[!template text="""documents is kind of a distraction,""" start="00:00:41.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""especially for notes? No,""" start="00:00:43.260" video="qanda-writing" id="subtitle"]]
+[[!template text="""I do software development and that left""" start="00:00:47.860" video="qanda-writing" id="subtitle"]]
+[[!template text="""fringe is kind of invisible,""" start="00:00:51.180" video="qanda-writing" id="subtitle"]]
+[[!template text="""but I do like to use jump to line.""" start="00:00:53.680" video="qanda-writing" id="subtitle"]]
+[[!template text="""So I just bind that to control L and it's""" start="00:00:56.320" video="qanda-writing" id="subtitle"]]
+[[!template text="""helpful to just see that.""" start="00:00:59.580" video="qanda-writing" id="subtitle"]]
+[[!template text="""So no, I haven't noticed that.""" start="00:01:02.980" video="qanda-writing" id="subtitle"]]
+[[!template text="""There are other ways to jump around in Emacs,""" start="00:01:05.500" video="qanda-writing" id="subtitle"]]
+[[!template text="""but I like to have many different ways.""" start="00:01:07.540" video="qanda-writing" id="subtitle"]]
+[[!template text="""So, yeah. Then how do you manage private and""" start="00:01:11.000" video="qanda-writing" id="subtitle"]]
+[[!template text="""public data with your Zettelkasten?""" start="00:01:17.120" video="qanda-writing" id="subtitle"]]
+[[!template text="""1 of my blockers on putting my Zettelkasten""" start="00:01:20.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""on the web is I don't want everything to be""" start="00:01:23.600" video="qanda-writing" id="subtitle"]]
+[[!template text="""public, especially fleeting notes.""" start="00:01:26.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""So 1 thing is I only explicitly export a file""" start="00:01:31.360" video="qanda-writing" id="subtitle"]]
+[[!template text="""to Hugo and I have that,""" start="00:01:36.560" video="qanda-writing" id="subtitle"]]
+[[!template text="""I can like, I can export this.""" start="00:01:39.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""That doesn't show up very well.""" start="00:01:41.520" video="qanda-writing" id="subtitle"]]
+[[!template text="""So it's export probably export org to take on""" start="00:01:44.540" video="qanda-writing" id="subtitle"]]
+[[!template text="""rules and we'll export the buffer.""" start="00:01:50.280" video="qanda-writing" id="subtitle"]]
+[[!template text="""And then any that I referenced,""" start="00:01:53.760" video="qanda-writing" id="subtitle"]]
+[[!template text="""like these are all links,""" start="00:01:57.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""any notes that are not public will be""" start="00:01:58.660" video="qanda-writing" id="subtitle"]]
+[[!template text="""exported as the text, but there won't be a""" start="00:02:04.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""link to it. So it's having the very""" start="00:02:06.480" video="qanda-writing" id="subtitle"]]
+[[!template text="""deliberate, this is going up.""" start="00:02:10.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""And so I send it over into Hugo,""" start="00:02:13.040" video="qanda-writing" id="subtitle"]]
+[[!template text="""which is its own repository,""" start="00:02:15.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""and either massage it there or whatnot.""" start="00:02:18.700" video="qanda-writing" id="subtitle"]]
+[[!template text="""Is that any further questions on that 1?""" start="00:02:22.800" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: I don't think so.""" start="00:02:27.980" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Is there anything special you're using from""" start="00:02:33.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""org to Hugo markdown? This looks like a""" start="00:02:36.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""really nice setup. I like to give it a try.""" start="00:02:38.960" video="qanda-writing" id="subtitle"]]
+[[!template text="""Yes, there I have a bespoke build process.""" start="00:02:43.840" video="qanda-writing" id="subtitle"]]
+[[!template text="""Having started in WordPress,""" start="00:02:48.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""working through Jekyll,""" start="00:02:50.280" video="qanda-writing" id="subtitle"]]
+[[!template text="""going to Hugo, and then switching from""" start="00:02:51.460" video="qanda-writing" id="subtitle"]]
+[[!template text="""Markdown to org mode, I've backed into this""" start="00:02:54.200" video="qanda-writing" id="subtitle"]]
+[[!template text="""private public Zettelkasten,""" start="00:02:57.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""which is really nice. And I have added quite""" start="00:03:00.140" video="qanda-writing" id="subtitle"]]
+[[!template text="""a bit of code. There's my dog.""" start="00:03:04.840" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: blogging.""" start="00:03:15.520" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: In my So I have, how do I export like side""" start="00:03:10.640" video="qanda-writing" id="subtitle"]]
+[[!template text="""notes because I want I have marginalia""" start="00:03:20.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""instead of like the footnotes,""" start="00:03:23.200" video="qanda-writing" id="subtitle"]]
+[[!template text="""but I still use org mode footnotes.""" start="00:03:24.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""And so I've got a bunch of these things and""" start="00:03:27.520" video="qanda-writing" id="subtitle"]]
+[[!template text="""this is all available up on GitHub And I'll""" start="00:03:29.700" video="qanda-writing" id="subtitle"]]
+[[!template text="""provide a link in the document.""" start="00:03:32.800" video="qanda-writing" id="subtitle"]]
+[[!template text="""Yeah, so there's quite a bit of making the""" start="00:03:36.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""export work how I want it.""" start="00:03:42.280" video="qanda-writing" id="subtitle"]]
+[[!template text="""And I've been kind of fiddling with also""" start="00:03:45.040" video="qanda-writing" id="subtitle"]]
+[[!template text="""improving like LaTeX or PDF export.""" start="00:03:48.840" video="qanda-writing" id="subtitle"]]
+[[!template text="""So yeah, I have a long running to do item to""" start="00:03:54.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""fully lay out my bespoke build process.""" start="00:03:59.480" video="qanda-writing" id="subtitle"]]
+[[!template text="""Because once it gets to Hugo,""" start="00:04:02.920" video="qanda-writing" id="subtitle"]]
+[[!template text="""there's also additional work that I do to""" start="00:04:04.960" video="qanda-writing" id="subtitle"]]
+[[!template text="""compile what is kind of a personal,""" start="00:04:07.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""like a digital garden-ish,""" start="00:04:12.340" video="qanda-writing" id="subtitle"]]
+[[!template text="""it's really a blog focused 1.""" start="00:04:15.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""So yeah, it's at Jeremy F on GitHub at dot""" start="00:04:18.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""Emacs. And you'll be looking for JF""" start="00:04:28.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""blogging.l that has some of this.""" start="00:04:33.200" video="qanda-writing" id="subtitle"]]
+[[!template text="""Also jforgmode.l will have some of that.""" start="00:04:37.360" video="qanda-writing" id="subtitle"]]
+[[!template text="""Yeah, I wanna circle back to that,""" start="00:04:45.400" video="qanda-writing" id="subtitle"]]
+[[!template text="""anything to prevent private links from""" start="00:04:49.540" video="qanda-writing" id="subtitle"]]
+[[!template text="""getting accidentally being made publicly""" start="00:04:51.560" video="qanda-writing" id="subtitle"]]
+[[!template text="""accessible. Yes. So previous to using denote,""" start="00:04:54.560" video="qanda-writing" id="subtitle"]]
+[[!template text="""I also used org-roam. So I have this idea of""" start="00:05:02.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""a node in org-roam has roam refs.""" start="00:05:06.480" video="qanda-writing" id="subtitle"]]
+[[!template text="""And org-roam is much more robust about that.""" start="00:05:13.360" video="qanda-writing" id="subtitle"]]
+[[!template text="""So anytime you mention a ref,""" start="00:05:15.660" video="qanda-writing" id="subtitle"]]
+[[!template text="""it will count it as a backlink.""" start="00:05:18.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""So for example, if my node was my blog,""" start="00:05:20.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""take on rules, anytime,""" start="00:05:23.860" video="qanda-writing" id="subtitle"]]
+[[!template text="""anywhere in my org Rome repository,""" start="00:05:26.000" video="qanda-writing" id="subtitle"]]
+[[!template text="""I mentioned takeonrules.com,""" start="00:05:30.700" video="qanda-writing" id="subtitle"]]
+[[!template text="""it would treat it as a backlink.""" start="00:05:33.280" video="qanda-writing" id="subtitle"]]
+[[!template text="""So from that Rome refs,""" start="00:05:35.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""I have a, I will interrogate,""" start="00:05:39.780" video="qanda-writing" id="subtitle"]]
+[[!template text="""and this is not the function for I will look""" start="00:05:45.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""at the node to see does it have a Rome ref""" start="00:05:47.800" video="qanda-writing" id="subtitle"]]
+[[!template text="""and if it does I will treat it as a public""" start="00:05:51.040" video="qanda-writing" id="subtitle"]]
+[[!template text="""link. So I don't I haven't bled out any""" start="00:05:53.760" video="qanda-writing" id="subtitle"]]
+[[!template text="""private information because again going back""" start="00:05:59.060" video="qanda-writing" id="subtitle"]]
+[[!template text="""to I only publish a document and the document""" start="00:06:01.620" video="qanda-writing" id="subtitle"]]
+[[!template text="""I'm explicitly doing so and then my process""" start="00:06:06.340" video="qanda-writing" id="subtitle"]]
+[[!template text="""filters out any links that do not have public""" start="00:06:09.220" video="qanda-writing" id="subtitle"]]
+[[!template text="""URLs. It will just dump it in there as maybe""" start="00:06:12.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""a span with a ref class of it so that I can""" start="00:06:17.140" video="qanda-writing" id="subtitle"]]
+[[!template text="""kind of know that that came from there.""" start="00:06:20.640" video="qanda-writing" id="subtitle"]]
+[[!template text="""Yes, So the font I am using is,""" start="00:06:29.600" video="qanda-writing" id="subtitle"]]
+[[!template text="""so this is another font.""" start="00:06:36.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""What font were you using in EWW?""" start="00:06:38.620" video="qanda-writing" id="subtitle"]]
+[[!template text="""I think I'm using IOS Becca and ET Bembo.""" start="00:06:42.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Okay, show me your EWW.""" start="00:06:51.700" video="qanda-writing" id="subtitle"]]
+[[!template text="""If we are doing full ricing setup,""" start="00:06:53.560" video="qanda-writing" id="subtitle"]]
+[[!template text="""I can recognize Yosefka just by looking at""" start="00:06:55.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""it.""" start="00:06:58.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: So let's... Yeah, so yeah,""" start="00:06:50.640" video="qanda-writing" id="subtitle"]]
+[[!template text="""ET Bembo, I'm using these 2 fonts as kind of""" start="00:07:01.300" video="qanda-writing" id="subtitle"]]
+[[!template text="""my anchor. So the variable pitch is ETBembo.""" start="00:07:06.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""My blog started off with a Tufta style CSS""" start="00:07:10.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""and I really pared it down and got rid of any""" start="00:07:14.100" video="qanda-writing" id="subtitle"]]
+[[!template text="""of the additional fonts because they can be""" start="00:07:16.360" video="qanda-writing" id="subtitle"]]
+[[!template text="""used as trackers. And I'm like,""" start="00:07:19.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""nope, you decide what font you want for your""" start="00:07:21.580" video="qanda-writing" id="subtitle"]]
+[[!template text="""browser. I don't need to tell you what looks""" start="00:07:24.020" video="qanda-writing" id="subtitle"]]
+[[!template text="""good for you. Yeah, so the story of Take On""" start="00:07:26.420" video="qanda-writing" id="subtitle"]]
+[[!template text="""Rules, I have to thank my partner and lovely""" start="00:07:33.680" video="qanda-writing" id="subtitle"]]
+[[!template text="""wife for that. She kind of nudged me to do""" start="00:07:37.480" video="qanda-writing" id="subtitle"]]
+[[!template text="""some blogging, and we spent some time""" start="00:07:41.180" video="qanda-writing" id="subtitle"]]
+[[!template text="""thinking about it. And originally,""" start="00:07:43.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""it started off as writing about rules for""" start="00:07:45.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""role-playing games or tabletop games.""" start="00:07:48.700" video="qanda-writing" id="subtitle"]]
+[[!template text="""And it has extended far beyond that.""" start="00:07:51.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""The blog, as I've shifted,""" start="00:07:54.960" video="qanda-writing" id="subtitle"]]
+[[!template text="""as I think I mentioned in the presentation,""" start="00:07:56.920" video="qanda-writing" id="subtitle"]]
+[[!template text="""as I've shifted towards an everything and""" start="00:07:59.060" video="qanda-writing" id="subtitle"]]
+[[!template text="""nothing approach, the blog is anything I want""" start="00:08:01.640" video="qanda-writing" id="subtitle"]]
+[[!template text="""to write about anymore.""" start="00:08:05.180" video="qanda-writing" id="subtitle"]]
+[[!template text="""There's haikus up there with some regularity.""" start="00:08:06.980" video="qanda-writing" id="subtitle"]]
+[[!template text="""So the name is now a relic of a past.""" start="00:08:10.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""So yeah, the thing and nothing is,""" start="00:08:18.340" video="qanda-writing" id="subtitle"]]
+[[!template text="""and I put that in the about on my blog.""" start="00:08:22.360" video="qanda-writing" id="subtitle"]]
+[[!template text="""So it's, I highly encourage like,""" start="00:08:25.640" video="qanda-writing" id="subtitle"]]
+[[!template text="""I feel great. Once I like said,""" start="00:08:29.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""oh, I don't have to write this towards a""" start="00:08:34.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""topical blog post or like what the topic is,""" start="00:08:36.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""it freed it up. And I know that it comes at a""" start="00:08:40.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""potential compromise because it's very much""" start="00:08:44.800" video="qanda-writing" id="subtitle"]]
+[[!template text="""me being a voice up there instead of""" start="00:08:47.500" video="qanda-writing" id="subtitle"]]
+[[!template text="""something that is curated and filtered""" start="00:08:51.960" video="qanda-writing" id="subtitle"]]
+[[!template text="""through a specific channel like I could have""" start="00:08:53.760" video="qanda-writing" id="subtitle"]]
+[[!template text="""a technical blog but I decided I'm just gonna""" start="00:08:56.060" video="qanda-writing" id="subtitle"]]
+[[!template text="""tag it as programming or emacs and let you""" start="00:08:59.340" video="qanda-writing" id="subtitle"]]
+[[!template text="""find it and you can subscribe to the rss""" start="00:09:02.420" video="qanda-writing" id="subtitle"]]
+[[!template text="""feeds of each tag that you find applicable""" start="00:09:04.920" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: right thank you so we are we are at the last""" start="00:09:10.120" video="qanda-writing" id="subtitle"]]
+[[!template text="""question on the pad but I see that some""" start="00:09:13.840" video="qanda-writing" id="subtitle"]]
+[[!template text="""people have joined us on the blue button.""" start="00:09:16.100" video="qanda-writing" id="subtitle"]]
+[[!template text="""So, hi everyone! We have about 6 minutes""" start="00:09:18.480" video="qanda-writing" id="subtitle"]]
+[[!template text="""until we need to go to the next talk,""" start="00:09:22.420" video="qanda-writing" id="subtitle"]]
+[[!template text="""but if anyone has a question on the blue""" start="00:09:24.220" video="qanda-writing" id="subtitle"]]
+[[!template text="""button, I'm thinking about James who's joined""" start="00:09:26.460" video="qanda-writing" id="subtitle"]]
+[[!template text="""us and who was kind enough to drop a thank""" start="00:09:28.780" video="qanda-writing" id="subtitle"]]
+[[!template text="""you line on the blue button.""" start="00:09:32.780" video="qanda-writing" id="subtitle"]]
+[[!template text="""Do you want to unmute yourself and ask a""" start="00:09:33.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""question maybe? I'm not putting pressure by""" start="00:09:35.460" video="qanda-writing" id="subtitle"]]
+[[!template text="""the way, I don't feel like you need to but it""" start="00:09:39.520" video="qanda-writing" id="subtitle"]]
+[[!template text="""just... I speak all the time otherwise I'm""" start="00:09:41.870" video="qanda-writing" id="subtitle"]]
+[[!template text="""very happy to spend time with our speakers""" start="00:09:44.060" video="qanda-writing" id="subtitle"]]
+[[!template text="""you know but you know EmacsConf it's about,""" start="00:09:45.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""as Sasha told you during the intro,""" start="00:09:49.400" video="qanda-writing" id="subtitle"]]
+[[!template text="""it's about making people take things,""" start="00:09:51.540" video="qanda-writing" id="subtitle"]]
+[[!template text="""brilliant things out of their mind and put""" start="00:09:54.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""them outside in the public.""" start="00:09:56.100" video="qanda-writing" id="subtitle"]]
+[[!template text="""And for us, you know, we get to see the talk""" start="00:09:57.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""evolve, we talk with people.""" start="00:10:00.660" video="qanda-writing" id="subtitle"]]
+[[!template text="""So for us we are already quite cognizant of""" start="00:10:01.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""the topic and the point is not for us hosts""" start="00:10:03.840" video="qanda-writing" id="subtitle"]]
+[[!template text="""to ask questions, it's mostly for you to ask""" start="00:10:06.360" video="qanda-writing" id="subtitle"]]
+[[!template text="""questions and then we worry about all the""" start="00:10:09.780" video="qanda-writing" id="subtitle"]]
+[[!template text="""fancy stuff in the background.""" start="00:10:11.580" video="qanda-writing" id="subtitle"]]
+[[!template text="""Otherwise you damn well know I will ask""" start="00:10:13.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""questions about org-roam,""" start="00:10:16.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""about links, and nodes in general,""" start="00:10:18.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""because that's my bread and butter.""" start="00:10:20.460" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, I should add, like,""" start="00:10:24.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""the process of migrating the data from a""" start="00:10:27.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""WordPress export to markdown to org mode by""" start="00:10:31.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""way of Pandoc was, it was really insightful""" start="00:10:35.220" video="qanda-writing" id="subtitle"]]
+[[!template text="""to help me understand how I want the data to""" start="00:10:39.720" video="qanda-writing" id="subtitle"]]
+[[!template text="""flow and how I could create a repository for""" start="00:10:42.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""me of information and 1 that I could then""" start="00:10:47.580" video="qanda-writing" id="subtitle"]]
+[[!template text="""send out into the world,""" start="00:10:50.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""the public information,""" start="00:10:52.540" video="qanda-writing" id="subtitle"]]
+[[!template text="""while not having to worry about the private""" start="00:10:54.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""things that I might want to keep.""" start="00:10:58.460" video="qanda-writing" id="subtitle"]]
+[[!template text="""So it was that process of just working""" start="00:11:01.620" video="qanda-writing" id="subtitle"]]
+[[!template text="""through it to reflect on how I'm writing and""" start="00:11:04.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""what I started using writing for.""" start="00:11:08.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""I think Richard Feynman said,""" start="00:11:12.040" video="qanda-writing" id="subtitle"]]
+[[!template text="""no, writing is my thinking.""" start="00:11:14.040" video="qanda-writing" id="subtitle"]]
+[[!template text="""What I wrote is thinking.""" start="00:11:15.680" video="qanda-writing" id="subtitle"]]
+[[!template text="""So it has helped to really frame that.""" start="00:11:18.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Yeah, I mean, there's an interesting""" start="00:11:22.800" video="qanda-writing" id="subtitle"]]
+[[!template text="""ambivalent relationship because it feels like""" start="00:11:27.200" video="qanda-writing" id="subtitle"]]
+[[!template text="""writing helps thinking and thinking helps""" start="00:11:29.220" video="qanda-writing" id="subtitle"]]
+[[!template text="""writing in a way and nowhere have I""" start="00:11:31.800" video="qanda-writing" id="subtitle"]]
+[[!template text="""personally been more aware of this than when""" start="00:11:35.340" video="qanda-writing" id="subtitle"]]
+[[!template text="""coming up with networks of notes because it""" start="00:11:38.000" video="qanda-writing" id="subtitle"]]
+[[!template text="""really I mean you use whichever word you want""" start="00:11:41.000" video="qanda-writing" id="subtitle"]]
+[[!template text="""you know a second brain a collection of notes""" start="00:11:43.860" video="qanda-writing" id="subtitle"]]
+[[!template text="""a slip box a repository of notes whichever""" start="00:11:45.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""the tool you use the point at the end is to""" start="00:11:48.860" video="qanda-writing" id="subtitle"]]
+[[!template text="""resonate with you. It's kind of like""" start="00:11:52.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""extending those moments of consciousness that""" start="00:11:54.000" video="qanda-writing" id="subtitle"]]
+[[!template text="""you have when you take your notes,""" start="00:11:57.280" video="qanda-writing" id="subtitle"]]
+[[!template text="""and you make the entire gradient available.""" start="00:11:59.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""Sorry, I heard Sasha whispering in my ear""" start="00:12:04.260" video="qanda-writing" id="subtitle"]]
+[[!template text="""sometimes. It's pretty pleasant.""" start="00:12:06.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""It's really shocking.""" start="00:12:09.520" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, Aaron, you had a question.""" start="00:12:12.660" video="qanda-writing" id="subtitle"]]
+[[!template text="""Do I use denote just for my blogs or do I use""" start="00:12:15.040" video="qanda-writing" id="subtitle"]]
+[[!template text="""it for other purposes?""" start="00:12:17.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""I use denote for all of my note taking and""" start="00:12:19.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""almost, I think it's exclusively org mode""" start="00:12:25.520" video="qanda-writing" id="subtitle"]]
+[[!template text="""that I, that I use it in.""" start="00:12:28.920" video="qanda-writing" id="subtitle"]]
+[[!template text="""But what I really appreciated in the""" start="00:12:30.600" video="qanda-writing" id="subtitle"]]
+[[!template text="""consideration that Proc put forward was the""" start="00:12:33.400" video="qanda-writing" id="subtitle"]]
+[[!template text="""file name encodes the information that's""" start="00:12:37.500" video="qanda-writing" id="subtitle"]]
+[[!template text="""relevant. So it has helped me be able to""" start="00:12:40.940" video="qanda-writing" id="subtitle"]]
+[[!template text="""query by using things like ripgrep,""" start="00:12:46.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""well not ripgrep, tree or I forget any more""" start="00:12:49.220" video="qanda-writing" id="subtitle"]]
+[[!template text="""what I use. But having that the file encodes""" start="00:12:54.480" video="qanda-writing" id="subtitle"]]
+[[!template text="""useful information. And it's so much more""" start="00:13:00.300" video="qanda-writing" id="subtitle"]]
+[[!template text="""relevant when I look at having worked at a""" start="00:13:03.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""university that rolled out Google Drive to""" start="00:13:06.960" video="qanda-writing" id="subtitle"]]
+[[!template text="""everyone without any guidance on how to""" start="00:13:10.520" video="qanda-writing" id="subtitle"]]
+[[!template text="""organize stuff. And I worked at a library and""" start="00:13:12.840" video="qanda-writing" id="subtitle"]]
+[[!template text="""it was just a nightmare watching things show""" start="00:13:16.120" video="qanda-writing" id="subtitle"]]
+[[!template text="""up where you could never find it again.""" start="00:13:19.540" video="qanda-writing" id="subtitle"]]
+[[!template text="""So, file name, the file name having the date,""" start="00:13:23.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""having the title and having tags just made so""" start="00:13:28.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""much sense to be findable.""" start="00:13:33.280" video="qanda-writing" id="subtitle"]]
+[[!template text="""And yeah, I really do just use org.""" start="00:13:36.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""But if I am going to make txt files or other""" start="00:13:41.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""files, I have started adopting that structure""" start="00:13:47.220" video="qanda-writing" id="subtitle"]]
+[[!template text="""and format.""" start="00:13:52.120" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Right. Well, Jeremy, we have about 1 minute""" start="00:13:56.840" video="qanda-writing" id="subtitle"]]
+[[!template text="""and 30 seconds left until we go on to the""" start="00:14:00.900" video="qanda-writing" id="subtitle"]]
+[[!template text="""next talk. Do you have any final words""" start="00:14:03.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""regarding your presentation or maybe where""" start="00:14:05.140" video="qanda-writing" id="subtitle"]]
+[[!template text="""people can find you? I know you've already""" start="00:14:06.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""mentioned this but...""" start="00:14:08.400" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: Yeah, take on rules. I'm also on dice camp""" start="00:14:09.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""dice.campmastodon at take on rules and I've""" start="00:14:13.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""thought about emacs.h but we federate well So""" start="00:14:18.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""I appreciate that. And I can stay on and""" start="00:14:22.340" video="qanda-writing" id="subtitle"]]
+[[!template text="""answer any further questions if folks have""" start="00:14:27.560" video="qanda-writing" id="subtitle"]]
+[[!template text="""it.""" start="00:14:29.680" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Sure. So sorry. Sorry,""" start="00:14:31.420" video="qanda-writing" id="subtitle"]]
+[[!template text="""I confused myself with the buttons talking to""" start="00:14:34.860" video="qanda-writing" id="subtitle"]]
+[[!template text="""production and all. Well then,""" start="00:14:36.820" video="qanda-writing" id="subtitle"]]
+[[!template text="""what I'm going to do is that the stream is""" start="00:14:38.960" video="qanda-writing" id="subtitle"]]
+[[!template text="""going to move on to the next talk in about 50""" start="00:14:41.260" video="qanda-writing" id="subtitle"]]
+[[!template text="""seconds. If people want to join and ask any""" start="00:14:43.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""questions, feel free to join on the blue""" start="00:14:46.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""button. The link is on the talk page or on""" start="00:14:49.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""IRC. And feel free to hang out as long as you""" start="00:14:51.380" video="qanda-writing" id="subtitle"]]
+[[!template text="""want to ask as many questions as you want to""" start="00:14:54.480" video="qanda-writing" id="subtitle"]]
+[[!template text="""Jeremy. We are recording all of this and""" start="00:14:56.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""we'll be publishing this later on once again.""" start="00:14:58.180" video="qanda-writing" id="subtitle"]]
+[[!template text="""And all that's left for me to do is to thank""" start="00:15:01.120" video="qanda-writing" id="subtitle"]]
+[[!template text="""you so much, Jeremy, for your presentation""" start="00:15:03.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""and your answers. And I will see you another""" start="00:15:05.740" video="qanda-writing" id="subtitle"]]
+[[!template text="""time.""" start="00:15:08.200" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: So yeah, plasma strike.""" start="00:15:12.700" video="qanda-writing" id="subtitle"]]
+[[!template text="""I'm not able to grant speaking powers.""" start="00:15:15.560" video="qanda-writing" id="subtitle"]]
+[[!template text="""So if you wanted to type up something""" start="00:15:20.340" video="qanda-writing" id="subtitle"]]
+[[!template text="""question-wise.""" start="00:15:22.160" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Oh, okay. I'll manage this in the background.""" start="00:15:24.000" video="qanda-writing" id="subtitle"]]
+[[!template text="""So we're moving on to the next talk.""" start="00:15:26.000" video="qanda-writing" id="subtitle"]]
+[[!template text="""We'll figure out the things about VBB,""" start="00:15:28.500" video="qanda-writing" id="subtitle"]]
+[[!template text="""But in the meantime, enjoy the next talk.""" start="00:15:30.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""Bye. All right, Jeremy.""" start="00:15:34.140" video="qanda-writing" id="subtitle"]]
+[[!template text="""We are now on the next talk.""" start="00:15:35.460" video="qanda-writing" id="subtitle"]]
+[[!template text="""Sorry about having to mention multiple things""" start="00:15:37.080" video="qanda-writing" id="subtitle"]]
+[[!template text="""at the same time. Speaking rights.""" start="00:15:39.240" video="qanda-writing" id="subtitle"]]
+[[!template text="""I will try fixing this in the background.""" start="00:15:42.500" video="qanda-writing" id="subtitle"]]
+[[!template text="""I need to get moving for the next talk,""" start="00:15:44.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""but I'll do it in the background and we'll""" start="00:15:46.120" video="qanda-writing" id="subtitle"]]
+[[!template text="""let you know as soon as it's ready.""" start="00:15:48.040" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 1]: We're doing great. Okay.""" start="00:15:40.440" video="qanda-writing" id="subtitle"]]
+[[!template text="""[Speaker 0]: Alright, bye bye Jeremy.""" start="00:15:51.220" video="qanda-writing" id="subtitle"]]
+
+Questions or comments? Please e-mail [jeremy@jeremyfriesen.com](mailto:jeremy@jeremyfriesen.com?subject=Comment%20for%20EmacsConf%202023%20writing%3A%20Emacs%20turbo-charges%20my%20writing)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2023/info/writing-before.md b/2023/info/writing-before.md
new file mode 100644
index 00000000..e46b512f
--- /dev/null
+++ b/2023/info/writing-before.md
@@ -0,0 +1,28 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 9-min talk; Q&A: BigBlueButton conference room
+Status: Q&A to be extracted from the room recordings
+
+
+
+
+
+# Talk
+
+<div class="vid"><video controls preload="none" id="writing-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2023/captions/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="writing-mainVideo" data="""
+00:00.000 Intro
+00:57.120 How I got here
+01:18.400 Friction
+01:45.960 Domains for notes
+02:15.920 Demo
+02:55.440 Dabbrev and hippie-expand
+03:32.840 Links
+07:49.160 Conclusion
+
+"""]]<div></div>Duration: 08:53 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--main.opus">Download --main.opus (5.5MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--main.webm">Download --main.webm (23MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--pad.md">Download --pad.md</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen.pdf">Download .pdf</a></li><li><a href="https://toobnix.org/w/ke3UCJaJSLyQr7Emv8VxST">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><video controls preload="none" id="writing-qanda"><source src="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div>Listen to just the audio:<br /><audio controls preload="none" id="writing-qanda-audio" src="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.opus"></audio></div><div></div>Duration: 15:53 minutes<div class="files resources"><ul><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.opus">Download --answers.opus (9.4MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-writing--emacs-turbocharges-my-writing--jeremy-friesen--answers.webm">Download --answers.webm (35MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2023/info/writing-nav.md b/2023/info/writing-nav.md
new file mode 100644
index 00000000..fa3bdae7
--- /dev/null
+++ b/2023/info/writing-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2023/talks/one">one.el: the static site generator for Emacs Lisp Programmers</a>
+Next by track: <a href="/2023/talks/nabokov">Why Nabokov would use Org-Mode if he were writing today</a>
+Track: <span class="sched-track General">General</span>
+</div>