summaryrefslogtreecommitdiffstats
path: root/2025/info
diff options
context:
space:
mode:
Diffstat (limited to '2025/info')
-rw-r--r--2025/info/authoring-after.md7
-rw-r--r--2025/info/authoring-before.md18
-rw-r--r--2025/info/authoring-nav.md7
-rw-r--r--2025/info/bibliography-after.md7
-rw-r--r--2025/info/bibliography-before.md18
-rw-r--r--2025/info/bibliography-nav.md7
-rw-r--r--2025/info/blee-lcnt-after.md1051
-rw-r--r--2025/info/blee-lcnt-before.md46
-rw-r--r--2025/info/blee-lcnt-nav.md7
-rw-r--r--2025/info/bookclub-tapas-after.md1526
-rw-r--r--2025/info/bookclub-tapas-before.md43
-rw-r--r--2025/info/bookclub-tapas-nav.md7
-rw-r--r--2025/info/calc-after.md314
-rw-r--r--2025/info/calc-before.md28
-rw-r--r--2025/info/calc-nav.md7
-rw-r--r--2025/info/claude-code-after.md7
-rw-r--r--2025/info/claude-code-before.md13
-rw-r--r--2025/info/claude-code-nav.md4
-rw-r--r--2025/info/commonlisp-after.md790
-rw-r--r--2025/info/commonlisp-before.md19
-rw-r--r--2025/info/commonlisp-nav.md7
-rw-r--r--2025/info/completion-after.md485
-rw-r--r--2025/info/completion-before.md13
-rw-r--r--2025/info/completion-nav.md7
-rw-r--r--2025/info/gardening-after.md387
-rw-r--r--2025/info/gardening-before.md25
-rw-r--r--2025/info/gardening-nav.md7
-rw-r--r--2025/info/gmail-after.md758
-rw-r--r--2025/info/gmail-before.md46
-rw-r--r--2025/info/gmail-nav.md7
-rw-r--r--2025/info/gnus-after.md790
-rw-r--r--2025/info/gnus-before.md37
-rw-r--r--2025/info/gnus-nav.md7
-rw-r--r--2025/info/graphics-after.md43
-rw-r--r--2025/info/graphics-before.md29
-rw-r--r--2025/info/graphics-nav.md7
-rw-r--r--2025/info/greader-after.md90
-rw-r--r--2025/info/greader-before.md13
-rw-r--r--2025/info/greader-nav.md7
-rw-r--r--2025/info/hyperboleqa-after.md744
-rw-r--r--2025/info/hyperboleqa-before.md13
-rw-r--r--2025/info/hyperboleqa-nav.md7
-rw-r--r--2025/info/juicemacs-after.md422
-rw-r--r--2025/info/juicemacs-before.md13
-rw-r--r--2025/info/juicemacs-nav.md7
-rw-r--r--2025/info/languages-after.md7
-rw-r--r--2025/info/languages-before.md13
-rw-r--r--2025/info/languages-nav.md4
-rw-r--r--2025/info/latex-after.md477
-rw-r--r--2025/info/latex-before.md13
-rw-r--r--2025/info/latex-nav.md7
-rw-r--r--2025/info/life-after.md7
-rw-r--r--2025/info/life-before.md13
-rw-r--r--2025/info/life-nav.md4
-rw-r--r--2025/info/llm-after.md906
-rw-r--r--2025/info/llm-before.md19
-rw-r--r--2025/info/llm-nav.md7
-rw-r--r--2025/info/modern-after.md251
-rw-r--r--2025/info/modern-before.md13
-rw-r--r--2025/info/modern-nav.md7
-rw-r--r--2025/info/n-angulator-after.md7
-rw-r--r--2025/info/n-angulator-before.md13
-rw-r--r--2025/info/n-angulator-nav.md4
-rw-r--r--2025/info/open-mic-after.md1029
-rw-r--r--2025/info/open-mic-before.md13
-rw-r--r--2025/info/open-mic-nav.md7
-rw-r--r--2025/info/org-babel-after.md221
-rw-r--r--2025/info/org-babel-before.md23
-rw-r--r--2025/info/org-babel-nav.md7
-rw-r--r--2025/info/private-ai-after.md877
-rw-r--r--2025/info/private-ai-before.md13
-rw-r--r--2025/info/private-ai-nav.md7
-rw-r--r--2025/info/python-after.md548
-rw-r--r--2025/info/python-before.md19
-rw-r--r--2025/info/python-nav.md7
-rw-r--r--2025/info/reader-after.md1192
-rw-r--r--2025/info/reader-before.md36
-rw-r--r--2025/info/reader-nav.md7
-rw-r--r--2025/info/reference-after.md358
-rw-r--r--2025/info/reference-before.md25
-rw-r--r--2025/info/reference-nav.md7
-rw-r--r--2025/info/sat-close-after.md7
-rw-r--r--2025/info/sat-close-before.md13
-rw-r--r--2025/info/sat-close-nav.md7
-rw-r--r--2025/info/sat-open-after.md143
-rw-r--r--2025/info/sat-open-before.md28
-rw-r--r--2025/info/sat-open-nav.md6
-rw-r--r--2025/info/schemacs-after.md924
-rw-r--r--2025/info/schemacs-before.md30
-rw-r--r--2025/info/schemacs-nav.md7
-rw-r--r--2025/info/sun-close-after.md235
-rw-r--r--2025/info/sun-close-before.md13
-rw-r--r--2025/info/sun-close-nav.md6
-rw-r--r--2025/info/sun-open-after.md143
-rw-r--r--2025/info/sun-open-before.md28
-rw-r--r--2025/info/sun-open-nav.md7
-rw-r--r--2025/info/swanky-after.md387
-rw-r--r--2025/info/swanky-before.md13
-rw-r--r--2025/info/swanky-nav.md7
-rw-r--r--2025/info/weights-after.md567
-rw-r--r--2025/info/weights-before.md13
-rw-r--r--2025/info/weights-nav.md7
-rw-r--r--2025/info/writing-after.md7
-rw-r--r--2025/info/writing-before.md13
-rw-r--r--2025/info/writing-nav.md7
-rw-r--r--2025/info/zettelkasten-after.md1845
-rw-r--r--2025/info/zettelkasten-before.md36
-rw-r--r--2025/info/zettelkasten-nav.md7
108 files changed, 18571 insertions, 0 deletions
diff --git a/2025/info/authoring-after.md b/2025/info/authoring-after.md
new file mode 100644
index 00000000..25e66b40
--- /dev/null
+++ b/2025/info/authoring-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%20authoring%3A%20How%20Emacs%20became%20my%20authoring%20playground%E2%80%94no%20Lisp%20required)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/authoring-before.md b/2025/info/authoring-before.md
new file mode 100644
index 00000000..98b88670
--- /dev/null
+++ b/2025/info/authoring-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 2025-12-06. 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="authoring">
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="12" x="3">Saturday</text><a href="/2025/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="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"><title> 9:10- 9:20 Making Org-Babel reactive</title><rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">org-babel</text></g></a><a href="/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"><title> 9:30- 9:50 Emacs as a fully-fledged reference manager</title><rect x="41" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(66,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">reference</text></g></a><a href="/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"><title>10:10-10:30 org-gmail: A deep integration of Gmail into your Org Mode</title><rect x="96" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(121,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gmail</text></g></a><a href="/2025/talks/languages" title="Studying foreign languages with Emacs, Org Mode and gptel" data-slug="languages"><title>10:40-10:50 Studying foreign languages with Emacs, Org Mode and gptel</title><rect x="137" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(148,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">languages</text></g></a><a href="/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"><title>11:10-11:30 LaTeX export in org-mode: the overhaul</title><rect x="178" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(203,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">latex</text></g></a><a href="/2025/talks/bibliography" title="An enhanced bibliography in org-mode for scientific research and self-directed learning" data-slug="bibliography"><title> 1:00- 1:20 An enhanced bibliography in org-mode for scientific research and self-directed learning</title><rect x="329" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(354,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bibliography</text></g></a><a href="/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"><title> 1:40- 1:50 Basic Calc functionality for engineering or electronics</title><rect x="384" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(395,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">calc</text></g></a><a href="/2025/talks/authoring" title="How Emacs became my authoring playground—no Lisp required" data-slug="authoring"><title> 2:00- 2:10 How Emacs became my authoring playground—no Lisp required</title><rect stroke-width="3" x="411" y="15" opacity="0.8" width="13" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(422,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">authoring</text></g></a><a href="/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"><title> 2:30- 2:50 Blee-LCNT: An Emacs-centered content production and self-publication framework</title><rect x="452" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(477,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">blee-lcnt</text></g></a><a href="/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"><title> 3:10- 3:20 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title><rect x="507" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(518,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">greader</text></g></a><a href="/2025/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"><title> 3:30- 3:40 Saturday closing remarks</title><rect x="535" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(546,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"><title> 9:30- 9:45 One year progress update Schemacs (formerly Gypsum)</title><rect x="41" y="75" opacity="0.5" width="20" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(59,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">schemacs</text></g></a><a href="/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"><title>10:05-10:25 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title><rect x="89" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(114,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">juicemacs</text></g></a><a href="/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"><title>10:35-10:55 Swanky Python: Interactive development for Python</title><rect x="130" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(155,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">swanky</text></g></a><a href="/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"><title>11:05-11:25 Interactive Python programming in Emacs</title><rect x="171" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(196,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">python</text></g></a><a href="/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"><title> 1:00- 1:20 Emacs, editors, and LLM driven workflows</title><rect x="329" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(354,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llm</text></g></a><a href="/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"><title> 1:40- 2:00 Emacs and private AI: a great match</title><rect x="384" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(409,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">private-ai</text></g></a><a href="/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"><title> 2:20- 2:40 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title><rect x="439" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(464,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">commonlisp</text></g></a><a href="/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"><title> 2:50- 3:10 Modern Emacs/Elisp hardware/software accelerated graphics</title><rect x="480" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(505,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">graphics</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">9 AM</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">10 AM</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">11 AM</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">12 PM</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">1 PM</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">2 PM</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">3 PM</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">4 PM</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" 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/2025/current/bbb-authoring.html>
+Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
+Status: Waiting for video from speaker
+<div>Times in different time zones:</div><div class="times" start="2025-12-06T19:00:00Z" end="2025-12-06T19:10:00Z"><div class="conf-time">Saturday, Dec 6 2025, ~2:00 PM - 2:10 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 6 2025, ~1:00 PM - 1:10 PM CST (US/Central)<br />Saturday, Dec 6 2025, ~12:00 PM - 12:10 PM MST (US/Mountain)<br />Saturday, Dec 6 2025, ~11:00 AM - 11:10 AM PST (US/Pacific)<br />Saturday, Dec 6 2025, ~7:00 PM - 7:10 PM UTC <br />Saturday, Dec 6 2025, ~8:00 PM - 8:10 PM CET (Europe/Paris)<br />Saturday, Dec 6 2025, ~9:00 PM - 9:10 PM EET (Europe/Athens)<br />Sunday, Dec 7 2025, ~12:30 AM - 12:40 AM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~3:00 AM - 3:10 AM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~4:00 AM - 4:10 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div>
+
+
+
+
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/authoring-nav.md b/2025/info/authoring-nav.md
new file mode 100644
index 00000000..f547b494
--- /dev/null
+++ b/2025/info/authoring-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by time: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a>
+Next by time: <a href="/2025/talks/commonlisp">Common Lisp images communicating like-a-human through shared Emacs slime and eev</a>
+Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong>
+</div>
diff --git a/2025/info/bibliography-after.md b/2025/info/bibliography-after.md
new file mode 100644
index 00000000..4254a9da
--- /dev/null
+++ b/2025/info/bibliography-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [blaine-mooers@ouhsc.edu](mailto:blaine-mooers@ouhsc.edu?subject=Comment%20for%20EmacsConf%202023%20bibliography%3A%20An%20enhanced%20bibliography%20in%20org-mode%20for%20scientific%20research%20and%20self-directed%20learning)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/bibliography-before.md b/2025/info/bibliography-before.md
new file mode 100644
index 00000000..7bb2a78d
--- /dev/null
+++ b/2025/info/bibliography-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 2025-12-06. 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="bibliography">
+<svg width="700" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Schedule for Saturday</title><rect width="700" height="150" x="0" y="0" fill="white"></rect><text font-size="10" fill="black" y="12" x="3">Saturday</text><a href="https://emacsconf.org/2025/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="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(11,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-open</text></g></a><a href="https://emacsconf.org/2025/talks/org-babel" title="Making Org-Babel reactive" data-slug="org-babel"><title> 9:10- 9:20 Making Org-Babel reactive</title><rect x="13" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(24,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">org-babel</text></g></a><a href="https://emacsconf.org/2025/talks/reference" title="Emacs as a fully-fledged reference manager" data-slug="reference"><title> 9:30- 9:55 Emacs as a fully-fledged reference manager</title><rect x="41" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(73,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">reference</text></g></a><a href="https://emacsconf.org/2025/talks/gmail" title="org-gmail: A deep integration of Gmail into your Org Mode" data-slug="gmail"><title>10:15-10:40 org-gmail: A deep integration of Gmail into your Org Mode</title><rect x="102" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(134,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gmail</text></g></a><a href="https://emacsconf.org/2025/talks/gnus" title="Reading and writing emails in GNU Emacs with Gnus" data-slug="gnus"><title>10:50-11:15 Reading and writing emails in GNU Emacs with Gnus</title><rect x="150" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(182,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">gnus</text></g></a><a href="https://emacsconf.org/2025/talks/latex" title="LaTeX export in org-mode: the overhaul" data-slug="latex"><title>11:25-11:45 LaTeX export in org-mode: the overhaul</title><rect x="199" y="15" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(224,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">latex</text></g></a><a href="https://emacsconf.org/2025/talks/bibliography" title="An enhanced bibliography in org-mode for scientific research and self-directed learning" data-slug="bibliography"><title> 1:00- 1:20 An enhanced bibliography in org-mode for scientific research and self-directed learning</title><rect stroke-width="3" x="329" y="15" opacity="0.8" width="27" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(354,73)"><text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">bibliography</text></g></a><a href="https://emacsconf.org/2025/talks/calc" title="Basic Calc functionality for engineering or electronics" data-slug="calc"><title> 1:40- 2:05 Basic Calc functionality for engineering or electronics</title><rect x="384" y="15" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(416,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">calc</text></g></a><a href="https://emacsconf.org/2025/talks/blee-lcnt" title="Blee-LCNT: An Emacs-centered content production and self-publication framework" data-slug="blee-lcnt"><title> 2:15- 2:55 Blee-LCNT: An Emacs-centered content production and self-publication framework</title><rect x="432" y="15" opacity="0.5" width="54" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect><g transform="translate(484,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">blee-lcnt</text></g></a><a href="https://emacsconf.org/2025/talks/greader" title="GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence" data-slug="greader"><title> 3:15- 3:25 GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</title><rect x="514" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(525,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">greader</text></g></a><a href="https://emacsconf.org/2025/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"><title> 3:30- 3:40 Saturday closing remarks</title><rect x="535" y="15" opacity="0.5" width="13" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect><g transform="translate(546,73)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">sat-close</text></g></a><a href="https://emacsconf.org/2025/talks/schemacs" title="One year progress update Schemacs (formerly Gypsum)" data-slug="schemacs"><title> 9:30- 9:55 One year progress update Schemacs (formerly Gypsum)</title><rect x="41" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(73,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">schemacs</text></g></a><a href="https://emacsconf.org/2025/talks/juicemacs" title="Juicemacs: exploring speculative JIT compilation for ELisp in Java" data-slug="juicemacs"><title>10:15-10:35 Juicemacs: exploring speculative JIT compilation for ELisp in Java</title><rect x="102" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(127,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">juicemacs</text></g></a><a href="https://emacsconf.org/2025/talks/swanky" title="Swanky Python: Interactive development for Python" data-slug="swanky"><title>10:45-11:10 Swanky Python: Interactive development for Python</title><rect x="144" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(176,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">swanky</text></g></a><a href="https://emacsconf.org/2025/talks/python" title="Interactive Python programming in Emacs" data-slug="python"><title>11:20-11:40 Interactive Python programming in Emacs</title><rect x="192" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(217,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">python</text></g></a><a href="https://emacsconf.org/2025/talks/llm" title="Emacs, editors, and LLM driven workflows" data-slug="llm"><title> 1:00- 1:25 Emacs, editors, and LLM driven workflows</title><rect x="329" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(361,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">llm</text></g></a><a href="https://emacsconf.org/2025/talks/private-ai" title="Emacs and private AI: a great match" data-slug="private-ai"><title> 1:45- 2:05 Emacs and private AI: a great match</title><rect x="391" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(416,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">private-ai</text></g></a><a href="https://emacsconf.org/2025/talks/commonlisp" title="Common Lisp images communicating like-a-human through shared Emacs slime and eev" data-slug="commonlisp"><title> 2:25- 2:45 Common Lisp images communicating like-a-human through shared Emacs slime and eev</title><rect x="446" y="75" opacity="0.5" width="27" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect><g transform="translate(471,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">commonlisp</text></g></a><a href="https://emacsconf.org/2025/talks/graphics" title="Modern Emacs/Elisp hardware/software accelerated graphics" data-slug="graphics"><title> 2:55- 3:20 Modern Emacs/Elisp hardware/software accelerated graphics</title><rect x="487" y="75" opacity="0.5" width="34" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect><g transform="translate(519,133)"><text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)">graphics</text></g></a><g transform="translate(0,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">9 AM</text></g><g transform="translate(82,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">10 AM</text></g><g transform="translate(164,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">11 AM</text></g><g transform="translate(247,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">12 PM</text></g><g transform="translate(329,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">1 PM</text></g><g transform="translate(411,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">2 PM</text></g><g transform="translate(494,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">3 PM</text></g><g transform="translate(576,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">4 PM</text></g><g transform="translate(658,3)"><line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line><text fill="black" x="0" y="140" font-size="10" text-anchor="left">5 PM</text></g></svg>
+</div>
+
+[[!toc ]]
+Format: 20-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-bibliography.html>
+Discuss on IRC: [#emacsconf](https://chat.emacsconf.org/?join=emacsconf)
+Status: Waiting for video from speaker
+<div>Times in different time zones:</div><div class="times" start="2025-12-06T18:00:00Z" end="2025-12-06T18:20:00Z"><div class="conf-time">Saturday, Dec 6 2025, ~1:00 PM - 1:20 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 6 2025, ~12:00 PM - 12:20 PM CST (US/Central)<br />Saturday, Dec 6 2025, ~11:00 AM - 11:20 AM MST (US/Mountain)<br />Saturday, Dec 6 2025, ~10:00 AM - 10:20 AM PST (US/Pacific)<br />Saturday, Dec 6 2025, ~6:00 PM - 6:20 PM UTC <br />Saturday, Dec 6 2025, ~7:00 PM - 7:20 PM CET (Europe/Paris)<br />Saturday, Dec 6 2025, ~8:00 PM - 8:20 PM EET (Europe/Athens)<br />Saturday, Dec 6 2025, ~11:30 PM - 11:50 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~2:00 AM - 2:20 AM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~3:00 AM - 3:20 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div>
+
+
+
+
+
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/bibliography-nav.md b/2025/info/bibliography-nav.md
new file mode 100644
index 00000000..ae626eb8
--- /dev/null
+++ b/2025/info/bibliography-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by time: <a href="/2025/talks/llm">Emacs, editors, and LLM driven workflows</a>
+Next by time: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a>
+Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong>
+</div>
diff --git a/2025/info/blee-lcnt-after.md b/2025/info/blee-lcnt-after.md
new file mode 100644
index 00000000..415408f8
--- /dev/null
+++ b/2025/info/blee-lcnt-after.md
@@ -0,0 +1,1051 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="blee-lcnt-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:05.760" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Greetings. Salaam.""" start="00:00:05.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This is Mohsen Banan.""" start="00:00:08.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I am a software and internet engineer.""" start="00:00:10.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The title of this presentation""" start="00:00:12.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is &quot;Blee-LCNT: An Emacs Centered""" start="00:00:14.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Content Production and Self-Publication Framework&quot;.""" start="00:00:18.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Blee stands for""" start="00:00:23.660" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""ByStar Libre-Halaal Emacs Environment.""" start="00:00:25.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In last year's EmacsConf,""" start="00:00:29.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I introduced Blee, BISOS and ByStar""" start="00:00:31.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as concepts and as foundations.""" start="00:00:36.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This year I want to focus""" start="00:00:39.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""on one concrete capability.""" start="00:00:41.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Content Production and Self-Publication""" start="00:00:43.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is a foundational Blee and BISOS Capability Bundle.""" start="00:00:47.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Both this presentation""" start="00:00:54.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and the Nature of Polyexistentials book""" start="00:00:55.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""were developed with Blee-LCNT.""" start="00:00:59.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In this presentation I want to look at Emacs""" start="00:01:02.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as a central ingredient""" start="00:01:06.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for a usage environment""" start="00:01:08.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that we can use to orchestrate production of""" start="00:01:10.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""quite fancy multi-media presentations.""" start="00:01:14.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Scope: A complete multi-media content processing framework""" start="00:01:20.080" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Let's consider two different scopes.""" start="00:01:20.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""First, the scope of Blee-LCNT Capabilities Bundle,""" start="00:01:23.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which is that of a complete""" start="00:01:27.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""multi-media content authorship,""" start="00:01:29.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""generation, publication""" start="00:01:32.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and distribution framework.""" start="00:01:34.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""That complete scope is presented in this slide""" start="00:01:37.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and it spans both black ink""" start="00:01:41.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and violet ink.""" start="00:01:44.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Second, the scope of this presentation,""" start="00:01:46.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which is more limited.""" start="00:01:49.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In this presentation I confine myself""" start="00:01:52.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to the bullets is violet ink.""" start="00:01:54.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Here, I focus on presentation""" start="00:01:58.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and video as content types""" start="00:02:01.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and their authorship and generation""" start="00:02:03.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and their federated re-publication.""" start="00:02:06.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Prior art and similar art""" start="00:02:10.320" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""This is a common topic.""" start="00:02:10.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It makes good sense for us to start with""" start="00:02:12.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""a review of prior art and similar art.""" start="00:02:14.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I went through the past EmacsConf talks""" start="00:02:19.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and found a good number of them""" start="00:02:21.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that also deal with the topic""" start="00:02:23.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of content generation.""" start="00:02:26.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""A few of these are included""" start="00:02:28.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in black ink in this slide.""" start="00:02:30.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Many of these have chosen the Babel,""" start="00:02:33.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in other words Org-Mode+LaTeX as primary input.""" start="00:02:35.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I prefer the inverse of that.""" start="00:02:40.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I also looked for past talks""" start="00:02:43.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which have used Reveal.js and LaTeX-Beamer.""" start="00:02:45.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""For example, Sacha's use of Reveal.js""" start="00:02:50.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is shown in violet inK.""" start="00:02:53.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And Ihor's use of Beamer is in teal ink.""" start="00:02:56.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""LaTeX-Beamer + Reveal.js with Blee and BISOS""" start="00:03:02.420" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""This presentation is about a combination""" start="00:03:02.420" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of Reveal.js and LaTeX-Beamer.""" start="00:03:05.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""For those who may not be familiar""" start="00:03:08.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with Beamer and Reveal,""" start="00:03:10.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""here is a quick intro.""" start="00:03:12.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Among academics, LaTeX-Beamer is the go-to tool""" start="00:03:14.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for producing presentations.""" start="00:03:19.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Reveal.js is recognized""" start="00:03:22.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as the best of breed""" start="00:03:24.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for dispensing HTML slide decks.""" start="00:03:25.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""For many, Reveal and Beamer""" start="00:03:29.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""live in different universes.""" start="00:03:32.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Beamer is pdf oriented""" start="00:03:35.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and Reveal is html oriented.""" start="00:03:38.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Combining two powerful tools""" start="00:03:42.020" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""makes for an even more powerful tool.""" start="00:03:44.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This Blee-LCNT Presentations combines""" start="00:03:48.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the best of LaTeX-Beamer with Reveal.js.""" start="00:03:51.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Blee-LCNT novel concepts""" start="00:03:57.160" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Beamer primarily functions as producer""" start="00:03:57.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and Reveal functions as dispenser""" start="00:04:00.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and multi-media enhancer.""" start="00:04:03.100" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Here is how the combination works.""" start="00:04:05.580" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""LaTeX Beamer pdf result""" start="00:04:08.300" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is dissected into named frame images""" start="00:04:10.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which can then be inserted in Reveal.js.""" start="00:04:13.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""LaTeX Beamer frames can also be""" start="00:04:18.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""translated into html with HeVeA""" start="00:04:21.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which can also be inserted in Reveal.js.""" start="00:04:24.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Voice-overs for Beamer frames""" start="00:04:29.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""can be correlated to frame names""" start="00:04:31.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and applied to image or html frames.""" start="00:04:34.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Screen captures and image narrations as videos""" start="00:04:37.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""can be directly dispensed""" start="00:04:42.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""through Reveal.""" start="00:04:44.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""There are various additional novel concepts""" start="00:04:46.380" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with regard to the way""" start="00:04:49.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that we have integrated all of this together.""" start="00:04:50.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Instead of Org-Mode+LaTeX,""" start="00:04:54.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""we do LaTeX+Org-Mode.""" start="00:04:57.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Instead of Babel, we do COMEEGA,""" start="00:05:01.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""instead of the Literate model""" start="00:05:04.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""we introduce the Surrounded model.""" start="00:05:06.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You shall see various examples""" start="00:05:08.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of these shortly.""" start="00:05:10.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Part of a bigger picture - part of a series""" start="00:05:12.520" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""All of this is part of a bigger picture.""" start="00:05:12.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""A much bigger picture.""" start="00:05:15.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""My talks at EmacsConf 2021, 2022""" start="00:05:17.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and 2024 are related.""" start="00:05:23.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This 2025 talk builds on those.""" start="00:05:26.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Last year's talk &quot;About Blee:""" start="00:05:31.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""enveloping our own autonomy""" start="00:05:34.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""directed digital ecosystem""" start="00:05:36.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with Emacs&quot; in particular,""" start="00:05:39.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""lays the foundations for this talk.""" start="00:05:42.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If you have not seen that,""" start="00:05:44.980" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""it would make good sense to review it.""" start="00:05:47.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In my previous talks I have been criticized""" start="00:05:51.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of having a &quot;prophetic&quot; style.""" start="00:05:54.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The scope of ByStar is lofty and immense.""" start="00:05:58.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In many ways it is unbelievable.""" start="00:06:02.060" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And EmacsConf talks are meant to be short.""" start="00:06:04.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So, as a result, sometimes""" start="00:06:09.140" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I end up being cryptic.""" start="00:06:11.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Having accepted the &quot;prophetic&quot; criticism""" start="00:06:13.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as legitimate,""" start="00:06:17.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I now need to put a book on the table.""" start="00:06:19.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""With that book in place, moving forward,""" start="00:06:23.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""when needing to be cryptic,""" start="00:06:26.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I shall cite Chapter and Verse.""" start="00:06:29.340" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Nature of polyexistentials""" start="00:06:32.560" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""I am delighted to announce""" start="00:06:32.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the availability of my recent book,""" start="00:06:34.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""&quot;Nature of Polyexistentials&quot;.""" start="00:06:37.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The full title of my book is:""" start="00:06:40.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Nature Of Polyexistentials---""" start="00:06:42.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Basis For Abolishment Of The Western""" start="00:06:45.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Intellectual Property Rights Regime---""" start="00:06:48.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And Introduction Of The Libre-Halaal""" start="00:06:51.220" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""ByStar Digital Ecosystem.""" start="00:06:53.900" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Knowledge, know-how, uses of know-how,""" start="00:06:57.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""ideas, formulas, software and information""" start="00:06:59.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""are inherently non-scarce.""" start="00:07:02.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""They are \*polyexistentials\*.""" start="00:07:05.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Unlike monoexistentials""" start="00:07:08.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which exist in singular,""" start="00:07:10.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""polyexistentials naturally exist in multiples.""" start="00:07:12.260" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""What is abundant in nature""" start="00:07:17.540" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is being made artificially scarce""" start="00:07:19.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""through man-made ownership rules""" start="00:07:22.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""called copyright and patents.""" start="00:07:25.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""These mistaken ownership rules,""" start="00:07:28.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the so called Western IPR regime,""" start="00:07:31.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""has immense ramifications""" start="00:07:34.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""on the shape and the direction""" start="00:07:37.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of the American Digital Ecosystem.""" start="00:07:38.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It would be an understatement to say""" start="00:07:42.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that the American Digital Ecosystem""" start="00:07:45.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""has put humanity in danger.""" start="00:07:47.780" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Two parts of the book, in particular""" start="00:07:50.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""are of immediate relevance.""" start="00:07:53.100" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Part III, the ethics layer,""" start="00:07:55.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""focuses on contours of cures.""" start="00:07:58.220" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Having dismissed the Western""" start="00:08:01.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""intellectual property rights (IPR) regime""" start="00:08:02.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as an erroneous governance model for polyexistentials,""" start="00:08:06.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I propose the Libre-Halaal model""" start="00:08:11.740" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of governance of polyexistentials""" start="00:08:14.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""towards facilitating conviviality of tools.""" start="00:08:17.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Part IV, the engineering layer,""" start="00:08:22.780" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""introduces the Libre-Halaal ByStar Digital Ecosystem.""" start="00:08:25.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as an ethical alternative""" start="00:08:29.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to the prevailing proprietary""" start="00:08:32.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""American digital ecosystem.""" start="00:08:34.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The book also provides additional details""" start="00:08:37.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""about the content generation""" start="00:08:40.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and publication facilities""" start="00:08:42.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that I am presenting here.""" start="00:08:44.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And the book itself, as content,""" start="00:08:46.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""was generated and published""" start="00:08:50.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""using the facilities""" start="00:08:53.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that I am presenting here.""" start="00:08:55.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You can think of this book""" start="00:08:57.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as being in two volumes.""" start="00:08:59.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Our focus are Blee and BISOS in Volume II.""" start="00:09:01.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Volume I deals with the general concept""" start="00:09:05.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of polyexistence and invalidity""" start="00:09:10.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of IPR and our terminoloy of Libre-Halaal---""" start="00:09:13.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""instead of the common but ill directed vocabulary""" start="00:09:18.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of Free Software and Open-Source and FOSS.""" start="00:09:23.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In Chapter 11, I introduce""" start="00:09:28.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the very sensitive and potent vocabulary""" start="00:09:31.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of Halaal and Libre-Halaal.""" start="00:09:34.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The contents of this book""" start="00:09:37.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""belong to all of humanity""" start="00:09:39.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and verbatim copying of it is unrestricted.""" start="00:09:41.660" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If you want to read it, this book is yours.""" start="00:09:45.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The &quot;Nature of Polyexistentials&quot; book""" start="00:09:49.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is available both online and in print.""" start="00:09:51.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This book is available as two editions.""" start="00:09:56.660" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The US Edition and the International edition.""" start="00:09:59.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The US Edition is written""" start="00:10:03.820" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with a slightly milder Western unfriendly tone,""" start="00:10:05.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""while the International Edition""" start="00:10:10.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""includes additional original content in Farsi.""" start="00:10:12.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I consider the International Edition""" start="00:10:17.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to be the authoritative version.""" start="00:10:20.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""However, many readers in""" start="00:10:22.980" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the US and Western countries""" start="00:10:25.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""may prefer the US Edition.""" start="00:10:27.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I maintain separate Git repositories""" start="00:10:31.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for each edition on GitHub:""" start="00:10:34.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""US Edition is at bxplpc/120033""" start="00:10:36.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and International Edition: bxplpc/120074""" start="00:10:42.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Cloning these repositories""" start="00:10:51.420" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""will give you access to the book""" start="00:10:53.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in PDF format (suitable for both""" start="00:10:56.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""A4 and US Letter printing)""" start="00:11:00.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and in EPUB format.""" start="00:11:04.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Alternatively, the content""" start="00:11:06.380" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""can be downloaded directly from your browser""" start="00:11:08.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""without needing to clone the repositories.""" start="00:11:12.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""To ensure broader online""" start="00:11:17.260" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""availability and stability,""" start="00:11:19.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I have also published the book on Zenodo,""" start="00:11:21.900" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""complete with a DOI (Digital Object Identifier).""" start="00:11:26.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You can download both the A4""" start="00:11:31.780" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and 8.5 x 11 PDFs from there as well.""" start="00:11:34.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The book is also available in print on Amazon""" start="00:11:39.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and at most major bookstores""" start="00:11:44.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in the US and Western regions.""" start="00:11:46.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The ISBNs for both editions""" start="00:11:49.380" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""are included in this slide.""" start="00:11:51.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Additionally, I have published""" start="00:11:54.140" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""this book in Iran through Jangal Publishers.""" start="00:11:56.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I did not write this book for profit.""" start="00:12:00.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""My aim is to share my thoughts""" start="00:12:03.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and encourage readers to engage with my views and ideas.""" start="00:12:05.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Your feedback is welcome,""" start="00:12:10.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and I am genuinely interested""" start="00:12:12.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in hearing your perspectives.""" start="00:12:14.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In Western markets, I have priced the print edition""" start="00:12:17.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""somewhat above production costs.""" start="00:12:20.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If you find value in the book""" start="00:12:24.340" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and the ByStar project,""" start="00:12:26.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""purchasing a copy will help support my work.""" start="00:12:28.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Thanks in advance for your support.""" start="00:12:32.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And here are the same links""" start="00:12:37.460" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as a native Reveal slide.""" start="00:12:39.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If instead of a video,""" start="00:12:42.180" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""you are viewing this presentation as a Reveal web page,""" start="00:12:43.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""you can just click on the pointers and URLs.""" start="00:12:47.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Content processing - a ByStar/BISOS/Blee Capability Bundle (BCB)""" start="00:12:52.640" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Instead of the traditional model""" start="00:12:52.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of giving you recipes in a DIY context""" start="00:12:55.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""towards the goal of creating""" start="00:12:59.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""content processing capabilities""" start="00:13:01.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""on top of what you may already have,""" start="00:13:04.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I am doing the opposite.""" start="00:13:07.660" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I am saying: take this whole BISOS and Blee thing,""" start="00:13:09.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and in there you will also have""" start="00:13:15.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the content processing capabilities""" start="00:13:17.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that I am speaking of here.""" start="00:13:20.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So, at the top level we have""" start="00:13:22.580" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""our own autonomy and privacy""" start="00:13:24.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""directed digital ecosystem,""" start="00:13:27.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which in contrast to the center oriented""" start="00:13:30.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""American digital ecosystem,""" start="00:13:32.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is edge oriented.""" start="00:13:35.660" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""We call it: &quot;The Libre-Halaal""" start="00:13:38.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""ByStar Digital Ecosystem&quot;.""" start="00:13:40.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""All the systems in ByStar,""" start="00:13:43.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""run BISOS (By\* Internet Services OS),""" start="00:13:45.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which is a layer on top of Debian.""" start="00:13:50.700" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The usage environment of ByStar and BISOS is Blee""" start="00:13:53.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which is a layer on top of Emacs.""" start="00:13:58.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""With those in place, we then create""" start="00:14:01.580" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""a capability bundle called Blee-LCNT.""" start="00:14:04.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So, when you buy into Blee and BISOS,""" start="00:14:10.140" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""you will naturally also get""" start="00:14:13.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""these content processing capabilities---""" start="00:14:15.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""without a need for any recipies or DIY effort.""" start="00:14:18.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""ByStar containment hierarchy and ByStar capability bundles""" start="00:14:23.120" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""If you were to look at the model""" start="00:14:23.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that I introduced as containment hierarchies,""" start="00:14:24.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""it would look like this.""" start="00:14:29.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Aggregated conviviality of ByStar capabilities""" start="00:14:31.280" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""We love Emacs and we love Unix""" start="00:14:31.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""because their design is convivial.""" start="00:14:33.780" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""By convivial, I am referring""" start="00:14:36.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to Ivan Illich's concept""" start="00:14:39.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and terminology of &quot;Tools for Conviviality&quot;.""" start="00:14:40.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It was first published in 1973.""" start="00:14:45.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It's a must read.""" start="00:14:48.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""A goal of the design""" start="00:14:50.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of the ByStar Digital Ecosystem""" start="00:14:52.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is to enlarge the aggregated""" start="00:14:54.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""conviviality of its capabilities.""" start="00:14:57.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""What distinguishes Blee-LCNT""" start="00:15:01.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""from other content processing tools and frameworks,""" start="00:15:04.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is our emphasis on enhancing""" start="00:15:08.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the aggregated conviviality.""" start="00:15:12.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""These tools let you express yourself.""" start="00:15:15.660" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""They let you be in charge.""" start="00:15:19.260" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Parts list: integrated components""" start="00:15:22.000" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Here is our parts list.""" start="00:15:22.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""These are the components""" start="00:15:24.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that we have chosen to bring together""" start="00:15:25.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""towards our goal of creating convivial tools.""" start="00:15:27.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In this slide, we are using black ink""" start="00:15:32.780" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to denote exisiting tools""" start="00:15:36.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and we use violet ink""" start="00:15:38.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to denote pieces that we have developed""" start="00:15:41.340" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""towards cohesive integration.""" start="00:15:44.420" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""[This] video,""" start="00:15:46.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Resulting contents - output forms and formats""" start="00:15:47.868" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""the video is just one of the outputs.""" start="00:15:47.868" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""There are other outputs as well.""" start="00:15:51.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In this figure, the outputs""" start="00:15:54.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""are shown in the top layer.""" start="00:15:56.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Using this video as an example,""" start="00:15:58.860" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""this presentation's output also include""" start="00:16:02.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the &quot;Presentation Form&quot;""" start="00:16:05.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and the &quot;Article-Presentation Form&quot;.""" start="00:16:07.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Let's look at these more closely.""" start="00:16:11.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""For Presentations, there are 3 different forms.""" start="00:16:13.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The Video Form, the Presentation From""" start="00:16:17.260" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and the Article-Presentation Form.""" start="00:16:19.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The Presentation Form produces both a pdf output""" start="00:16:22.820" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and Reveal output.""" start="00:16:27.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Next we will walkthrough some of the benefits""" start="00:16:29.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that availability of these forms""" start="00:16:32.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and formats provide.""" start="00:16:35.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The video presentation that you are watching""" start="00:16:38.100" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is just one of the outputs""" start="00:16:41.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of the Blee-LCNT machinery.""" start="00:16:44.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""There are two PDF format outputs""" start="00:16:48.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and two HTML outputs""" start="00:16:52.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that are also quite useful.""" start="00:16:56.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The primary output of Beamer""" start="00:16:58.860" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is a set of slides""" start="00:17:02.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that people use to give their talks with.""" start="00:17:04.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Typically that's done live.""" start="00:17:10.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In my case I dissect the images of each frame""" start="00:17:12.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and do a voiceover on it""" start="00:17:19.180" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and then dispense it through reveal.""" start="00:17:21.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In a second, you will see that as well.""" start="00:17:28.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This PDF output is very useful.""" start="00:17:33.380" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You get the table of contents, of course,""" start="00:17:36.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and in addition to that,""" start="00:17:39.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Beamer generates navigations for you""" start="00:17:42.208" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""where on any part you get""" start="00:17:46.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""a small table of content as well.""" start="00:17:49.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This is heavily used amongst academics,""" start="00:17:51.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and it's a good output on its own,""" start="00:17:57.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and I'm augmenting it""" start="00:18:00.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in a variety of ways.""" start="00:18:03.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In addition to the presentation PDF format,""" start="00:18:05.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""there is also an article-presentation PDF format""" start="00:18:09.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which gives you the same content,""" start="00:18:15.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""but it gives it to you in a textual form""" start="00:18:18.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with the table of content and the rest.""" start="00:18:25.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This is a good form to use""" start="00:18:30.940" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""when you are giving, for example, class lectures,""" start="00:18:34.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and the students often prefer this format.""" start="00:18:39.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""reveal.js""" start="00:18:45.720" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Now for the HTML format output, the most relevant,""" start="00:18:45.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of course, is the reveal itself.""" start="00:18:51.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If you have not used reveal before,""" start="00:18:55.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in my view, it's a HTML slide dispenser.""" start="00:19:05.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I don't look at it as a presentation framework.""" start="00:19:10.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I use, as you are seeing, we use Beamer to feed into it""" start="00:19:15.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and we use it to dispense the information.""" start="00:19:22.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It has all the typical navigation""" start="00:19:25.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""capabilities that you would expect,""" start="00:19:33.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and most of what I have as slides are images,""" start="00:19:39.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""but occasionally, particularly when there is a need""" start="00:19:44.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to provide pointers, HTML pointers,""" start="00:19:48.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I then also include a textual output.""" start="00:19:53.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This is also produced""" start="00:20:01.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""from the Beamer LaTeX source,""" start="00:20:05.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""but it's HTML through textual HTML,""" start="00:20:09.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""through HeVeA, not the image.""" start="00:20:14.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You can... you get a table of contents.""" start="00:20:19.020" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You can navigate""" start="00:20:22.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and there are a whole lot of other features""" start="00:20:24.575" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that reveal also provides.""" start="00:20:28.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Generating the video""" start="00:20:31.980" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""So to generate the video,""" start="00:20:31.980" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""what I do is I come to""" start="00:20:35.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the very beginning of the presentation.""" start="00:20:40.981" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I turn on the screen capture recorder,""" start="00:20:49.460" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and then I start playing""" start="00:20:51.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the voiceover for each slide""" start="00:20:54.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and at the very end, you get a video,""" start="00:20:58.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""but what you just did is you dispensed every frame,""" start="00:21:02.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""one at a time, through reveal.""" start="00:21:08.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In addition to this HTML form,""" start="00:21:11.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""you also get an article presentation form of it,""" start="00:21:15.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with a full table of contents""" start="00:21:22.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and the videos are there, and the notes are there,""" start="00:21:24.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and this is also quite useful.""" start="00:21:27.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""A unified single input -- a sequencef of frames""" start="00:21:33.480" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Now, let's look at the one single input file""" start="00:21:33.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that produced all of the outputs""" start="00:21:36.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that we just saw.""" start="00:21:38.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I have put both the input file""" start="00:21:39.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and some of the output files""" start="00:21:43.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for this presentation on Github.""" start="00:21:45.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Here are some links""" start="00:21:48.300" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to these repos and files.""" start="00:21:49.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And here are the same links""" start="00:21:51.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as a native Reveal slide.""" start="00:21:54.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This figure gives us an overview""" start="00:21:57.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of how one set of inputs""" start="00:21:59.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""encapsulted in a single file""" start="00:22:02.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""can produce all of the outputs that we saw.""" start="00:22:04.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The main TeX file shown at the bottom""" start="00:22:08.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is processed by both XeLaTeX and by HeVeA.""" start="00:22:11.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""That main TeX file, in addition""" start="00:22:15.660" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to LaTeX syntax,""" start="00:22:18.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""also include org-mode constructs""" start="00:22:19.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that facilitate addition of audio and video files.""" start="00:22:23.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Later, I'll walkthrough the bodyPresArtEnFa.tex file""" start="00:22:27.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that generated this very presentation with you.""" start="00:22:34.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Abstractions to keep in mind""" start="00:22:39.180" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""When you construct that primary TeX file,""" start="00:22:39.180" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""there are several abstractions""" start="00:22:42.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that you need to keep in mind.""" start="00:22:44.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Is my presentation going to go""" start="00:22:46.900" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""from Left-To-Right or from Right-To-Left?""" start="00:22:49.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Perso-Arabic presentations go from Right-To-Left.""" start="00:22:52.740" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Another consideration is the types""" start="00:22:57.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of forms of results that you want.""" start="00:22:59.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Just the presentation""" start="00:23:03.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""or Article-Presentation as well?""" start="00:23:05.020" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""With those choices in place""" start="00:23:09.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""you can produce condition based text""" start="00:23:10.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for each of your desired outputs.""" start="00:23:13.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Frame control types""" start="00:23:16.200" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Think of this video presentation""" start="00:23:16.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as a sequence of frames.""" start="00:23:18.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Each frame is controlled by an org-mode dynamic block.""" start="00:23:20.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This table lists available dblocks""" start="00:23:26.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""from which you can choose.""" start="00:23:29.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""For example, this particular frame""" start="00:23:31.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that we are watching""" start="00:23:34.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is controlled by b:lcnt:pres:frame/derivedImage.""" start="00:23:34.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Beamer creates a pdf file""" start="00:23:41.980" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that includes the image of this slide.""" start="00:23:44.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""That image is then injected into Reveal.""" start="00:23:47.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And in the end, a video of that image is produced""" start="00:23:51.460" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with the narrations""" start="00:23:55.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that I am uttering right now.""" start="00:23:57.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""All of this has similarly been applied""" start="00:23:59.260" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to each and every frame""" start="00:24:02.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that you have been watching.""" start="00:24:03.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Similar to Frame Controls,""" start="00:24:05.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""there are org-mode dynamic blocks""" start="00:24:08.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for &quot;Frame Body Types&quot;.""" start="00:24:10.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You can easily insert an image""" start="00:24:13.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which is typically created by OpenOffice Draw""" start="00:24:15.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""into a frame.""" start="00:24:19.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Same with say a screen capture video.""" start="00:24:21.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""How outputs are generate from the inputs""" start="00:24:24.360" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Now that we have looked at the &quot;Outputs&quot; and the &quot;Inputs&quot;,""" start="00:24:24.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""let's look at how the Outputs""" start="00:24:29.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""are generated from the Inputs.""" start="00:24:31.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Let's bootstrap Raw-BISOS and Raw-Blee.""" start="00:24:35.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Starting from scratch,""" start="00:24:39.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""get yourself a fresh copy of Debian 12.""" start="00:24:41.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Then go to https://github.com/bxGenesis/start .""" start="00:24:45.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The README.org file""" start="00:24:52.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of that github repo""" start="00:24:55.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is same as Chapter 18,""" start="00:24:57.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""&quot;Engineering Adoption of BISOS and ByStar&quot; of the book.""" start="00:24:58.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""We will next run &quot;raw-bisos.sh&quot;,""" start="00:25:01.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""but prior to that, let's take a quick look.""" start="00:25:05.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This bootstrap scripts will do a lot as root""" start="00:25:09.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""on your Fresh-Debian.""" start="00:25:14.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It is best to first try it""" start="00:25:16.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""on a disposable VM.""" start="00:25:18.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""raw-bisos.sh adds the current debian user to sudoers.""" start="00:25:21.180" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Then it installs pipx.""" start="00:25:27.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And then with pipx it installs""" start="00:25:30.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""from PyPI bisos.provision.""" start="00:25:34.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""bisos.provision includes additional bash scripts""" start="00:25:38.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that are then executed.""" start="00:25:43.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Full installation involves""" start="00:25:45.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""setting up various accounts, groups,""" start="00:25:48.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""various directory hierarchies,""" start="00:25:51.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""lots of apt packages""" start="00:25:53.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and lots of python packages""" start="00:25:55.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""from the bisos namespace.""" start="00:25:57.980" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If you are ready, copy and paste""" start="00:26:01.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""this line and run it.""" start="00:26:03.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""You will be prompted""" start="00:26:06.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for the root password.""" start="00:26:08.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Then be patient.""" start="00:26:09.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Full installation""" start="00:26:11.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""can take 15 minutes or so.""" start="00:26:12.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The logs of this script""" start="00:26:14.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""are also captured""" start="00:26:17.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in ~/raw-bisos-${dateTag}-log.org""" start="00:26:18.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Context for unified source walkthrough""" start="00:26:25.200" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Now that we have Raw-BISOS and Raw-Blee installed,""" start="00:26:25.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""we are ready to walk through""" start="00:26:28.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the unified source""" start="00:26:31.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of the very presentation""" start="00:26:32.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that you are watching.""" start="00:26:34.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""The &quot;bodyPresArtEnFa.tex&quot; file""" start="00:26:36.260" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that we will visit""" start="00:26:40.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is in COMEEGA-LaTeX syntax""" start="00:26:42.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with lots of org-mode dblocks""" start="00:26:45.060" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which generate Beamer-LaTeX frames""" start="00:26:47.700" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and conditioned LaTeX bodies.""" start="00:26:50.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""After the walkthrough,""" start="00:26:54.140" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I'll describe dblocks and COMEEGA in more detail.""" start="00:26:55.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""At the tail end of the walkthrough,""" start="00:27:00.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""we will also go through the generation process""" start="00:27:02.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which runs XeLaTeX and HeVeA and a lot more.""" start="00:27:05.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Let's look at our input file.""" start="00:27:10.860" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It's a LaTeX file in LaTeX mode,""" start="00:27:13.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and it has org syntax org-mode included in it,""" start="00:27:17.020" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and I can toggle between LaTeX and org-mode.""" start="00:27:24.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So, now I'm gonna be in org-mode,""" start="00:27:29.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and org-mode gives me everything""" start="00:27:33.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""that org has to offer,""" start="00:27:37.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""including a very convenient navigation framework.""" start="00:27:39.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""One slide""" start="00:27:46.480" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Let's take one slide and take a look at how it was done.""" start="00:27:46.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So I would come to this scope slide""" start="00:27:54.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and while I am there, I'm going to click on N.""" start="00:27:58.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""N takes me to the native LaTeX form back,""" start="00:28:04.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""so that I'll be looking at it not in org, but in LaTeX.""" start="00:28:09.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So we're back in LaTeX, and as you can see""" start="00:28:16.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""it uses a dynamic block""" start="00:28:22.907" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""starting with the comments and the BEGIN,""" start="00:28:26.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and it uses a dynamic block""" start="00:28:30.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""named a framedDrive image,""" start="00:28:34.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""which means the content of this frame""" start="00:28:38.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""will be dispensed as an image, not as text,""" start="00:28:45.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and it also automatically creates for me""" start="00:28:50.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""a name, a label, that can be used""" start="00:28:56.900" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for voiceover augmentation.""" start="00:29:00.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So a file in the audio directory""" start="00:29:05.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""called ScopeOfBleeLcnt.mp3""" start="00:29:08.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is this audio that will come on top of this slide""" start="00:29:13.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and then the rest is the LaTeX itself.""" start="00:29:19.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Dynamic blocks""" start="00:29:24.080" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""The concept of &quot;Org Dynamic Blocks&quot;""" start="00:29:24.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is very powerful.""" start="00:29:29.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I think of them as universal""" start="00:29:31.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""visible macros.""" start="00:29:33.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""But, why should they be primarily used in just Org-Mode?""" start="00:29:35.180" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I say, let's generalize them""" start="00:29:41.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to &quot;Emacs Dynamic Blocks&quot;.""" start="00:29:43.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Have defaults for org-dblock-start-re""" start="00:29:46.060" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in every relevant mode""" start="00:29:49.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and use them everywhere.""" start="00:29:52.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Blee does that.""" start="00:29:55.100" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In COMEEGA-LaTeX, Dynamic Blocks create Frame Controls""" start="00:29:56.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and insert Image and Video contents.""" start="00:30:01.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Much of Blee and BISOS""" start="00:30:05.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""are implemented in COMEEGA.""" start="00:30:07.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Almost all of our Elisp, Python, Bash""" start="00:30:09.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and LaTeX work uses COMEEGA.""" start="00:30:13.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""COMEEGA stands for Collaborative""" start="00:30:17.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Org-Mode""" start="00:30:19.300" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Enhanced Emacs Generalized Authorship.""" start="00:30:21.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""It is the inverse of org-babel.""" start="00:30:24.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""COMEEGA adds org-mode""" start="00:30:27.880" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to your programming mode.""" start="00:30:30.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Full and proper use of COMEEGA,""" start="00:30:33.100" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""requires Polymode.""" start="00:30:35.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Let's call that Poly-COMEEGA.""" start="00:30:38.300" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""But Emacs's Polymode""" start="00:30:41.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is work-in-progress,""" start="00:30:43.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""particularly now with the new tree-sitter.""" start="00:30:45.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""So, in the interim, my usage of COMEEGA""" start="00:30:49.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""has been in the form of Toggle-COMEEGA.""" start="00:30:53.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Where I manually switch between""" start="00:30:55.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""the programming-mode and org-mode.""" start="00:30:59.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""For me this has proved to be""" start="00:31:02.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""a fine interim solution.""" start="00:31:04.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Internationalization - a non-Americanist perspective""" start="00:31:05.800" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Naturally, content processing""" start="00:31:05.800" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""should be multi-lingual""" start="00:31:09.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and internationalized.""" start="00:31:11.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Let's look at that dimension.""" start="00:31:14.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I am Iranian and much of what I write is in Farsi.""" start="00:31:15.840" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Getting Perso-Arabic text right""" start="00:31:21.020" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""is often a challenge,""" start="00:31:23.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""as it involves Bi-Directional text (BIDI)""" start="00:31:25.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and shaping of characters.""" start="00:31:30.060" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In the context of our content generation""" start="00:31:33.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""these need to span all relevant tools,""" start="00:31:36.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""not just emacs.""" start="00:31:39.820" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""For emacs, I have created""" start="00:31:41.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""my own input method""" start="00:31:43.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""called farsi-transliterate-banan.""" start="00:31:46.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""My EmacsConf 2021 talk was about that.""" start="00:31:49.420" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Now let's look at some examples""" start="00:31:54.140" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and spice it up a bit with semantics.""" start="00:31:57.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""As an example of proper BIDI text,""" start="00:32:01.700" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""here is the orignal Farsi text""" start="00:32:05.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""along with English translation""" start="00:32:07.900" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of Imam Khomeini's text""" start="00:32:10.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""with respect to invalidity""" start="00:32:12.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of Western Intellectual Proprty Rights regime.""" start="00:32:15.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And as another example""" start="00:32:20.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of proper BIDI text,""" start="00:32:23.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""here is Ayatollah Mothari's take on Western IPR""" start="00:32:24.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""not being private property. Note that these predate""" start="00:32:29.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""by more than half a century""" start="00:32:35.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Jack Dorsey and Elon Musk's tweets of April 11, 2025""" start="00:32:36.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""saying &quot;Delete all IP law&quot;.""" start="00:32:43.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This topic is too important""" start="00:32:47.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and too sensitive""" start="00:32:49.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to be left to American billionaires""" start="00:32:50.400" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and their tweets.""" start="00:32:53.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Let me again refer you to the logic""" start="00:32:55.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""of polyexistentials in my book.""" start="00:32:58.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Chapter 14 of the book is dedicated to""" start="00:33:00.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Ethics and ownership in Religions.""" start="00:33:06.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""With respect to my preference""" start="00:33:08.580" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for Ethics over Freedom,""" start="00:33:10.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""let me refer you to Section 12.4""" start="00:33:12.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""&quot;A Cynical Perspective""" start="00:33:16.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""on Freedom Orientation of Americans&quot;""" start="00:33:19.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in which I describe where the FOSS labels""" start="00:33:22.860" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and the likes of Stallman, Raymond,""" start="00:33:26.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Moglen and Lessig have gone wrong.""" start="00:33:29.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If you are one of their followers,""" start="00:33:31.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""perhaps Chapter 12 is for you.""" start="00:33:34.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""My emphasis thus far has been on content generation.""" start="00:33:36.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Autonomous self-publication and federated re-publications""" start="00:33:42.280" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""Let's very briefly also look at""" start="00:33:42.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Autonomous Self-Publication""" start="00:33:45.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and Federated Re-Publications of our content.""" start="00:33:47.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""From the very beginning the Debian folks""" start="00:33:52.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""understood the importance of &quot;Universality&quot;""" start="00:33:55.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and coined the &quot;Universal Debian&quot; label.""" start="00:33:59.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This means that we can base""" start="00:34:03.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""our entire digital ecosystem""" start="00:34:05.920" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""on just the Libre-Halaal Debian distro.""" start="00:34:08.620" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""And that is what we have done with ByStar.""" start="00:34:13.500" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In ByStar, everything is based on""" start="00:34:17.300" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""just the Universal Debian everywhere.""" start="00:34:20.040" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""This has made our Usage Environment""" start="00:34:24.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""totally harmonious with our Service Environment""" start="00:34:27.000" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""allowing for very powerful software-service continuums.""" start="00:34:31.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Of course, all of this is immediately applicable""" start="00:34:38.060" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to our ByStar Content Bundle as well.""" start="00:34:41.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Some have asked, why don't you also include Ubuntu?""" start="00:34:46.020" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I think the opposite makes more sense.""" start="00:34:50.520" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Ubuntu should converge with Debian.""" start="00:34:53.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I tried to explain this to Mark Shuttleworth""" start="00:34:56.700" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in an email a while back.""" start="00:34:59.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I have included that email""" start="00:35:02.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""in Section 12.1.5.""" start="00:35:04.120" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Ingredients of BISOS platforms and their progression""" start="00:35:07.720" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""In this presentation, we have stopped""" start="00:35:07.720" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""at the &quot;Raw-BISOS&quot; stage.""" start="00:35:10.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""We can further evolve Raw-BISOS""" start="00:35:13.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and make it be &quot;Sited&quot;""" start="00:35:15.760" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and provide autonomous publication services.""" start="00:35:17.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""But here by going through EmacsConf and youtube""" start="00:35:22.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""we are using the &quot;Federated Re-Publications&quot; model.""" start="00:35:25.680" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Something this large,""" start="00:35:30.960" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""should be well documented.""" start="00:35:32.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In Emacs, the way that""" start="00:35:35.480" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""we have been dealing with documentation""" start="00:35:37.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and information retrieval is archaic.""" start="00:35:39.320" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Man-pages, TeXInfo, Helpful-Mode""" start="00:35:43.440" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and convention based Doc-Strings are old and limited.""" start="00:35:46.080" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""In BISOS and Blee, we use Blee-Panels""" start="00:35:51.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for all kinds of documentation.""" start="00:35:55.280" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""Let me show you some examples.""" start="00:35:57.740" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Moving forward""" start="00:36:02.560" video="mainVideo-blee-lcnt" id="subtitle"]]</div>[[!template text="""So, what next?""" start="00:36:02.560" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""If Blee, BISOS, ByStar, Libre-Halaal, Polyexistentials""" start="00:36:05.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and these Content Processing capabilities""" start="00:36:10.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""have piqued your interest,""" start="00:36:14.160" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""please feel welcome to contact me.""" start="00:36:16.640" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""These Emacs Conferences have proven""" start="00:36:19.380" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""to be very useful and productive.""" start="00:36:22.240" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I look forward to your thoughts,""" start="00:36:25.380" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""feedback and questions.""" start="00:36:27.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""I want to thank all the EmacsConf 2025 Organizers""" start="00:36:29.600" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""for their great work,""" start="00:36:35.360" video="mainVideo-blee-lcnt" id="subtitle"]]
+[[!template text="""and Sacha in particular.""" start="00:36:37.200" video="mainVideo-blee-lcnt" id="subtitle"]]
+
+</div>
+
+Captioner: mohsen
+
+<div class="transcript transcript-qanda"><a name="blee-lcnt-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""Greetings. Salaam again. I'm delighted to be here""" start="00:00:00.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and happy to answer your questions.""" start="00:00:05.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I'm not seeing anything yet,""" start="00:00:11.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""but let me take advantage of this time""" start="00:00:12.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to speak about one question""" start="00:00:17.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""If you can bring up the pad so that you can look at it.""" start="00:00:17.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that I saw coming in earlier on the pad,""" start="00:00:20.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""which was all the outputs""" start="00:00:22.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and the inputs that you mentioned, where are they?""" start="00:00:25.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So they are on GitHub, and this is in one of my slides.""" start="00:00:29.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I mentioned the URL for it. I'll show you that as well.""" start="00:00:35.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So the URL for it is github.com bxplpc18068,""" start="00:00:43.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Okay. Hang on a second. I will.""" start="00:00:43.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""which is the handle for this talk.""" start="00:00:50.392" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""In there, you have all the PDFs and the HTMLs,""" start="00:00:58.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then people can join here as well.""" start="00:01:00.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""a citation, a bib input, and also the sources.""" start="00:01:06.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So if you were to go to the PDF, you will see""" start="00:01:12.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Um, both the article presentation and the,""" start="00:01:19.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""let's take a quick look at the.""" start="00:01:24.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Which is what you have seen. So.""" start="00:01:27.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And as far as the sources are, there are two primary files.""" start="00:01:34.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I think we're now in a live Q&A session for Blee-LCNT,""" start="00:01:37.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This presentation, left to right,""" start="00:01:40.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and people can join us here in the Big Blue Button room,""" start="00:01:46.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is the one that includes all the LaTeX packages.""" start="00:01:47.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""We might as well take a quick look.""" start="00:01:50.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So what's in there is primarily the use packages.""" start="00:01:52.642" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then it dispatches to body press art.""" start="00:01:57.601" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And this is where the code is.""" start="00:02:07.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And I walked through this briefly.""" start="00:02:11.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, notice here again that this is a mixture of LaTeX and Org.""" start="00:02:14.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Each of the presentation slides are here.""" start="00:02:26.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""For example, my introduction""" start="00:02:31.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is just a video that gets included.""" start="00:02:34.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then the notes that I use, the voiceover,""" start="00:02:37.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is also included in the LaTeX file.""" start="00:02:41.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Let me... It'll probably be easy""" start="00:02:47.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to take those voiceover notes""" start="00:02:50.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and then align them with a tool like NES.""" start="00:02:52.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to make subtitles for your videos.""" start="00:02:54.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Exactly, and that is what I do.""" start="00:02:58.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So there is a way to gather them all as P-notes.""" start="00:03:01.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And so all the P-notes get together in a single file,""" start="00:03:08.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and then you feed that to Aeneas, and it will align them.""" start="00:03:13.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then there is the work of using your subed""" start="00:03:20.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to just get the right sort of line length on them.""" start="00:03:23.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But you did all of that for me this year, Sacha.""" start="00:03:30.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Thank you very much.""" start="00:03:33.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""It was just a matter of not having time.""" start="00:03:34.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Otherwise, I plan to do it myself. It's all right.""" start="00:03:37.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""It was very easy since he provided the full narration.""" start="00:03:43.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I still need to tweak it sometimes,""" start="00:03:46.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""so I often use the waveforms in subed""" start="00:03:50.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to find the right starting time and ending time for things.""" start="00:03:52.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But it is so nice to have a presentation""" start="00:03:58.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""where you can experience it in different forms,""" start="00:04:01.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""as an article, as a video, as a post with links and everything.""" start="00:04:03.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Very handy.""" start="00:04:10.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Right, and in case a teacher uses this for class lectures,""" start="00:04:11.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""then the student profits from all sorts.""" start="00:04:20.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""The article presentation format is very useful""" start="00:04:26.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""for a student to add their own notes to it and the rest.""" start="00:04:29.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Exactly as you said, having multiple forms is great.""" start="00:04:33.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Video has its place, reveal has its place,""" start="00:04:37.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""PDF has its place, article has its place.""" start="00:04:40.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""All of them work together.""" start="00:04:44.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I've been having a hard time figuring out""" start="00:04:48.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""how to make the reveal.js version of a presentation""" start="00:04:50.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""more easily distributable, though.""" start="00:04:54.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This is something we've had a hard time""" start="00:04:57.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""with in the past, too.""" start="00:04:58.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""You have these lovely EmacsConf presentations""" start="00:05:00.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that could be reveal presentations,""" start="00:05:02.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""but hosting them doesn't quite fit""" start="00:05:04.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""in the usual assumptions people have. Exactly, exactly.""" start="00:05:07.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So if we were to have a reveal server,""" start="00:05:13.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""then we could upload our reveal inputs to it.""" start="00:05:16.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But you're right, we should look""" start="00:05:20.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""for some sort of a packaging""" start="00:05:25.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that is more plug and distribute. Yeah, so I'd be all game""" start="00:05:26.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""if we wanted to do it for next year,""" start="00:05:34.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I'd be happy to provide all the reveal outputs.""" start="00:05:36.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""In fact, they are here, let me touch on that quickly.""" start="00:05:42.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Good point you brought up. So, this is the. Reveal output.""" start="00:05:45.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So all of these, you see the images and the audio""" start="00:05:53.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""in my own environment are SIM links to where I keep them.""" start="00:05:57.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So those need to come in,""" start="00:06:02.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""but the reveal output really comes right here.""" start="00:06:06.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And this is how it looks.""" start="00:06:10.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""If that's a link you can add to the pad,""" start="00:06:13.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""then I can add you to the top page afterwards.""" start="00:06:15.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I think as a, as a speaker,""" start="00:06:19.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I tend to just self host the thing.""" start="00:06:21.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And that way also, if I find a bug, which often happens,""" start="00:06:24.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I can go and quietly update it.""" start="00:06:28.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Exactly. Exactly. Sure. Sure. Yeah.""" start="00:06:30.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This right now, what we are looking at is from GitHub.""" start="00:06:36.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And the audio and the images, of course, are large,""" start="00:06:44.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and I did not upload them. But I can send them, sure.""" start="00:06:48.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, a few other things maybe I can elaborate on.""" start="00:06:55.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This is the kombut strapping page for BISOS, also on there.""" start="00:07:02.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And if somebody wanted to actually""" start="00:07:08.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""dig deeper and go through this,""" start="00:07:11.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""a good starting point would be my GitHub page.""" start="00:07:12.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But my GitHub page is not done and organized the usual way.""" start="00:07:18.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So I only have three repositories""" start="00:07:24.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and the repositories basically say,""" start="00:07:27.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""here is where you need to go.""" start="00:07:30.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So all of my work is organized as organizations.""" start="00:07:32.267" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, for example, for Emacs, if you were to go to BXBli,""" start="00:07:39.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""you will see all the relevant repos for that purpose.""" start="00:07:48.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, for example, if you wanted to""" start="00:07:56.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""come and take a look at mail template,""" start="00:07:58.976" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""templating, distribution, and tracking,""" start="00:08:03.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""you would get a Emacs package ready to go over here.""" start="00:08:08.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But again, all of this is through the use of GitHub organizations.""" start="00:08:16.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So my repos are by subject""" start="00:08:23.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and the by source itself has 69 repositories""" start="00:08:26.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""where different sections of it are packaged as PIP packages.""" start="00:08:33.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, for example, for LCNT, we can go there.""" start="00:08:38.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, these are the packages that let you,""" start="00:08:42.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""let me go there, that let you dissect.""" start="00:08:46.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Sorry, you have your slides shared at the moment,""" start="00:08:53.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""so I don't know if you're in a different tab.""" start="00:08:55.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Oh, am I in a different tab?""" start="00:08:59.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I thought that that would follow me.""" start="00:09:03.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Yes, I am in a different tab. Let me see.""" start="00:09:06.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This is the one that you are seeing,""" start="00:09:16.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""so let me go over here. Perfect. Now you're seeing it.""" start="00:09:19.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So literally on the same page. Awesome. Right.""" start="00:09:28.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So you were not actually seeing what I was saying.""" start="00:09:31.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, so what I was saying that is that""" start="00:09:33.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""if you go to my primary website, GitHub page,""" start="00:09:36.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""you will see that there are only three repos there.""" start="00:09:42.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And those repos just give information""" start="00:09:45.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""about where the real repos are.""" start="00:09:49.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And the real repos are organized in various organizations.""" start="00:09:52.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, for example, for Emacs packages, I use the bxblee""" start="00:09:57.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And in there, there are 40 repositories.""" start="00:10:06.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And as an example, you can choose, for example,""" start="00:10:12.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""AI plus is just a few additional libraries for menus, for AIDERMAX.""" start="00:10:15.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And the rest of BLEE is done that way as well.""" start="00:10:26.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So if you were to let me also show""" start="00:10:31.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""more relevant stuff to the content generation.""" start="00:10:36.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And everything related to BySauce in Python is in BySauce pip.""" start="00:10:43.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""These are packages that are ready""" start="00:10:48.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to be exported to pypi and""" start="00:10:52.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""For example, for LCNT, if you go here,""" start="00:10:57.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""let's go to the bin directory.""" start="00:11:02.750" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""These are the utilities that dissect the PDF output of Beamer""" start="00:11:04.559" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""converted to images so that you can insert them in Reveal.""" start="00:11:15.809" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then again, if you were to just wanted to dig deeper""" start="00:11:23.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""in any of these as components,""" start="00:11:29.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""you would simply start from this top level page""" start="00:11:34.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and explore the organizations.""" start="00:11:40.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So in total, maybe there is 300 repos,""" start="00:11:44.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""but they are organized by subject matter""" start="00:11:48.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""within GitHub organizations.""" start="00:11:54.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Yeah. Additional general comment.""" start="00:12:03.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""If you were to look at my presentation,""" start="00:12:10.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I'd say I touched on five different topics.""" start="00:12:13.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, one topic was this content generation in general.""" start="00:12:17.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""The second one was this challenge of DIY model and recipes""" start="00:12:24.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""versus building something large""" start="00:12:35.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and including everything in it.""" start="00:12:38.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And that is, that has been the motivation""" start="00:12:40.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""for BySauce and BLE.""" start="00:12:43.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And I'm interested in getting feedback on it.""" start="00:12:46.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""In general, the open source culture""" start="00:12:50.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""has been focusing on components""" start="00:12:54.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and large American corporations""" start="00:13:00.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""have focused in integration of these components.""" start="00:13:03.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So my short message here is that""" start="00:13:07.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""we should start thinking as providing solutions""" start="00:13:11.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""as opposed to minor pieces and packages""" start="00:13:17.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and put them all together and claim them as our own digital ecosystem.""" start="00:13:23.520" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And this is the concept behind ByStar, BySource and BLEE.""" start="00:13:30.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""The third point I was making throughout""" start="00:13:38.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is this concept of dynamic blocks everywhere,""" start="00:13:41.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and Comiga, which is the inverse of Babel.""" start="00:13:45.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And I'd also be interested in feedback on those.""" start="00:13:51.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I think the d-blocks-everywhere concept,""" start="00:13:57.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I can very quickly show that.""" start="00:14:03.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""it would be in the LaTeX file, as an example.""" start="00:14:13.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I didn't really do a good job in digging deeper into that.""" start="00:14:18.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So if you go to the sources""" start="00:14:23.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and you look at any of the slides,""" start="00:14:25.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""All the slides are in here inside of a dynamic block.""" start="00:14:31.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This is an org D block,""" start="00:14:39.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""but you would invoke it in LaTeX mode.""" start="00:14:41.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then from this begin to this end,""" start="00:14:46.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""everything is auto-generated""" start="00:14:51.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""through the Elisp function, body MM video.""" start="00:14:54.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And the parameters that it takes are the video pass.""" start="00:15:00.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So all of this code is repeated all over the place.""" start="00:15:06.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And all you need in it is the video pass.""" start="00:15:12.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So it's very easy to think of this as a macro capability,""" start="00:15:15.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""except that the macro is visible.""" start="00:15:21.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And it has one additional benefit""" start="00:15:25.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""on top of general macro capabilities,""" start="00:15:29.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and that is that it's open.""" start="00:15:34.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""In this particular case, it closes,""" start="00:15:36.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""but let me show you another one where it is open.""" start="00:15:41.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So if you look at, this is latex section, this one is good.""" start="00:15:46.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This is a derived image. And by saying that it's open""" start="00:15:54.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is that you see my begin verbatim and my begin frame.""" start="00:16:00.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""They end and there is no closing for them.""" start="00:16:06.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So the extra text that is outside""" start="00:16:11.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""of the D block and closes it is down here.""" start="00:16:15.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And none of the existing macro capabilities""" start="00:16:21.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""gives you this feature. This even comes handy in Lisp.""" start="00:16:24.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So that is a proposal saying""" start="00:16:30.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that let's make D blocks, dynamic blocks,""" start="00:16:40.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""generalized to all of Emacs, as opposed to just org mode.""" start="00:16:47.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And that's relatively simple.""" start="00:16:52.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And the Emacs source team could easily decide""" start="00:16:54.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that this is worthwhile doing.""" start="00:17:01.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then, of course, I've gone""" start="00:17:02.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""over it through the presentation.""" start="00:17:07.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So, I see 1 question coming in. What changes have you seen?""" start="00:17:09.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""the culture while developing all these things""" start="00:17:20.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""like liver halal system and now BLCNT.""" start="00:17:24.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Well, it's a work in progress, I would say.""" start="00:17:28.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""We learn from one another.""" start="00:17:40.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And what I'm doing may be considered""" start="00:17:43.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""just a stepwise increment,""" start="00:17:47.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""but the cultural input is that we really should start""" start="00:17:52.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""thinking about providing solutions as opposed to packages.""" start="00:18:01.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""The FOSS culture is really limited in its scope to packages""" start="00:18:09.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""or even if when you think something very large like Debian,""" start="00:18:19.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""which is a collection of packages.""" start="00:18:24.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And it is still choice oriented,""" start="00:18:28.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""as opposed to solution oriented.""" start="00:18:31.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Yeah. Are there any additional topics or questions?""" start="00:18:55.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Otherwise, I'll just add a few additional concepts.""" start="00:19:03.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So the two other points made throughout the presentations""" start="00:19:11.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""are that this statement about clear invalidity""" start="00:19:18.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""of the Western IPO regime.""" start="00:19:28.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So throughout the first movement,""" start="00:19:30.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""we have been focusing on providing alternative licenses""" start="00:19:34.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""which coexist with the IPR system.""" start="00:19:42.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And that is the practical thing to do.""" start="00:19:49.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""We are doing a jujitsu on IPR.""" start="00:19:52.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""We are saying that this is our license to it.""" start="00:19:55.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But conceptually, there has been little discussion""" start="00:20:00.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and also positioning on this basic question""" start="00:20:07.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""as to whether or not copyright""" start="00:20:14.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and patents are valid or invalid.""" start="00:20:17.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And what I am saying is that it is clear that they are invalid,""" start="00:20:21.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""particularly once you start looking at them""" start="00:20:26.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""with the lens of polyexistentials.""" start="00:20:30.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And that the false movement""" start="00:20:33.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""really needs to combine these two,""" start="00:20:39.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""this notion of free software and open source licenses,""" start="00:20:42.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and combined with the belief system""" start="00:20:47.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that we are completely and utterly against""" start="00:20:51.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""the validity of the Western intellectual property rights regime.""" start="00:20:55.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And I use the Western and the American occasionally,""" start="00:21:00.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and the reason behind that is that in fact it is, they are Western.""" start="00:21:05.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""If you go to any other language, if you go to Farsi,""" start="00:21:12.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""if you go to Arabic, if you go to Chinese,""" start="00:21:16.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""if you go to Japanese, which are non-Western cultures,""" start="00:21:19.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""the concept of intellectual property,""" start="00:21:24.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""the words, the vocabulary of those""" start="00:21:28.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""combination of intellectual and property,""" start="00:21:33.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""did not exist anywhere in those cultures.""" start="00:21:36.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""It's only in the past, maybe 60, 70 years""" start="00:21:40.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that they have been translated from the Western world and brought into it.""" start="00:21:44.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So there is an inherent root""" start="00:21:52.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""into the intellectual property rights system,""" start="00:21:54.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""which goes to the Western culture.""" start="00:21:58.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""The second point that I have brought into""" start="00:22:02.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""this presentation and the previous ones""" start="00:22:08.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is this question of, if we go with free software,""" start="00:22:11.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""if we go with open software,""" start="00:22:16.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""are we really creating the right labels?""" start="00:22:18.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And my point is that no, neither of them,""" start="00:22:22.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""neither free software, nor open source""" start="00:22:25.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""are capturing really the essence""" start="00:22:29.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""of what we are trying to do.""" start="00:22:33.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And I claim that that is in fact ethics and morality.""" start="00:22:36.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And it is societal belief that if we reject""" start="00:22:41.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""intellectual property rights regime,""" start="00:22:48.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""what do we replace it with?""" start="00:22:51.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And in my thinking is that a software developer""" start="00:22:53.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""does not get to choose""" start="00:22:58.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""what license goes with his or her software,""" start="00:23:00.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and that the equivalent of a federal GPL""" start="00:23:04.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is the default correct license""" start="00:23:09.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to use for all of your software""" start="00:23:13.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""because it is the one that reflects the belief system""" start="00:23:16.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that all software should be ethical software.""" start="00:23:21.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Yeah, I'm looking at the Etherpad again and""" start="00:23:24.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""The question is about IP and AI.""" start="00:23:43.560" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So yeah, over the past two years,""" start="00:23:48.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""something huge has happened.""" start="00:23:54.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And what I am seeing in there as a solution""" start="00:23:56.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is essentially comes down to a talk""" start="00:24:04.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that was given maybe two years ago by someone at EmacsConf,""" start="00:24:12.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and its label was attribution-based economics.""" start="00:24:16.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""In my thinking, intellectual property""" start="00:24:22.360" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""as a whole is invalid.""" start="00:24:28.320" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But that means that through something like a federal GPL,""" start="00:24:29.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""you focus on attribution basing, proper attribution basing.""" start="00:24:36.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""If somebody has done some work,""" start="00:24:41.720" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""it should be clear, no matter what, that that work is his.""" start="00:24:43.840" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And that we already, even prior to AI, we were seeing this.""" start="00:24:48.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""We were seeing large GitHub repos with hundreds of authors.""" start="00:24:54.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And it was utterly unclear as to who would own this whole thing.""" start="00:24:59.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And any piece of it is not of significance.""" start="00:25:09.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""What is of significance is the whole thing.""" start="00:25:14.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So moving towards that attribution based economics is key.""" start="00:25:16.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And then once we do that,""" start="00:25:25.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and then we accept AI as a reality.""" start="00:25:27.600" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""AI should still take very seriously""" start="00:25:31.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and conform to attribution-based economics.""" start="00:25:38.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""In other words, what is generated by the machine""" start="00:25:44.000" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""should not be claimed to be no one's""" start="00:25:47.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""or the machine owners, the AI owners.""" start="00:25:51.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""It should still clearly be attributed""" start="00:25:54.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""to the people who contributed in its creation.""" start="00:25:56.880" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""This all becomes very muddy, very clear,""" start="00:26:03.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and I don't have a simple or clear answer to it.""" start="00:26:06.960" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""But the perimeters of the solution lie in""" start="00:26:11.920" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""rejection of intellectual property,""" start="00:26:16.080" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""replacement of the intellectual property""" start="00:26:21.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""with attribution-based economics,""" start="00:26:25.040" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and restrictions on AI use""" start="00:26:27.400" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""of not properly attributed content.""" start="00:26:31.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Yeah, I'd say that would be, it's a complicated topic""" start="00:26:38.200" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and I would simply say I haven't figured it out at all.""" start="00:26:50.240" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I just have a perimeter set of concepts""" start="00:26:56.120" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""that can be used to drive it.""" start="00:27:03.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Are there any other questions? If there aren't any,""" start="00:27:06.480" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I thank everybody again,""" start="00:27:20.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""and particularly the EmacsConf organizers and Sacha.""" start="00:27:23.160" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""And I look forward to continuing all of this next year.""" start="00:27:27.800" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""Unless there is any objection,""" start="00:27:32.640" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""I'll leave the session and close it. Thank you.""" start="00:27:39.080" video="qanda-blee-lcnt" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20blee-lcnt%3A%20Blee-LCNT%3A%20An%20Emacs-centered%20content%20production%20and%20self-publication%20framework)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/blee-lcnt-before.md b/2025/info/blee-lcnt-before.md
new file mode 100644
index 00000000..fe7faabf
--- /dev/null
+++ b/2025/info/blee-lcnt-before.md
@@ -0,0 +1,46 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 37-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-blee-lcnt>
+Etherpad: <https://pad.emacsconf.org/2025-blee-lcnt>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-blee-lcnt"><source src="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--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="mainVideo-blee-lcnt" data="""
+00:05.760 Introduction
+01:20.080 Scope: A complete multi-media content processing framework
+02:10.320 Prior art and similar art
+03:02.420 LaTeX-Beamer + Reveal.js with Blee and BISOS
+03:57.160 Blee-LCNT novel concepts
+05:12.520 Part of a bigger picture - part of a series
+06:32.560 Nature of polyexistentials
+12:52.640 Content processing - a ByStar/BISOS/Blee Capability Bundle (BCB)
+14:23.120 ByStar containment hierarchy and ByStar capability bundles
+14:31.280 Aggregated conviviality of ByStar capabilities
+15:22.000 Parts list: integrated components
+15:47.868 Resulting contents - output forms and formats
+18:45.720 reveal.js
+20:31.980 Generating the video
+21:33.480 A unified single input -- a sequencef of frames
+22:39.180 Abstractions to keep in mind
+23:16.200 Frame control types
+24:24.360 How outputs are generate from the inputs
+26:25.200 Context for unified source walkthrough
+27:46.480 One slide
+29:24.080 Dynamic blocks
+31:05.800 Internationalization - a non-Americanist perspective
+33:42.280 Autonomous self-publication and federated re-publications
+35:07.720 Ingredients of BISOS platforms and their progression
+36:02.560 Moving forward
+
+"""]]<div></div>Duration: 36:41 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-blee-lcnt">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.opus">Download --main.opus (32MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--main.webm">Download --main.webm (97MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--script.txt">Download --script.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--split.vtt">Download --split.vtt</a></li><li><a href="https://youtu.be/49e0ES-nk0k">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-blee-lcnt"><source src="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 1:24:10 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-blee-lcnt">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.m4v">Download --answers.m4v (111MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--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/2025/info/blee-lcnt-nav.md b/2025/info/blee-lcnt-nav.md
new file mode 100644
index 00000000..70dd2eb8
--- /dev/null
+++ b/2025/info/blee-lcnt-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a>
+Next by track: <a href="/2025/talks/greader">GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/bookclub-tapas-after.md b/2025/info/bookclub-tapas-after.md
new file mode 100644
index 00000000..0f66ac66
--- /dev/null
+++ b/2025/info/bookclub-tapas-after.md
@@ -0,0 +1,1526 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="bookclub-tapas-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:00.620" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""Alright! Hi everyone! Happy EmacsConf!""" start="00:00:00.620" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I´m so excited to be here.""" start="00:00:04.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's surreal to be part""" start="00:00:07.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the conference itself,""" start="00:00:07.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in addition to being a viewer.""" start="00:00:09.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""EmacsConf is like Christmas to me,""" start="00:00:11.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I'm so excited when it comes around every year.""" start="00:00:13.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Today, my talk is on a programming methodology""" start="00:00:18.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I've created, discovered, stumbled upon.""" start="00:00:21.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I call it &quot;Bookclub Tapas.&quot;""" start="00:00:24.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Before we get into that,""" start="00:00:26.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""let me introduce myself.""" start="00:00:27.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Hi, I'm Maddie!""" start="00:00:29.680" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""My name is Maddie Sullivan,""" start="00:00:29.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and my pronouns are she/her.""" start="00:00:32.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I go by the handle ElephantErgonomics,""" start="00:00:34.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""which is shortened down to ElephantErgo in the IRC.""" start="00:00:36.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""You can reach out to me after the talk""" start="00:00:41.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for questions, comments,""" start="00:00:43.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""or just to say hello by reaching out""" start="00:00:44.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to hello@ElephantErgonomics.com.""" start="00:00:47.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So this software development strategy I found,""" start="00:00:56.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""it's inspired by literate programming and Agile.""" start="00:01:00.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Bookclub Tapas""" start="00:01:03.840" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So what exactly is Bookclub Tapas?""" start="00:01:03.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub Tapas is a conversation""" start="00:01:07.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that you have with yourself.""" start="00:01:09.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's a log and a ledger,""" start="00:01:11.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of your intentions, hopes, dreams,""" start="00:01:13.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and what you've learned""" start="00:01:16.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""over the course of development.""" start="00:01:17.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub Tapas is an oracle""" start="00:01:19.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""you can consult""" start="00:01:22.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""about the state of, and the strategies behind,""" start="00:01:24.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""your development process.""" start="00:01:26.934" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub Tapas is also a peer programming partner""" start="00:01:29.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that helps you decide how to best put forward your efforts""" start="00:01:33.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how to best pull together""" start="00:01:37.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what you're working on.""" start="00:01:38.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub Tapas will also help you to understand""" start="00:01:40.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how to tailor scope to your needs,""" start="00:01:42.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how to have the best parts""" start="00:01:45.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of your program shine through clearly.""" start="00:01:46.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub Tapas consists of two parts:""" start="00:01:49.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub and Tapas,""" start="00:01:52.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but what does that mean exactly, though?""" start="00:01:54.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Bookclub""" start="00:02:00.520" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""Bookclub is a reverse literate development strategy.""" start="00:02:00.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub is a time for you to write,""" start="00:02:04.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then read and reflect.""" start="00:02:07.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's like a Bookclub,""" start="00:02:08.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it's for your program.""" start="00:02:10.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Instead of inserting narration into your code""" start="00:02:12.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to narrativize what you are accomplishing,""" start="00:02:15.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""you are instead inserting snippets of code""" start="00:02:17.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""into your narrative to make it come alive.""" start="00:02:20.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So, what are we narrativizing, exactly?""" start="00:02:23.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""What sort of story are we telling?""" start="00:02:28.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub is the story of you, your program,""" start="00:02:30.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how your efforts are allowing your program""" start="00:02:34.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to come into the world.""" start="00:02:36.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Too many hats, too many roles""" start="00:02:40.300" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""Software developers naturally have to wear""" start="00:02:40.300" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a lot of different hats,""" start="00:02:42.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and take on a lot of different roles.""" start="00:02:43.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We apply ourselves into a lot""" start="00:02:46.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of different contexts.""" start="00:02:48.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We do research, interface architecture design,""" start="00:02:50.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""mathematics, philosophy.""" start="00:02:53.068" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We take in the world around us""" start="00:02:55.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then build abstractions to model it.""" start="00:02:57.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We translate the abstract""" start="00:03:00.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""into the concrete,""" start="00:03:01.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then when we're trying to teach software""" start="00:03:03.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how to be &quot;smart,&quot;""" start="00:03:04.668" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we translate the concrete""" start="00:03:06.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""back into the abstract.""" start="00:03:07.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I can't help but feel like so much of""" start="00:03:09.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what makes software development difficult""" start="00:03:11.501" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is just trying to remember""" start="00:03:13.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and keep track of everything.""" start="00:03:14.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have to try and remember""" start="00:03:16.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""so many different implementation details.""" start="00:03:17.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have to remember how our own code works,""" start="00:03:21.260" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how the API of our dependencies work,""" start="00:03:24.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how relevant real-world constraints behave,""" start="00:03:26.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what the standards lay out,""" start="00:03:29.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how our data structures are laid out.""" start="00:03:31.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""When we're debugging,""" start="00:03:34.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we simultaneously have to remember""" start="00:03:35.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how our program is currently behaving,""" start="00:03:37.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as well as how the program ought to behave""" start="00:03:40.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in order to get a chance""" start="00:03:42.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to reconcile that gap.""" start="00:03:43.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's honestly all way too much.""" start="00:03:46.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We need a ledger of what we're actually doing""" start="00:03:48.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in order to stay sane.""" start="00:03:50.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Narrativiation""" start="00:03:55.800" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""I think a really effective way to""" start="00:03:55.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""make sense of things that are complex and important""" start="00:03:57.334" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is to narrativize them,""" start="00:03:59.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to turn them into stories.""" start="00:04:01.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""This is a strategy that humans have been using for a long time.""" start="00:04:02.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Mnemonic devices, metaphors,""" start="00:04:06.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and drawing parallels""" start="00:04:08.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""are all different ways of doing just this.""" start="00:04:09.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Telling stories helps us to understand""" start="00:04:12.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""things that are big and complex""" start="00:04:14.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""by grounding them in our own experience""" start="00:04:16.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and making it fit into our scale.""" start="00:04:19.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So because the way that everyone""" start="00:04:23.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""naturally tells stories""" start="00:04:25.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is going to be a little different,""" start="00:04:26.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""because the details that strike us""" start="00:04:28.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as important and worth focusing on""" start="00:04:30.068" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""are going to be different for different people,""" start="00:04:32.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm not going to say""" start="00:04:34.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that there are hard and fast rules""" start="00:04:35.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""about how Bookclub &quot;should work,&quot;""" start="00:04:36.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""because how it &quot;should work&quot;""" start="00:04:39.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is however it best fits your needs.""" start="00:04:41.134" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Different people and different projects""" start="00:04:43.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""have different backgrounds and mindsets.""" start="00:04:45.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I don't think it's my place to say""" start="00:04:47.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what strategy is correct as a universal law.""" start="00:04:49.634" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, because Bookclub Tapas is, after all,""" start="00:04:51.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""just something I've sort of stumbled into.""" start="00:04:54.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub is intrinsically ad-hoc.""" start="00:04:57.100" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""My providing a prescription of strategy""" start="00:05:00.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is basically going to begin and end with the idea""" start="00:05:02.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that you write a reverse-literate document""" start="00:05:04.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that illustrates how you've gone""" start="00:05:07.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""about writing your program.""" start="00:05:08.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""All of that being said,""" start="00:05:11.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm going to talk about""" start="00:05:14.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how I've laid out my book club files""" start="00:05:16.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and why I think this is a solid place""" start="00:05:18.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""from which to get started.""" start="00:05:20.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""My starter kit - My stock, off the shelf suggestions""" start="00:05:24.780" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So my stock off-the-shelf suggestions""" start="00:05:24.780" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for just getting started""" start="00:05:27.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is to have sections for: our overarching goal,""" start="00:05:29.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""our development goals,""" start="00:05:32.961" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a place for scratch work, a test suite, research,""" start="00:05:35.060" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then finally sections for variables,""" start="00:05:40.700" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""functions, and macros.""" start="00:05:42.468" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Now what?""" start="00:05:47.660" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So we have our starter kit sections.""" start="00:05:47.660" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""How do we go about using them?""" start="00:05:50.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""How do we get started?""" start="00:05:51.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Well, we write them, you know,""" start="00:05:53.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""out in our org document,""" start="00:05:55.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but then what do we do?""" start="00:05:56.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Our overarching goal""" start="00:05:58.980" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""We start by writing what we know.""" start="00:05:58.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have a spark, a vision.""" start="00:06:01.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We had the beginning of an idea""" start="00:06:04.220" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of what we wanted our program to do.""" start="00:06:05.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Alternatively, maybe we had""" start="00:06:08.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a client lay our goals out.""" start="00:06:09.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Either way, we have some idea""" start="00:06:10.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of how we want our program to be shaped.""" start="00:06:13.300" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Let's start by writing that down.""" start="00:06:15.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""What are we trying to do?""" start="00:06:18.340" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""What is our goal?""" start="00:06:19.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Our development focuses""" start="00:06:23.460" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""After that, we're probably wondering to ourselves,""" start="00:06:23.460" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""&quot;Okay, we have our goal,""" start="00:06:26.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but how do we get there?&quot;""" start="00:06:27.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""That's when we start writing""" start="00:06:30.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""our development focuses.""" start="00:06:31.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we have bursts of intuition""" start="00:06:33.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""about what functions to write,""" start="00:06:35.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""questions that we want to answer through research,""" start="00:06:36.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we start enumerating those every time they hit us.""" start="00:06:39.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Our goal is to write them""" start="00:06:43.340" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""all down in a checklist""" start="00:06:44.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in order to turn them from daydreams""" start="00:06:46.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""into courses of action.""" start="00:06:48.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we aren't having development focuses""" start="00:06:50.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""hit us right away, that's okay.""" start="00:06:52.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we just stare at the goal for long enough,""" start="00:06:54.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think it's inevitable""" start="00:06:57.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that the muse will speak,""" start="00:06:58.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and we'll get a clear lead""" start="00:06:59.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""on a path forward.""" start="00:07:00.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The rest of the headings""" start="00:07:05.120" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So now what?""" start="00:07:05.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Now that we have our development focuses,""" start="00:07:07.220" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we want to go ahead and create""" start="00:07:09.900" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""the rest of the headings for ourselves""" start="00:07:11.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""so we can act upon them.""" start="00:07:13.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We go ahead and write the rest""" start="00:07:15.540" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the file's structure ad-hoc""" start="00:07:17.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in a way that will serve our needs for now.""" start="00:07:19.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If it's not fitting us well later on,""" start="00:07:22.340" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we can just go ahead and change it.""" start="00:07:24.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""There's no pressure.""" start="00:07:25.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""That's the beauty of having this""" start="00:07:26.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""all be in a plain Org document.""" start="00:07:27.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we're doing something consistently,""" start="00:07:30.100" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we probably want to have a heading for it.""" start="00:07:32.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We'll go ahead and create homes""" start="00:07:35.060" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for our variables, our functions, our macros.""" start="00:07:36.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We'll want to create a spot for scratch work""" start="00:07:38.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to sort of like stretch our legs""" start="00:07:41.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and lament in a stream-of-consciousness""" start="00:07:43.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""sort of format about how""" start="00:07:45.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a particular piece of design ought to work.""" start="00:07:47.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Basically, any time we wear a different &quot;hat&quot;""" start="00:07:50.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""or we take on a different &quot;role&quot; as a developer,""" start="00:07:52.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""it's worth considering creating a category for it.""" start="00:07:55.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The best way for us to figure out""" start="00:07:58.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what headings to fill in,""" start="00:08:00.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how to fill them in,""" start="00:08:01.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is to just go ahead and act upon our development goals.""" start="00:08:03.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we have a question we want to answer,""" start="00:08:07.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we'll want to create a Research heading""" start="00:08:09.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""so we can go ahead and have a spot""" start="00:08:12.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for scratch-work for reasoning things out.""" start="00:08:14.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we want to write the first draft""" start="00:08:17.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of a function we want,""" start="00:08:18.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We'll want to create a heading for functions""" start="00:08:20.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then a sub-heading for that function in particular.""" start="00:08:22.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Conversationality""" start="00:08:37.980" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So now that we've filled in our sections,""" start="00:08:37.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what do we do now?""" start="00:08:40.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Our idea for a program""" start="00:08:42.380" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""has been turned into a story,""" start="00:08:43.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but what does that actually get us?""" start="00:08:44.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""To me, a lot of what's exciting about Bookclub""" start="00:08:47.620" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that novelization goes in""" start="00:08:50.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and a peer programming partner comes out.""" start="00:08:52.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""As we loop through reviewing our document,""" start="00:08:56.060" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as we scan it up and down,""" start="00:08:58.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we're able to engage in conversationality""" start="00:08:59.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""with our past self because of how verbose""" start="00:09:02.001" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we've been in our notes.""" start="00:09:05.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can ask our past self questions,""" start="00:09:06.500" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and get back answers.""" start="00:09:08.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We've turned our past self""" start="00:09:09.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""into a peer programming partner.""" start="00:09:11.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we're wondering what to do next,""" start="00:09:14.580" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we can check our Development Focuses.""" start="00:09:16.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we're wondering how something works,""" start="00:09:18.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we can read documentation""" start="00:09:20.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""embedded in our function drafts,""" start="00:09:22.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""or we can read the outcomes of tests""" start="00:09:24.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that we've performed in our research.""" start="00:09:26.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can ask ourselves questions and get answers.""" start="00:09:28.660" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Some of what's most exciting""" start="00:09:33.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""about peer programming to me""" start="00:09:34.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is having fresh perspective""" start="00:09:35.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and alternate context.""" start="00:09:38.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have a fresh set of eyes""" start="00:09:41.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""on the program that aren't our own,""" start="00:09:42.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and with that set of eyes""" start="00:09:44.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""comes someone else to share the burden""" start="00:09:47.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of trying to remember everything.""" start="00:09:50.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""With Bookclub, instead of having""" start="00:09:52.540" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a peer programmer that exists in physical space,""" start="00:09:54.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we have one that's, to get all sci-fi for a moment,""" start="00:09:57.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""reaching forward towards us""" start="00:10:00.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""from backward in time.""" start="00:10:03.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We're asynchronously working""" start="00:10:05.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""with our past selves""" start="00:10:06.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as an equal-role collaborative""" start="00:10:08.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""partner in development.""" start="00:10:10.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have their perspective,""" start="00:10:12.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""their fresh memories of the code as it was written,""" start="00:10:15.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and their focus on what was worth worrying about""" start="00:10:17.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""at a different point in time.""" start="00:10:20.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can ask them questions and get answers.""" start="00:10:22.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can ask them questions like,""" start="00:10:24.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""well, &quot;What do I do now?&quot;""" start="00:10:26.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""&quot;How does this data structure work?&quot;""" start="00:10:28.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""&quot;What types does this third-party library take?&quot;""" start="00:10:30.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""By asking these questions,""" start="00:10:33.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I can even stay fresh""" start="00:10:35.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""on development progress""" start="00:10:36.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I last touched months ago.""" start="00:10:37.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's really easy to duplicate work,""" start="00:10:40.100" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""forget how things work,""" start="00:10:42.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""lose track of priorities.""" start="00:10:44.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bookclub helps keep us focused,""" start="00:10:46.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""it keeps us accountable,""" start="00:10:48.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""it even keeps us company.""" start="00:10:49.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Ad-hoc means lesricsf tion""" start="00:10:55.480" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""One of the most immediately useful things about Bookclub,""" start="00:10:55.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in my opinion, is that we immediately have""" start="00:10:58.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a list of actionable items.""" start="00:11:00.868" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Every time I have a little pain point,""" start="00:11:02.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I go ahead and write it down,""" start="00:11:04.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I write down all of the things""" start="00:11:06.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that would be nice to have done someday.""" start="00:11:09.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So you might be wondering,""" start="00:11:11.580" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and it's fair to wonder this,""" start="00:11:13.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""isn't this effectively just the GitHub issue model?""" start="00:11:14.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We're listing out bug requests,""" start="00:11:17.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""issue requests, feature requests.""" start="00:11:19.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's not exactly a new idea,""" start="00:11:21.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and it's pretty intuitive.""" start="00:11:22.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think the important consideration here""" start="00:11:24.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that having really formalized apparatus""" start="00:11:26.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for entering in our thoughts""" start="00:11:30.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""can be an unnecessary source of friction.""" start="00:11:31.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bug listings don't tend to be""" start="00:11:34.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a great fit for daydreaming""" start="00:11:36.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""or verbose considerations of philosophy.""" start="00:11:37.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Bug listings tend to be reserved""" start="00:11:40.940" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for catastrophes.""" start="00:11:42.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I feel like a lot of the tooling""" start="00:11:45.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that we currently use""" start="00:11:47.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""really struggles with creating ergonomics""" start="00:11:48.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that make taking frictionless notes difficult.""" start="00:11:51.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have systems where all the disparate""" start="00:11:54.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""parts of what we're working on""" start="00:11:57.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""feel really far away from each other.""" start="00:11:59.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We're pushed away from engaging""" start="00:12:02.500" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in conversations with ourselves""" start="00:12:04.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as a result of how disparate""" start="00:12:05.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""all of our tooling feels,""" start="00:12:07.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how the process of working with it""" start="00:12:09.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is incongruent.""" start="00:12:10.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""My hope is that we can instead""" start="00:12:12.900" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""engage with a process""" start="00:12:15.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that makes it really trivial""" start="00:12:17.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to write impulsive journaling""" start="00:12:18.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""about what we're doing.""" start="00:12:20.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So much of design is ultimately""" start="00:12:21.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""just daydreaming.""" start="00:12:23.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Good ideas tend to strike us hard,""" start="00:12:25.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in a momentary flash of inspiration,""" start="00:12:27.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then they fade just as quickly.""" start="00:12:29.780" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Anyone who's had an idea all at once""" start="00:12:32.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in the middle of the night""" start="00:12:35.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""knows that they're going to have to choose""" start="00:12:36.580" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""between either committing to writing it down""" start="00:12:38.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""or accept that by morning""" start="00:12:40.620" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""they'll have lost it.""" start="00:12:41.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If we're not writing""" start="00:12:44.260" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what strikes us as important""" start="00:12:45.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""at the same moment that it's happening,""" start="00:12:46.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we're going to lose it.""" start="00:12:48.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's not realistic to expect ourselves""" start="00:12:50.380" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to hold onto our ideas forever""" start="00:12:52.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""with the same precision""" start="00:12:54.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as when we were first inspired.""" start="00:12:56.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Gratis documentation""" start="00:13:01.920" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""Okay. I'm gonna call you out real quick.""" start="00:13:01.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If I ask all of you &quot;Who wants to read""" start="00:13:11.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""really excellent documentation?&quot;""" start="00:13:13.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I imagine that everyone here""" start="00:13:15.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is raising their hand.""" start="00:13:17.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We want code to make sense""" start="00:13:18.380" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and we want to know what""" start="00:13:20.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""the original developer had in mind.""" start="00:13:21.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Even the original developer themselves""" start="00:13:24.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""would want this just for their own sake.""" start="00:13:26.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I know that for me, I can even feel""" start="00:13:28.580" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""things becoming less fresh""" start="00:13:31.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""just after a couple months away""" start="00:13:32.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""from my codebase.""" start="00:13:33.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And that was me from a couple months ago.""" start="00:13:35.540" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""They're not around anymore.""" start="00:13:38.620" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Now, here's the rough part.""" start="00:13:42.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Here's what I'm really gonna call you all out.""" start="00:13:45.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""&quot;Who wants to write really excellent documentation?&quot;""" start="00:13:48.580" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Now, I don't know what's happening on your end,""" start="00:13:51.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I'm imagining crickets,""" start="00:13:53.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""silence, tumbleweeds""" start="00:13:55.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""blowing through to the horizon.""" start="00:13:57.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's a tough ask.""" start="00:13:59.140" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's not generally all that rewarding.""" start="00:14:01.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If you're writing docs from scratch,""" start="00:14:03.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a lot of it involves relearning""" start="00:14:06.300" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""the intentions behind crusty old code.""" start="00:14:08.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""For me, it hurts to not spend that same time""" start="00:14:10.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""implementing bug fixes and new features.""" start="00:14:13.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It just doesn't feel like""" start="00:14:16.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a great use of my time.""" start="00:14:17.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Even if it's strictly for my own codebase""" start="00:14:19.620" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for my own use, it's hard to sit down and do it""" start="00:14:22.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""even when I know how much I would benefit from it.""" start="00:14:25.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""My thinking is that when you write rough,""" start="00:14:28.780" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""piecewise daydreaming as you go,""" start="00:14:31.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""it's so much easier to not only""" start="00:14:34.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""begin writing documentation early in your process,""" start="00:14:36.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but also to stay consistent about not slouching into""" start="00:14:38.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""an accumulation of a backlog.""" start="00:14:42.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Keeping the thread of your intention""" start="00:14:48.440" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So not only does writing documentation early""" start="00:14:48.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""make us more likely to keep that habit going,""" start="00:14:51.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it also makes the documentation""" start="00:14:54.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we do write way more robust.""" start="00:14:56.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""When fiction meets reality""" start="00:14:59.500" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and we start writing out code""" start="00:15:01.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that is constrained by the real world""" start="00:15:04.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and not just our imagination,""" start="00:15:06.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we learn that things we assumed about our design""" start="00:15:08.860" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""aren't going to work out in practice.""" start="00:15:11.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Because of this, we can enter""" start="00:15:14.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""into a sort of situation""" start="00:15:16.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""akin to boiling a frog in a pot of water.""" start="00:15:18.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Frogs don't notice that they're being boiled""" start="00:15:21.140" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""if the water is only heated gradually enough.""" start="00:15:23.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We decide to adjust our design only a little bit""" start="00:15:26.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""without changing the documentation right away.""" start="00:15:31.100" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Doing that once is fine,""" start="00:15:33.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I don't believe for a second""" start="00:15:35.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that we're only going to do it once.""" start="00:15:36.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can find ourselves surprised""" start="00:15:38.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that as time goes on,""" start="00:15:39.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""our code looks nothing like our spec,""" start="00:15:41.660" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and we lose the thread of what our code""" start="00:15:43.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""was supposed to do in the first place.""" start="00:15:45.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""When we stake our intentions clearly and early,""" start="00:15:48.700" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""you ground yourself in them.""" start="00:15:52.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""You reduce the risk of straying from them.""" start="00:15:54.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""You have clear reference""" start="00:15:58.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for what you want your code to do,""" start="00:15:59.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and you reduce the risk""" start="00:16:01.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of having its purpose shift over time.""" start="00:16:03.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""When we take turns alternating""" start="00:16:05.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""between writing code and documentation""" start="00:16:07.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""rather than acting, you know,""" start="00:16:09.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as having it all as one step,""" start="00:16:11.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we risk taking turns just moving""" start="00:16:14.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""our goalpost back and forth.""" start="00:16:16.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Bookclub is becoming too much""" start="00:16:21.500" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So we've seen how our Bookclub files get us""" start="00:16:21.500" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""all sorts of amazing features""" start="00:16:24.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and practical benefits.""" start="00:16:25.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""But we might be starting to notice a pattern""" start="00:16:27.620" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as we continue to engage in conversation""" start="00:16:29.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and work with our document""" start="00:16:31.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and watch it grow in size.""" start="00:16:33.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We originally created our Bookclub file""" start="00:16:35.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""with the hope to reduce""" start="00:16:38.820" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what we would need to keep track of""" start="00:16:40.701" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and to reduce our level of overwhelm.""" start="00:16:42.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We might find that as our Bookclub file grows,""" start="00:16:44.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we're encountering more detail""" start="00:16:48.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""than we can practically parse, manage,""" start="00:16:51.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and decipher intention from.""" start="00:16:53.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It can be easy to enter into a situation""" start="00:16:55.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""where we're drowning in the breadth of our notes,""" start="00:16:57.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and in doing so we've recreated the same problem""" start="00:16:59.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we originally set out to solve.""" start="00:17:03.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Writing out every single detail helps us a lot""" start="00:17:05.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to make sense of things at first,""" start="00:17:08.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but then after a while, we can encounter""" start="00:17:11.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a signal-to-noise problem""" start="00:17:13.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""when we try to make meaning from too many details.""" start="00:17:15.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""This is where tapas come in.""" start="00:17:19.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Introducing Tapas""" start="00:17:25.240" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So tapas in Spanish cuisine are appetizers.""" start="00:17:25.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""What's notable about tapas""" start="00:17:29.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that you can bring a bunch of them together""" start="00:17:31.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to make a full meal.""" start="00:17:33.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""In the context of Bookclub Tapas,""" start="00:17:35.300" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""they serve a similar role.""" start="00:17:38.380" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The idea is that we write flavorful libraries""" start="00:17:40.340" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that together form a full program.""" start="00:17:42.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have a full program,""" start="00:17:45.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it's made from discrete modules.""" start="00:17:47.060" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The idea behind tapas is that instead of creating""" start="00:17:49.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""one perfect, &quot;solves everything&quot; codebase,""" start="00:17:52.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we want to create a whole bunch""" start="00:17:55.860" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of separate libraries""" start="00:17:57.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that themselves nail a specific subdomain.""" start="00:17:59.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And once these libraries""" start="00:18:02.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""are all brought together,""" start="00:18:04.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""they form the whole that we're seeking.""" start="00:18:05.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Once our Bookclub file becomes big enough""" start="00:18:08.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""such that we feel like our scope can be split""" start="00:18:10.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""into multiple libraries,""" start="00:18:12.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's when we want to take the opportunity""" start="00:18:14.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to split our program up into parts, into Tapas.""" start="00:18:16.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What are Tapas, what are Tapas not?""" start="00:18:22.840" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So, maybe one of the best ways""" start="00:18:22.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to understand what makes a good Tapa""" start="00:18:25.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is to first examine what does not make a good Tapa.""" start="00:18:27.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The single most important thing""" start="00:18:30.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to understand about Tapas""" start="00:18:32.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that they themselves are substantial.""" start="00:18:33.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""There's a lot of back and forth""" start="00:18:37.140" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""on the idea of micro-libraries,""" start="00:18:38.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""their merits, their dangers,""" start="00:18:40.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and when and where they kind of work best.""" start="00:18:42.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think the distinction""" start="00:18:45.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I would like to draw""" start="00:18:46.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that I think that tapas belong in the larger end""" start="00:18:47.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of scale and complexity for microlibraries""" start="00:18:50.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""rather than the smaller end.""" start="00:18:53.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think particularly small helpers""" start="00:18:56.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""like NPM's is-odd""" start="00:18:58.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""are a good example of something""" start="00:19:00.300" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think does not constitute a good Tapa.""" start="00:19:01.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Meanwhile, I think Python's Requests library""" start="00:19:05.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is a really good example of a Tapa.""" start="00:19:08.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I believe Requests only does HTTP connections,""" start="00:19:11.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I feel like that's not so simple and straightforward""" start="00:19:15.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that you can just go ahead and implement it""" start="00:19:18.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""on your own real quick.""" start="00:19:20.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""A real danger of creating""" start="00:19:23.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""helper libraries that are too small""" start="00:19:24.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that we don't remove abstraction""" start="00:19:27.220" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""nearly as much as we postpone it.""" start="00:19:31.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If our libraries are small,""" start="00:19:33.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but the glue code that binds them is large,""" start="00:19:35.820" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we haven't done anything""" start="00:19:38.900" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to reduce complexity""" start="00:19:40.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""or employ abstraction in a meaningful way.""" start="00:19:41.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If all of the complexity exists in our glue code,""" start="00:19:44.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we've simply replaced our functions""" start="00:19:47.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""with libraries of the same size and purpose.""" start="00:19:49.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Our codebase is still monolithic""" start="00:19:52.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""instead of having meaningfully divided scope.""" start="00:19:54.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that a good Tapa""" start="00:19:58.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""ought to feel like augmentations""" start="00:19:59.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""or extensions to the standard library.""" start="00:20:01.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, maybe something kind of""" start="00:20:03.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""akin to Scheme's SRFI system.""" start="00:20:05.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that the goal of good Tapas""" start="00:20:08.380" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is not to solve a particular problem,""" start="00:20:10.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but instead to solve a particular class of problem.""" start="00:20:13.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The goal of a well-written Tapa""" start="00:20:18.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is to solve needing to do hard work in general""" start="00:20:20.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""rather than solving what can only really be""" start="00:20:23.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""an individual need""" start="00:20:25.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of an individual program.""" start="00:20:26.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I feel like Tapas are most helpful""" start="00:20:28.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""when we instead seek to solve""" start="00:20:30.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a larger overarching problem""" start="00:20:32.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that intersects with the problem space of our code base.""" start="00:20:35.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""When we have a handful of Tapas""" start="00:20:39.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that are roughly the same size and scale,""" start="00:20:42.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""the glue code that marries them""" start="00:20:46.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is also roughly the same size and scale.""" start="00:20:48.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""As a heuristic, I try to aim for any function""" start="00:20:52.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""being approximately 3 calls in length,""" start="00:20:55.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then any Tapa being between 6""" start="00:20:57.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and 12 functions in length.""" start="00:21:00.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The number of Tapas themselves""" start="00:21:06.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""can be as many or as few as you need,""" start="00:21:08.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but then your Tapas can split into""" start="00:21:09.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""their own separate Tapas as needed.""" start="00:21:12.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""My hope is that the collection of our Tapas,""" start="00:21:16.460" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""especially as we create""" start="00:21:18.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""dependency chains among them,""" start="00:21:20.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that each next Tapa is a trivial case""" start="00:21:22.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the one prerequisite to it.""" start="00:21:25.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Every Tapa is a meaningful,""" start="00:21:27.100" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""human-readable abstraction""" start="00:21:28.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that enables us to feel confident about our tooling""" start="00:21:31.060" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""without drowning in detail.""" start="00:21:33.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The whole stack can be understood by humans,""" start="00:21:35.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but we only have to focus on""" start="00:21:38.500" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""any one piece of it at a time,""" start="00:21:40.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""rather than focusing on the entire stack all at once.""" start="00:21:41.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can practically achieve""" start="00:21:47.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a huge final product,""" start="00:21:48.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but each individual step""" start="00:21:51.260" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in working towards that goal""" start="00:21:52.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is still at a human scale.""" start="00:21:54.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""One thing I want to make sure to point out,""" start="00:21:56.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""one thing I want to make sure""" start="00:22:02.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to point out explicitly, real quick,""" start="00:22:03.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that having access""" start="00:22:05.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to a hygienic macro system,""" start="00:22:06.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""like the ones that we have in Lisps,""" start="00:22:07.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""makes for an amazing experience""" start="00:22:10.260" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for creating Tapas.""" start="00:22:12.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The types of abstractions that we can do""" start="00:22:13.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""by modifying syntax at compile time""" start="00:22:15.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""makes for incredibly intuitive""" start="00:22:17.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and ergonomic tooling.""" start="00:22:18.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Tapas are maybe best illustrated by example""" start="00:22:25.180" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So we've talked quite a bit about""" start="00:22:25.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what I think makes a Tapa good,""" start="00:22:27.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I think maybe the best way""" start="00:22:28.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to understand the concept""" start="00:22:30.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is to have a look at the whole workflow in practice.""" start="00:22:32.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I've been working on this, currently""" start="00:22:35.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""unnamed, Elisp program recently.""" start="00:22:37.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's a validator for the filetags lines""" start="00:22:40.220" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of my Org Mode files.""" start="00:22:42.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I have Org Mode files""" start="00:22:45.820" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""under my Documents directory,""" start="00:22:49.300" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""organized in this hierarchical way,""" start="00:22:51.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and the nested directories have meaningful names.""" start="00:22:53.634" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I want the headers of my Org files to be tagged""" start="00:22:57.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in accordance with the sequence""" start="00:23:00.301" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the names of the directories.""" start="00:23:01.801" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I do this by having the file-tags line""" start="00:23:04.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""at the top of the file""" start="00:23:06.168" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""just list the path segments in order.""" start="00:23:07.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If I have an Org file in the directory""" start="00:23:09.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""&quot;~/Documents/foo/bar&quot;,""" start="00:23:12.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""the file-tags line has the tags &quot;foo&quot; and &quot;bar&quot;.""" start="00:23:16.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""This is totally fine to do by hand,""" start="00:23:20.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I want a program""" start="00:23:23.140" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that recursively searches through my directories""" start="00:23:24.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to validate that the tags are correct""" start="00:23:27.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""because it's easy to drop something.""" start="00:23:29.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""This scale of problem is actually kind of perfect""" start="00:23:33.460" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for demonstrating how Bookclub Tapas work in action.""" start="00:23:36.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have a problem""" start="00:23:39.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's mostly rather simple,""" start="00:23:40.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it has a lot of moving pieces.""" start="00:23:42.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We want to iterate over directories recursively,""" start="00:23:44.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we want to do string manipulation,""" start="00:23:47.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""we want to parse buffers,""" start="00:23:49.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and we want to edit buffers.""" start="00:23:50.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""All of these tasks are simple enough on their own,""" start="00:23:52.900" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it's deceptively easy""" start="00:23:55.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to start tripping over ourselves""" start="00:23:56.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""when we feel like it's necessary""" start="00:23:58.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to do all of these different things in one step.""" start="00:23:59.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So there are a ton of great string""" start="00:24:03.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""manipulation tools for Emacs,""" start="00:24:05.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""so that's checked off,""" start="00:24:06.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's done, taken care of.""" start="00:24:08.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm still kind of daydreaming""" start="00:24:10.940" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""about writing a wrapper around""" start="00:24:12.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""some of the Emacs standard libraries""" start="00:24:14.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for directory traversal,""" start="00:24:16.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""just to make it a little bit nicer to work with.""" start="00:24:17.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""But the big thing""" start="00:24:20.180" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that really struck me as odd""" start="00:24:20.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that there doesn't seem to be a great tooling""" start="00:24:22.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for destructuring Emacs buffers""" start="00:24:25.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""beyond just chaining together""" start="00:24:28.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a bunch of editor commands.""" start="00:24:29.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Emacs is so buffer-oriented,""" start="00:24:31.380" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I feel like it really deserves a good library""" start="00:24:33.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for programmatic buffer destructuring.""" start="00:24:36.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I looked around for a bit,""" start="00:24:38.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I couldn't really find anything.""" start="00:24:40.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So at the end of the day,""" start="00:24:42.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I could definitely just grit my teeth""" start="00:24:44.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and put my head down and just use tools""" start="00:24:47.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that feel cumbersome to work with if I wanted to.""" start="00:24:50.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I could write something""" start="00:24:54.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's &quot;good enough&quot;""" start="00:24:55.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""just for the purpose of my package""" start="00:24:56.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then hide it deep inside the code base.""" start="00:24:57.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I could absolutely do that.""" start="00:25:00.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""But I can't help but think about how""" start="00:25:03.820" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""after I properly write the tooling I'm missing,""" start="00:25:07.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm really going to be thanking myself""" start="00:25:11.100" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in terms of reduced implementational complexity,""" start="00:25:13.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""reduced bug hunting, real reusability,""" start="00:25:15.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and ultimately really just a deep sense of pride""" start="00:25:19.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in knowing that I took the time""" start="00:25:22.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to do something in a way that feels &quot;right.&quot;""" start="00:25:23.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""This right here is the perfect time""" start="00:25:27.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to split off Tapas.""" start="00:25:28.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Any time that we find ourselves""" start="00:25:30.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""reaching for a fictional dependency,""" start="00:25:32.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""wishing that someone had written""" start="00:25:34.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a library like this...""" start="00:25:35.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can take that opportunity""" start="00:25:37.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to remember that we are &quot;someone.&quot;""" start="00:25:39.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can write that library ourselves,""" start="00:25:42.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and we deserve to write that library""" start="00:25:44.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""because we deserve to get to use it.""" start="00:25:46.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Introducing Squint""" start="00:25:52.340" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So I'm going to briefly show""" start="00:25:52.340" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a Bookclub buffer""" start="00:25:55.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for a program called Squint.""" start="00:25:56.900" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's the buffer destructure""" start="00:25:59.260" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I've been talking about, and it's real.""" start="00:26:00.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's a wrapper around""" start="00:26:03.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Emacs's narrowing functionality""" start="00:26:04.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and regular expression search.""" start="00:26:06.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's not totally done,""" start="00:26:08.740" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and will likely see some breaking changes,""" start="00:26:11.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I really like where it is.""" start="00:26:15.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'll be posting it in its current state""" start="00:26:16.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""on some of the big source repository sites""" start="00:26:18.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""relatively soon.""" start="00:26:22.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think it has a good feature,""" start="00:26:23.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""which is really quite exciting.""" start="00:26:24.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And it'll likely probably get split off""" start="00:26:26.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""into its own Tapas.""" start="00:26:29.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""We'll see. No matter what,""" start="00:26:29.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I do recommend being on the lookout for it,""" start="00:26:32.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""because I think it'll be""" start="00:26:34.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a really excellent demonstration""" start="00:26:35.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of some of the solid ideas""" start="00:26:37.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""behind how to get rolling with Bookclub Tapas.""" start="00:26:39.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I have my background section""" start="00:26:43.900" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""where I'm basically just sort of laying out,""" start="00:26:46.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, what the objective is for the program.""" start="00:26:49.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I have my vision where I'm doing""" start="00:26:53.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""some daydreaming about, you know,""" start="00:26:55.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""how this all ought to work.""" start="00:26:58.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I date stamped this.""" start="00:26:59.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""As you can see, it's from a while ago,""" start="00:27:00.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I still have the full context of, you know,""" start="00:27:02.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""all the things that I've done working on this.""" start="00:27:05.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I listed out a bunch of ideas""" start="00:27:08.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for different forms for functions macros.""" start="00:27:12.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I did different pieces of research.""" start="00:27:15.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, I was trying to figure out""" start="00:27:21.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for the width restriction macro,""" start="00:27:23.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""what types does it take?""" start="00:27:24.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I did a whole bunch of tests""" start="00:27:26.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to try and ultimately figure it out.""" start="00:27:28.480" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Because it claims in the documentation,""" start="00:27:31.280" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I believe, that it will just take""" start="00:27:35.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""any type for labels.""" start="00:27:37.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""But in my testing, that's not""" start="00:27:39.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""ultimately what I found.""" start="00:27:43.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""The results of my tests""" start="00:27:44.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that symbols, numbers, they work.""" start="00:27:46.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Strings do not.""" start="00:27:50.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm not sure why that is.""" start="00:27:51.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""But for my purposes,""" start="00:27:52.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""this is what I need to know.""" start="00:27:54.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I have my development focuses here.""" start="00:27:58.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I have my assorted goals""" start="00:28:00.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for different directions""" start="00:28:03.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I want to take the program.""" start="00:28:05.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And then lastly, I have my functions, my macros.""" start="00:28:08.060" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And this right here""" start="00:28:13.340" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""is the titular macro.""" start="00:28:14.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""This is ultimately the big meat""" start="00:28:18.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the program.""" start="00:28:20.500" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And it's all contained happily organized""" start="00:28:24.860" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""inside my Bookclub file.""" start="00:28:28.220" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm quite happy with it.""" start="00:28:30.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think it looks really nice.""" start="00:28:31.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What else does Bookclub Tapas do?""" start="00:28:36.100" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So what else does Bookclub tapas do?""" start="00:28:36.100" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I don't know. It probably does a lot of stuff.""" start="00:28:40.760" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""It does all sorts of stuff""" start="00:28:44.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I don't know about yet,""" start="00:28:46.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but this is where you come in.""" start="00:28:47.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm really excited to see what people do""" start="00:28:48.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""when they take these ideas""" start="00:28:51.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and run with them.""" start="00:28:52.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""And if you have something really cool you're doing with it,""" start="00:28:54.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""please email me and come talk to me about it.""" start="00:28:56.820" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'd love to hear about it.""" start="00:28:59.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Again, my email is hello@ElephantErgonomics.com.""" start="00:29:00.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Let's work together""" start="00:29:08.160" video="mainVideo-bookclub-tapas" id="subtitle"]]</div>[[!template text="""So last, before we wrap up,""" start="00:29:08.160" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I want to go ahead and give""" start="00:29:10.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a quick plug for my services.""" start="00:29:12.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I am an independent software engineer""" start="00:29:14.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that has an emphasis in backend design""" start="00:29:17.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and general automation.""" start="00:29:20.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""In particular, I have an emphasis""" start="00:29:21.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""in that really cool new generative AI thing""" start="00:29:23.920" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that everyone's been talking about recently.""" start="00:29:26.840" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If you have a headache,""" start="00:29:28.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""you have some sort of pain point""" start="00:29:30.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for your small or large business,""" start="00:29:33.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""you wish you could just wiggle your nose""" start="00:29:34.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and have disappear, come talk to me.""" start="00:29:36.768" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'll make it disappear. I love doing that.""" start="00:29:39.000" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Reach out to me at hello@ElephantErgonomics.com.""" start="00:29:41.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If you think that Bookclub Tapas""" start="00:29:46.980" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""would be a great fit for your team and your project,""" start="00:29:48.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'd love to hop on and help you""" start="00:29:51.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""get the ball rolling quickly.""" start="00:29:53.040" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Go ahead and email me at hello@ElephantErgonomics.com.""" start="00:29:55.120" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Lastly, if you're a member""" start="00:29:59.820" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the larger Lisp community""" start="00:30:01.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and you want to fund independent software development""" start="00:30:03.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for things that really excite you,""" start="00:30:06.860" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for passion projects""" start="00:30:08.320" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that make our ecosystem richer,""" start="00:30:09.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'd love to look into accepting independent funding""" start="00:30:11.440" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""so I can commit more hours""" start="00:30:17.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""toward making that happen.""" start="00:30:20.420" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Some of the projects that I want to work on""" start="00:30:22.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""are a Python Foreign Function Interface for Guile Scheme,""" start="00:30:24.600" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a framework for rapidly creating simulation games""" start="00:30:28.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""that feels just as simple""" start="00:30:31.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as writing Emacs configurations,""" start="00:30:33.879" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I want to work on getting""" start="00:30:36.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a full graphical web browser inside of Emacs,""" start="00:30:37.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I want to finish programs like Squint.""" start="00:30:41.460" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""These are just some of the projects""" start="00:30:43.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I want to work on,""" start="00:30:44.880" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I need funding to do so.""" start="00:30:46.020" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""If you want to see these things happen,""" start="00:30:48.240" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""send me an email at hello@ElephantErgonomics.com""" start="00:30:49.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""with both your intention""" start="00:30:53.800" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""to pledge a monthly contribution""" start="00:30:55.560" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""as well as clarification,""" start="00:30:57.360" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""a sort of vote on which project""" start="00:30:59.400" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""you would like to see me prioritize.""" start="00:31:02.080" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would love to have folks reach out""" start="00:31:03.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""for any of these reasons.""" start="00:31:06.680" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would just love to talk to you.""" start="00:31:07.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Thank you so much for watching!""" start="00:31:12.200" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""I really hope that the talk was interesting,""" start="00:31:14.620" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I'm really excited to see""" start="00:31:16.520" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""your thoughts and questions""" start="00:31:18.640" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""right now in the Q&A!""" start="00:31:19.720" video="mainVideo-bookclub-tapas" id="subtitle"]]
+[[!template text="""Thank you so much for watching. Bye!""" start="00:31:21.960" video="mainVideo-bookclub-tapas" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+<div class="transcript transcript-qanda"><a name="bookclub-tapas-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""All right, take it away. Okay, am I, are we live?""" start="00:00:00.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yes, we're live. Oh man, holy moly.""" start="00:00:07.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Oh, that's surreal. Hi everyone. Oh man.""" start="00:00:12.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Ah, so excited to be here. So good to see all of you. Okay.""" start="00:00:19.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So, should we just go ahead and get right into it?""" start="00:00:26.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, let me, let me see here. So I have.""" start="00:00:29.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, I see, I see some, I see some questions coming in.""" start="00:00:38.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Perfect. I am going to show my share my screen real quick.""" start="00:00:41.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""We have currently currently we have""" start="00:00:47.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""a sort of a dross thing going.""" start="00:00:54.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And so I just wanted to, while we're waiting""" start="00:00:59.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for some more stuff to come in,""" start="00:01:04.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I just wanted to sort of idle on this buffer here.""" start="00:01:05.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""If you increase your font size slightly,""" start="00:01:11.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that might be even nicer.""" start="00:01:13.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yes, absolutely, gladly. Whoa, okay. There we go.""" start="00:01:15.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""All right, the first question""" start="00:01:38.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""was looking for examples of files in book club style.""" start="00:01:41.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The person says, that seems to be related""" start="00:01:45.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to what I've been doing,""" start="00:01:48.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but coming from different influences. Yes, yes.""" start="00:01:49.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I included a, included a,""" start="00:01:54.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Let me see, I'm just looking at the IRC here""" start="00:02:03.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and smiling at all the people. So, yes, I provided a link.""" start="00:02:07.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I think that an excellent.""" start="00:02:16.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I have gone ahead and provided""" start="00:02:19.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the get the link to the repo""" start="00:02:24.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I'm going to go ahead and post that again.""" start="00:02:26.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So this should serve as a full example""" start="00:02:30.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of what a just sort of standard book club file looks like.""" start="00:02:34.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And if anyone has like specific questions""" start="00:02:39.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about anything in particular,""" start="00:02:41.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""they would love to see my sort of like walkthrough""" start="00:02:42.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and narrate like specifically, you know, any place in this file""" start="00:02:47.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that they would like to see me sort of like go over live,""" start="00:02:52.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would be super happy to do that.""" start="00:02:55.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I have the whole, you know, more or less complete""" start="00:02:58.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""book club file for Squint pulled up here.""" start="00:03:03.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, I have my vision laid out,""" start="00:03:10.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""which has my initial sort of goal.""" start="00:03:14.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, the background and the vision sort of combined""" start="00:03:18.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to lay out what my general sort of goal is.""" start="00:03:22.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I just realized, let me kill my stream there.""" start="00:03:28.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""There we go. All right. There's another question.""" start="00:03:31.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The product of a tapa like squint.org""" start="00:03:39.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""would be pure gold for an agent like Cloud Code.""" start="00:03:41.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Have you experimented with providing an agent with a final output""" start="00:03:44.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and letting it chew through to-dos?""" start="00:03:47.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""That would be a really excellent question.""" start="00:03:50.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I actually just kind of recently""" start="00:03:53.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""got into Clawed in particular.""" start="00:03:54.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I played quite a bit with GPT and""" start="00:03:58.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and a lot of 8 billion parameter local models.""" start="00:04:01.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I was never super impressed.""" start="00:04:07.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It always felt like I was just sort of wrangling""" start="00:04:09.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to get it on the same page,""" start="00:04:13.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""whether as a result of sycophantism""" start="00:04:14.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""or really just not having enough parameters""" start="00:04:16.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in order to understand the context of what's going on.""" start="00:04:19.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Cloud has completely changed my perception""" start="00:04:21.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of what an LLM can do or not.""" start="00:04:25.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It makes autonomy not seem like a total fever train.""" start="00:04:27.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I have definitely been curious about""" start="00:04:31.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""how an LLM would react to book club files.""" start="00:04:36.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that, yeah, especially like,""" start="00:04:39.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I've been daydreaming a little bit about,""" start="00:04:41.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, having it generate scratch artifacts""" start="00:04:43.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""or suggesting, you know, changes to the format.""" start="00:04:49.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's like, yeah, the fact that""" start="00:04:54.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""this is all like, you know, like super,""" start="00:04:58.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The goal and the hope for all of this""" start="00:05:01.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that we're being verbose about our thinking anyway.""" start="00:05:05.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""This is sort of how, by default,""" start="00:05:08.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""deep reasoning kind of works.""" start="00:05:12.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I actually think that I totally agree.""" start="00:05:14.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It would be a great fit.""" start="00:05:15.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I have yet to personally do it,""" start="00:05:17.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because I've always been just""" start="00:05:19.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""a little bit wary about, like, you know...""" start="00:05:21.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Well, if I'm writing a program,""" start="00:05:23.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I want to write it, you know?""" start="00:05:25.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""People often talk about, like, you know,""" start="00:05:26.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""oh, I just want to hand off""" start="00:05:29.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the boring parts to Claude.""" start="00:05:31.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But the thing is, if I'm writing an e-list,""" start="00:05:34.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I find the whole thing to be kind of fun.""" start="00:05:36.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""be super, um, it would be super interested in, you know,""" start="00:05:39.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""just sort of as a point of exercise,""" start="00:05:46.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like seeing what it's capable of.""" start="00:05:48.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Because I think, I really do think""" start="00:05:49.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that this would be kind of an ideal environment.""" start="00:05:51.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It is kind of close to, you know,""" start="00:05:54.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""native-ish, how LLMs think.""" start="00:05:55.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""There's also, like, you know, of course,""" start="00:05:59.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the, um, the privacy angle.""" start="00:06:01.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I don't necessarily want to provide""" start="00:06:03.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""a whole bunch of code verbatim that I intend to GPL3.""" start="00:06:05.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But I believe that Claude kind of has a better policy""" start="00:06:09.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in terms of what does and does not become training data.""" start="00:06:15.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'll have to look into Claude in particular""" start="00:06:20.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because I feel like that would be my target for it.""" start="00:06:22.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But yeah, I think that's definitely onto something.""" start="00:06:24.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I've definitely thought about this.""" start="00:06:29.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I've definitely been really curious about this.""" start="00:06:31.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Next question, do you think every Tapa""" start="00:06:33.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""should have its own book club file as well?""" start="00:06:40.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Or would you rather keep just one book club file""" start="00:06:42.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in the top of the project?""" start="00:06:45.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I think that I definitely would advise""" start="00:06:46.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that each Tapa have its own book club file.""" start="00:06:51.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The reason being is because I find that for me personally,""" start="00:06:54.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the way that my brain kind of works""" start="00:06:59.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that out of sight, out of mind is very literal for me.""" start="00:07:00.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I find that I find that. What am I thinking of?""" start="00:07:06.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Sorry, I just saw that I got an email""" start="00:07:13.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I'm like, yeah, okay, cool.""" start="00:07:19.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Case in point, right? We are at case in point, you know,""" start="00:07:22.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""out of sight, out of mind. Yes, no, absolutely.""" start="00:07:27.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, no, exactly. I, um, I'm definitely quite ADHD""" start="00:07:30.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and it works for my advantage""" start="00:07:35.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because it provides all sorts of versatility.""" start="00:07:36.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""This is another great advantage of book club.""" start="00:07:38.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""If you have an ADHD mind like I do where, you know,""" start="00:07:42.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You love jumping around and working on""" start="00:07:46.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""all sorts of different pieces simultaneously.""" start="00:07:48.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You don't like sitting down""" start="00:07:51.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and doing the same thing all day""" start="00:07:53.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""unless it really latches onto you.""" start="00:07:54.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, you can pivot and you don't do anything.""" start="00:07:57.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It really rewards the fact that you can pivot.""" start="00:07:59.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I find that to be really excellent.""" start="00:08:02.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But to go back to the original a question,""" start="00:08:06.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would definitely recommend,""" start="00:08:08.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""at least in my circumstance,""" start="00:08:11.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I find it to be incredibly useful""" start="00:08:13.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to have each tapa be its own book club file""" start="00:08:15.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""rather than to have a unified file""" start="00:08:19.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that holds all of your tapas. You can definitely do this,""" start="00:08:21.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""especially if you're using org""" start="00:08:26.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to organize it hierarchically.""" start="00:08:28.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's just sort of a matter of preference""" start="00:08:31.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and style at that point.""" start="00:08:33.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So long as you're making a clear distinction between your tapas,""" start="00:08:34.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's the main thing""" start="00:08:39.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I would recommend no matter what,""" start="00:08:40.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because the whole hope that I have is that""" start="00:08:42.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you have a sort of separation of focus""" start="00:08:44.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""between the different you know,""" start="00:08:47.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the different focuses of your different tapas,""" start="00:08:49.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""they really should ideally feel like different programs""" start="00:08:54.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""so that you're not, you know,""" start="00:08:57.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""getting over yourself, getting ahead of yourself.""" start="00:09:00.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that, you know, on that basis,""" start="00:09:02.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would probably default to recommending""" start="00:09:05.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that tapas have their own separate book club files,""" start="00:09:07.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because ideally they should kind of be different""" start="00:09:12.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""sort of independent but related thoughts.""" start="00:09:15.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But at the same time, I mean, like, you know,""" start="00:09:19.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""this is coming from someone""" start="00:09:21.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""who like has a billion small, like, you know,""" start="00:09:23.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I had one giant org file for a long time""" start="00:09:26.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then realized that really didn't work for me.""" start="00:09:28.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So now I have a billion tiny ones.""" start="00:09:31.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So depending upon how you feel about, you know,""" start="00:09:34.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""should I have one really big org file""" start="00:09:38.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""or a bunch of really little org files?""" start="00:09:40.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I feel like that more or less gives your answer.""" start="00:09:42.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think it's whatever works best for you.""" start="00:09:44.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I know that far and away what works best for me""" start="00:09:48.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is having separate files. No matter what, you should have""" start="00:09:51.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""separation of concept though.""" start="00:09:55.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But however you do that is, you know,""" start="00:09:58.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is best your judgment call.""" start="00:10:00.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Next question, how do you build habits""" start="00:10:01.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""when it comes to documentation?""" start="00:10:11.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I tend to produce lots of documentation in one go,""" start="00:10:13.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""then effectively forget to do it for long periods of time""" start="00:10:16.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and end up playing catch up,""" start="00:10:19.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""which results in a loss of precision,""" start="00:10:20.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""as you alluded to in your talk.""" start="00:10:22.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""In a work setting, when something goes on fire""" start="00:10:24.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""or priorities change, it can be hard to keep discipline.""" start="00:10:26.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Would love your thoughts. Thanks. Yes, absolutely.""" start="00:10:28.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So what I tend to do is I don't""" start="00:10:32.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So really, so far, what I've been doing""" start="00:10:35.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that I haven't been making a conscious priority""" start="00:10:39.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of writing documentation at all.""" start="00:10:42.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And if that sounds contradictory""" start="00:10:45.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to the talk, that is correct.""" start="00:10:48.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""What I mean by this is that I go about""" start="00:10:51.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that when I'm writing code,""" start="00:10:55.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""when I'm writing, you know, drafts of my functions,""" start="00:11:00.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the way that I tend to approach this,""" start="00:11:03.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the way that I really emphasize the approach for it,""" start="00:11:05.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that I want to focus first and foremost""" start="00:11:07.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""on sort of like just writing down""" start="00:11:13.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what my internal monologue is""" start="00:11:15.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for what I'm doing for that pass working on the file.""" start="00:11:17.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So my document takes ultimate""" start="00:11:23.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Distance of dark is ultimately a property""" start="00:11:25.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""from the fact that I am writing""" start="00:11:29.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what I'm doing as I'm doing it.""" start="00:11:32.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And it's more or less just I'm just""" start="00:11:35.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""mashing out the stream of consciousness""" start="00:11:37.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of what's going on inside my head as it's happening.""" start="00:11:39.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So if we go down and we take a look at,""" start="00:11:43.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""yeah, so let's go ahead and take a look back at the macro.""" start="00:11:47.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, really, this is kind of cheating,""" start="00:11:53.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because mostly I would consider this to be self-documenting,""" start="00:11:56.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but we all kind of know that""" start="00:12:01.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that in and of itself is a slippery slope.""" start="00:12:07.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""That's not great. Because it's like, I could believe""" start="00:12:11.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that this would be self-documenting""" start="00:12:14.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""if this was a three-liner.""" start="00:12:17.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It is not. which, you know, also goes to show me""" start="00:12:19.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that this needs to be splitting into its own topos.""" start="00:12:24.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I intend to, you know, write a Tapa that's a sort of,""" start="00:12:27.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's a sort of like macro builder""" start="00:12:32.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that automatically, you know, does the gensims for you.""" start="00:12:37.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Something along the lines of""" start="00:12:40.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what's the common Lisp macro for that called?""" start="00:12:41.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's like, There's some common list faculty""" start="00:12:46.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that does automatic Jensen binding.""" start="00:12:51.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I can't quite remember what it's called.""" start="00:12:53.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""A prior version of this talk had my live coding that,""" start="00:12:55.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but that ended up sort of distracting""" start="00:13:01.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""from what I kind of wanted to nail out and focus on.""" start="00:13:04.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But really kind of what I do is that,""" start="00:13:07.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""let me see here if I can find some sort of,""" start="00:13:12.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, so I have in my research section""" start="00:13:19.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""sort of layout like what the quirks of all this sort of are.""" start="00:13:26.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think my development focuses contain""" start="00:13:36.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""a little bit of what could be ultimately""" start="00:13:39.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""considered to be documentation.""" start="00:13:41.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, as I'm looking through all of this,""" start="00:13:42.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm kind of realizing that like,""" start="00:13:47.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, yeah, there's stuff""" start="00:13:48.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I'm into documentation here,""" start="00:13:49.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it's all a little ad hoc.""" start="00:13:51.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, I would, in part,""" start="00:13:53.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the design of this particular tapa""" start="00:13:55.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is arguably not currently,""" start="00:13:57.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but is going to be simple enough such that""" start="00:13:59.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""a doc string is sufficient for documentation.""" start="00:14:02.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""That is not the case currently.""" start="00:14:04.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""All right, next question is,""" start="00:14:07.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""how do you write examples and tests?""" start="00:14:12.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that you mentioned that during the talk,""" start="00:14:18.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I couldn't find them on a very quick look""" start="00:14:24.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""at your org file in the Squint repo.""" start="00:14:27.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""My use of the word test was a little bit creative.""" start="00:14:35.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It's my validation of the code that I've written.""" start="00:14:40.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I more or less tend to do a,""" start="00:14:42.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I tend to try and write really small functions""" start="00:14:45.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and have really aggressive validation""" start="00:14:50.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""by just making sure that, like, you know,""" start="00:14:52.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""when I chain functions in the REPL,""" start="00:14:55.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""each step of them produces results""" start="00:14:59.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that are really quite immediately and self-verifiably seen.""" start="00:15:03.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Now, this isn't a great excuse to not use a test suite,""" start="00:15:07.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it's gotten me pretty far.""" start="00:15:11.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""What I mean by tests is that in the research sections,""" start="00:15:12.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what I've done is, so I've created a sort of tested""" start="00:15:19.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in the sense that I have created""" start="00:15:26.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""a really highly representative case""" start="00:15:29.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the way that the program ultimately ought to behave.""" start="00:15:33.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""In doing so, I created a sort of embedded domain language""" start="00:15:38.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I have termed animal houses.""" start="00:15:43.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And Animal Houses is a sort of markup language""" start="00:15:46.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that has rather simple rules.""" start="00:15:51.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""This here is the entirety of the spec for Animal Houses.""" start="00:15:54.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Grammar or anything, but like, it is more or less.""" start="00:16:00.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Breadth of everything that needs to be known""" start="00:16:06.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about how animal houses works.""" start="00:16:08.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I've created animal houses because it is an ideal""" start="00:16:10.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and incredibly simple circumstance.""" start="00:16:14.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""For how to go about as needed tests.""" start="00:16:18.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""For how squint ultimately ought to work in practice.""" start="00:16:22.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So when I'm doing research,""" start="00:16:28.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what I do is I take the text of animal houses,""" start="00:16:30.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I will go ahead and insert it into a buffer.""" start="00:16:34.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I'll just create an analog buffer.""" start="00:16:39.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I just called it a woo.""" start="00:16:46.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And then what I'll do is in my research sections, I will write""" start="00:16:48.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Like I'll write like step-by-step""" start="00:16:55.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like instructions on how to go about with a REPL-driven detection""" start="00:17:01.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""using animal houses. So it does squint pass label""" start="00:17:07.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to width restriction correctly.""" start="00:17:15.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The tests conducted here indicate that it does not.""" start="00:17:16.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And then I link to a development focus.""" start="00:17:20.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that um effectively acts as my bug report""" start="00:17:25.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""or sorry my uh you know my bug for um""" start="00:17:29.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""my bug listing for this particular problem""" start="00:17:34.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I've identified""" start="00:17:37.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I lay out some criteria of how to""" start="00:17:38.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""go about using the REPL to um""" start="00:17:41.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know I identify what I believe""" start="00:17:44.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is sort of like the quarantined area""" start="00:17:47.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I found for the bug""" start="00:17:49.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then test is that I will go about""" start="00:17:50.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""engaging with narration""" start="00:17:56.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the step-by-step of how I produce""" start="00:17:59.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the circumstances around the bug""" start="00:18:03.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""until I ultimately narrow all the way in""" start="00:18:07.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and arrive at a conclusion.""" start="00:18:10.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Something's going on with the screen share.""" start="00:18:14.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I can see your screen but""" start="00:18:16.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the server cannot see your screen updating.""" start="00:18:18.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Sorry. Oh, no. Maybe you stop switching.""" start="00:18:23.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, and then we just redo it again. Thank you.""" start="00:18:28.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yes, absolutely.""" start="00:18:33.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Thanks to someone who noticed the buffer time,""" start="00:18:36.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the time in the load line was not updating.""" start="00:18:39.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Okay, let's try that again. Now it's updating. Gotcha.""" start="00:18:42.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I hope that wasn't going on for too, too long.""" start="00:18:50.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Hopefully what I was saying""" start="00:18:55.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""wasn't completely indecipherable. Let me see here.""" start="00:18:57.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, this is the sample text for animal houses.""" start="00:19:02.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""This is the spec, not a formal grammar,""" start="00:19:06.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it is more or less the whole of the spec""" start="00:19:10.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that you need to write a parser for animal houses.""" start="00:19:12.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Most of the tests around Squint involve""" start="00:19:16.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""writing sort of ad hoc parsers for animal houses.""" start="00:19:19.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Just when I have it in its own buffer, you know,""" start="00:19:24.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I find more or less it's an excellent way""" start="00:19:27.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of going about testing""" start="00:19:29.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in an ad hoc sort of REPL driven manner.""" start="00:19:31.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I just sort of write regular""" start="00:19:36.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that pull out the pieces of the sections of buffer""" start="00:19:39.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that represent the different fields and data types""" start="00:19:43.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in association with the animals""" start="00:19:49.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and the houses to which they belong.""" start="00:19:51.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And then when I am engaging in research,""" start="00:19:54.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Um, you know, what, what my research section is,""" start="00:20:00.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is I'm ultimately just sort of like""" start="00:20:03.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""laying out, like, you know,""" start="00:20:05.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm sort of thinking to myself, is this working right?""" start="00:20:06.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I feel like, like, I feel like""" start="00:20:10.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""there's something here, something in this area.""" start="00:20:11.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I'll, you know, ask myself, well,""" start="00:20:14.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""kind of like, what is it, you know, what am I looking for?""" start="00:20:16.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And then nail down, how am I going""" start="00:20:20.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to go about looking for it?""" start="00:20:22.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The process of working with the REPL""" start="00:20:24.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to sort of pin down like what exactly is going on""" start="00:20:30.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and come to a conclusion""" start="00:20:34.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""on completely jumping out of order.""" start="00:20:36.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Have you experimented in like whisper.el""" start="00:20:44.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for doing speech to text""" start="00:20:47.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""as you think out loud into your book club?""" start="00:20:49.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Now I am. I love that idea. That is awesome.""" start="00:20:52.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, no, I love that.""" start="00:20:56.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Even with, I only have a CPU, no GPU on mine,""" start="00:21:00.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""it does capture things a lot faster.""" start="00:21:04.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And because it actually saves the recording to a WAV,""" start="00:21:08.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""or I guess you can configure it,""" start="00:21:12.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in case it doesn't recognize something well,""" start="00:21:14.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you can go back and check it. That's nice.""" start="00:21:16.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I like that more than a straight speech-text thing.""" start="00:21:20.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I've been mulling over the idea""" start="00:21:24.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of having a keystroke save into a background buffer""" start="00:21:27.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""so that even when I'm looking at something else,""" start="00:21:30.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I can dictate into my equivalent of the book club file.""" start="00:21:33.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yes, yes, yes, absolutely.""" start="00:21:37.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So you can be scrolling through documentation on, like,""" start="00:21:41.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you can be scrolling through documentation on one screen""" start="00:21:44.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and you can be musing to yourself about,""" start="00:21:48.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like, you know, is this supposed to work this way?""" start="00:21:49.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Like, you know, like, what in terms of, like,""" start="00:21:52.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, like, I see this function.""" start="00:21:57.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It sounds like it's what I'm looking for.""" start="00:21:59.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I don't know if the types are quite right.""" start="00:22:01.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I don't understand. It's named what I'm looking for,""" start="00:22:03.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but I don't know what it's taking in.""" start="00:22:05.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You can reason through all of this.""" start="00:22:07.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You're not even writing into the buffer""" start="00:22:09.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that you're working with. That's actually so cool.""" start="00:22:10.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Or you can type into the org capture process""" start="00:22:14.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""so that it can pick up an annotation automatically.""" start="00:22:17.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Sorry, annotation is the link to the thing,""" start="00:22:21.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""whatever you're looking at.""" start="00:22:24.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Oh, that's super cool. Yes. No, I actually really love it.""" start="00:22:26.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I haven't, you know, hooking this all up to Org Capture at all.""" start="00:22:33.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I actually really love that idea in of itself. Yeah.""" start="00:22:36.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Or a capture will give you a lot of capture options.""" start="00:22:58.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Like you can capture to your currently""" start="00:23:01.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""clocked in, uh, heading. So then it just files your note""" start="00:23:03.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in the right place automatically.""" start="00:23:11.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Absolutely. I love that. Let me see.""" start="00:23:12.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm actually like writing a note to try that out.""" start="00:23:19.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm definitely going to have to do that.""" start="00:23:22.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Like the flexibility of that in particular sounds just perfect.""" start="00:23:25.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'd like to finish typing noises""" start="00:23:36.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then we can ask the next question""" start="00:23:38.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for which there is one.""" start="00:23:39.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The question is, what is the largest project""" start="00:23:41.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in terms of team size you had the chance to consult""" start="00:23:45.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and introduce the book club tapas concept?""" start="00:23:48.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And what has been your experiences with these setups,""" start="00:23:51.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""implying larger applications or solutions""" start="00:23:53.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that company is working on?""" start="00:23:56.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So yeah, probably the largest application.""" start="00:23:57.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I have, It's been interesting.""" start="00:24:01.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So in regards to this, the largest,""" start="00:24:05.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would say two people""" start="00:24:08.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in a couple of different circumstance.""" start="00:24:10.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So it's the pair of us working in a startup context.""" start="00:24:12.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And then, you know, we both have""" start="00:24:20.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like rather technical backgrounds.""" start="00:24:24.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""We can both more or less, you know,""" start="00:24:25.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, sort of reason about particularly excite,""" start="00:24:27.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""especially as we've been building up top us is that,""" start="00:24:33.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, well, we're both rather technical.""" start="00:24:37.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, I'm definitely software engineering sort of end.""" start="00:24:39.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And, you know, this partner is more.""" start="00:24:42.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I mean, he's done all sorts of different engineering,""" start="00:24:47.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but none of it in a, like, especially software context.""" start="00:24:51.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So like, you know, but what's been""" start="00:24:54.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""really cool about that is that""" start="00:24:56.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""especially as we've built up top us""" start="00:24:58.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and made clear distinctions""" start="00:24:59.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about what they ought to do, you know,""" start="00:25:00.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""he doesn't have a ton of like really,""" start="00:25:02.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""he doesn't like experience like""" start="00:25:04.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""specifically in software engineering,""" start="00:25:10.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but because we have it all laid out""" start="00:25:12.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in this really flexible way,""" start="00:25:15.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""he's able to pick up the ball and like,""" start="00:25:17.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, like he's able to""" start="00:25:20.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""take the ball and run with it.""" start="00:25:21.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because it's all laid out""" start="00:25:23.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in a way that's so intuitive.""" start="00:25:25.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Like, you know, he's able to like""" start="00:25:26.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""collaborate with me and like,""" start="00:25:28.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, like, you know, run off these ideas""" start="00:25:31.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and like really go for it.""" start="00:25:33.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Like, you know, almost as quickly as I can,""" start="00:25:34.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""just because we've set up a structure""" start="00:25:37.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""where like all of the different pieces""" start="00:25:39.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""have these really intuitive""" start="00:25:42.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and intrinsic and straightforward roles.""" start="00:25:43.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And that's, that's something""" start="00:25:46.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's really exciting in of itself""" start="00:25:47.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I didn't really go over in the talk.""" start="00:25:49.045" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Like a managerial perspective,""" start="00:25:50.670" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""this is actually a really excellent way""" start="00:25:54.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of understanding the whole context""" start="00:25:56.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of like what the software stack looks like.""" start="00:26:01.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Because it's like, you know,""" start="00:26:04.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""it makes it more intuitive for developers for sure,""" start="00:26:06.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it makes it more intuitive for everyone.""" start="00:26:09.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, it's on that basis""" start="00:26:10.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I can't imagine clients""" start="00:26:12.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like just a better way at this point.""" start="00:26:14.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Um, that was that was the other circumstance""" start="00:26:18.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""where I have been working with a partner.""" start="00:26:22.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""This has been with, um, you know, I would be, uh.""" start="00:26:25.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, sort of going back and forth""" start="00:26:29.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""with someone who had hired me.""" start="00:26:31.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Um, to, uh, like, you know, to work on contract.""" start="00:26:34.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I would use this to sort of go""" start="00:26:40.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""over with them about, um.""" start="00:26:42.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Sort of get a solid idea of scope and function,""" start="00:26:45.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""do pre-planning as we're going into more specifics""" start="00:26:51.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""on what the overall look for the project""" start="00:26:57.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how it ought to look""" start="00:27:01.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how it all ought to be laid out.""" start="00:27:03.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So there's a lot of really exciting flexibility there""" start="00:27:05.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I think is really cool.""" start="00:27:11.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""People will, of course, be curious""" start="00:27:13.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about the mechanics of that collaboration.""" start="00:27:23.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Did you get other people using Emacs in org?""" start="00:27:25.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Were you using version control? Did you try out CRDT?""" start="00:27:28.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""How did it work?""" start="00:27:32.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So all of this so far has been over screen share,""" start="00:27:33.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""where I would be stepping through the buffer by hand.""" start="00:27:39.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would love to set up some sort of an environment""" start="00:27:43.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""where I could get you know, clients and partners,""" start="00:27:47.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like, you know, really excited""" start="00:27:52.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about using Emacs on org.""" start="00:27:53.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But, you know, it's, it can be a little bit to ask,""" start="00:27:54.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would love to see if I can, like,""" start="00:27:58.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""put together some sort of a config that,""" start="00:28:00.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like, sands off all of this and, you know,""" start="00:28:01.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""makes this this really, you know, you know,""" start="00:28:04.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like safety-proof sort of intuitive environment""" start="00:28:08.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""just for CRDT in particular.""" start="00:28:13.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I love the idea of like, you know,""" start="00:28:16.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""sort of like spawning CRDT""" start="00:28:18.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""so that like, you know, the two of us can,""" start="00:28:21.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, type SPAC and ideas""" start="00:28:24.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and sort of like draft together on, you know,""" start="00:28:27.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""especially like the glue code tapa""" start="00:28:31.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for a larger software stack.""" start="00:28:33.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like collaborating on that over CRDT""" start="00:28:35.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""or having folks step through Tapas and,""" start="00:28:38.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, unfold them and like, you know,""" start="00:28:43.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""point to a particular thing.""" start="00:28:45.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And it's like, you know, like, what's, what's this?""" start="00:28:46.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""What's the clock here?""" start="00:28:49.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""It looks like we're spending a lot of time""" start="00:28:50.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I would like to get a little bit clearer""" start="00:28:52.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of an idea of like what exactly we're doing here.""" start="00:28:54.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""back up a little bit because the stream just disconnected""" start="00:28:56.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and reconnected from the audio.""" start="00:29:01.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So, please repeat just the last sentence.""" start="00:29:02.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, yeah, for sure. Yeah, so I would like, you know,""" start="00:29:06.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I love the idea of, yeah, like, you know, collaborating on,""" start="00:29:11.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""especially like on the glue code.""" start="00:29:18.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""tapa for a particular software stack, you know,""" start="00:29:20.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""having the both of us use CRDT""" start="00:29:23.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to type into it simultaneously,""" start="00:29:26.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that would be super cool.""" start="00:29:27.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I also really love the idea of, you know,""" start="00:29:30.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""having a client or partner, you know,""" start="00:29:33.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""thumb through individual tapas in the stack.""" start="00:29:38.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And then like, you know, like, look at and be like,""" start="00:29:41.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""well, we seem to have time on this recently,""" start="00:29:45.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""can you give me like, some clarification on like,""" start="00:29:47.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, what, what this part is and how it's, you know,""" start="00:29:51.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what it means for the whole""" start="00:29:55.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and sort of like what, you know, what it represents""" start="00:29:57.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in terms of how all of this is going to come together.""" start="00:30:00.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that would be super cool. I love the idea of that.""" start="00:30:02.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would even consider like, you know, if not Emacs proper,""" start="00:30:06.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would love like, you know, maybe a, a web-based org parser.""" start="00:30:11.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for, you know, even on just a read-only version""" start="00:30:17.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the document where, you know, clients and partners, yeah,""" start="00:30:21.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""just sort of thumb through with it""" start="00:30:25.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then chat with questions.""" start="00:30:26.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Make the, you know, screen sharing for, you know,""" start="00:30:28.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""peer programming process""" start="00:30:34.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""just a little bit cleaner, you know, more intuitive on their end.""" start="00:30:36.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that'd be super cool. I love these ideas.""" start="00:30:41.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""All right, theoretically, the big blue button is open.""" start="00:30:50.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think we've gotten to the end""" start="00:30:55.003" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of the questions on the etherpad.""" start="00:30:57.003" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""If anyone else would like to join or ask,""" start="00:31:00.295" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm gonna need a couple of minutes""" start="00:31:03.086" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then I can do closing remarks""" start="00:31:04.841" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""whenever people are ready.""" start="00:31:06.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So I will meet now when people figure things out.""" start="00:31:08.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would also be super down if, you know,""" start="00:31:14.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""anyone was curious about hearing more""" start="00:31:22.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about some of the projects""" start="00:31:25.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I was kind of rambling""" start="00:31:29.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""at the close of the talk,""" start="00:31:30.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""if people wanted to, you know,""" start="00:31:34.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""hear more about, um, some of my ideas""" start="00:31:36.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in regards to, um, uh,""" start="00:31:39.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what am I thinking at home with the, uh,""" start="00:31:42.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""What's it called?""" start="00:31:45.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yeah, yeah, just sort of the, you know,""" start="00:31:49.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""some of the funding for passion projects,""" start="00:31:53.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would be interested in laying out some of the ideas""" start="00:31:55.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about how that could work mechanically.""" start="00:31:58.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I think that that would be, you know,""" start="00:31:59.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""really cool for the whole ecosystem,""" start="00:32:02.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""because I think that there are definitely,""" start="00:32:04.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know, things that we could bang out, you know,""" start="00:32:06.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for getting kind of all sorts of people on that model.""" start="00:32:09.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that it would be really cool""" start="00:32:12.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to to having a, you know, funding model""" start="00:32:14.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for things that are really worth using.""" start="00:32:18.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""um and developing um the other thing is like""" start="00:32:20.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you know just sort of um yeah""" start="00:32:26.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""just rattling off specifics on things""" start="00:32:28.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that people could potentially vote for uh on that""" start="00:32:31.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and in terms of specific might want to work on""" start="00:32:34.961" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""All right, there's a question from IRC.""" start="00:32:53.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Sorry, I just got that. Did you address that one already?""" start="00:32:56.878" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Let's see. Where is it?""" start="00:33:01.881" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I will copy it from IRC. Thank you.""" start="00:33:07.128" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Gotcha. Into the past.""" start="00:33:12.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Perfect, perfect, perfect.""" start="00:33:14.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Let me read the question out loud so it's in the recording.""" start="00:33:27.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I guess a major pro is it has less friction""" start="00:33:30.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""as people can do a lot,""" start="00:33:33.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""maybe not everything in book lab tapas files""" start="00:33:35.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""versus having to log into gazillions of different systems,""" start="00:33:39.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""each one of them keeping a portion of the information.""" start="00:33:42.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Did I get that viewing point right""" start="00:33:45.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""from your elaboration of the collaboration""" start="00:33:47.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""between you and your teammates?""" start="00:33:49.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yes. No, that's absolutely right.""" start="00:33:52.160" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""um because yeah like really""" start="00:33:55.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""my hope is that we can you know""" start="00:33:58.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""there's there's a lot of conflict into that""" start="00:34:00.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""we assume that a lot of um pieces of tooling""" start="00:34:03.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and the separation between them""" start="00:34:13.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is really sort of a necessary evil""" start="00:34:14.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""i think that you know having a system""" start="00:34:16.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""where really the complexity""" start="00:34:19.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of engaging in all of the information""" start="00:34:21.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""relevant to the program.""" start="00:34:25.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""If it's in a format""" start="00:34:29.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""where you can just email it back and forth,""" start="00:34:30.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""break off pieces of it,""" start="00:34:31.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""work with those individually,""" start="00:34:33.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that that's something""" start="00:34:35.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that's incredibly rewarding.""" start="00:34:38.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Something that just dawned on me""" start="00:34:40.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I wanted to mention""" start="00:34:42.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I've been daydreaming about""" start="00:34:44.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is that in a circumstance""" start="00:34:46.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""where you have multiple developers,""" start="00:34:49.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""like, you know, across a larger team,""" start="00:34:52.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""working on a book club tapas driven project,""" start="00:34:53.880" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what you can do is have, you know,""" start="00:34:57.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""a clear, you can lay out your goal,""" start="00:35:02.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then start splitting it to tapas from that point,""" start="00:35:04.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then assign each teammate their own tapa,""" start="00:35:08.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""which becomes their baby.""" start="00:35:11.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And I really love the idea""" start="00:35:13.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""of people being able to, you know,""" start="00:35:15.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""have an idea of an interface""" start="00:35:17.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""about how all of these are""" start="00:35:20.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""ultimately come back together,""" start="00:35:21.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but people have their own like agency""" start="00:35:22.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""over their own code base,""" start="00:35:26.640" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""despite the fact that they're""" start="00:35:27.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""working in collaboration.""" start="00:35:29.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that it can be incredibly motivating""" start="00:35:30.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for a team to, you know, have each person""" start="00:35:32.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in charge of their own project,""" start="00:35:36.080" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but of course it's all ultimately""" start="00:35:38.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""going to the same code base.""" start="00:35:39.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So, you know, I think that,""" start="00:35:41.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that a pursuit of beauty""" start="00:35:43.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is this really solid motivator""" start="00:35:45.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in terms of how people perceive""" start="00:35:48.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""the merits of their efforts""" start="00:35:50.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and how that lights a fire under them""" start="00:35:53.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to continue and keep going and dig deep""" start="00:35:56.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""when things get frustrating.""" start="00:35:59.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""When you have a personal stake""" start="00:36:00.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in your project,""" start="00:36:02.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I think that that's a really excellent time""" start="00:36:03.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to really push and move forward on it.""" start="00:36:06.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And people having ownership""" start="00:36:08.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""over this idea of their specific tapa""" start="00:36:10.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""could be a really cool way to do that""" start="00:36:12.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""in a team setting.""" start="00:36:15.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""But I pivoted off a little bit.""" start="00:36:15.760" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So yes, but I absolutely did that.""" start="00:36:20.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You know, that having a simplistic format""" start="00:36:24.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""for your information""" start="00:36:28.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""is a really solid way to have""" start="00:36:30.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""collaboration be frictionless.""" start="00:36:33.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""You have one source of information""" start="00:36:36.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and you don't have to drown in your tooling.""" start="00:36:38.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""All right, I think you've addressed""" start="00:36:40.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""all the questions on the etherpad.""" start="00:36:51.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And as you said, people can email you,""" start="00:36:54.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""even though the website looks like""" start="00:36:56.800" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""it's still not quite there yet,""" start="00:36:58.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""people can email you or ask questions""" start="00:37:00.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""to the etherpad afterwards.""" start="00:37:03.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Is there anything else that""" start="00:37:05.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""you'd like to share or shall I wrap up,""" start="00:37:07.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""introduce myself doing the closing remarks""" start="00:37:11.040" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and then try to do the closing remarks?""" start="00:37:13.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yes, so I have two last thoughts.""" start="00:37:16.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Yes, no, I did just want to confirm""" start="00:37:18.840" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that my email is completely working.""" start="00:37:21.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""If you want to keep up to date""" start="00:37:24.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""with the stuff that I'm working on,""" start="00:37:27.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""please shoot and I will, you know, at your request,""" start="00:37:29.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I will add you to a mailing list.""" start="00:37:35.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""which will have intermittent updates.""" start="00:37:38.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I'm not going to send you spam,""" start="00:37:40.480" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""but it will have updates for what I'm working on,""" start="00:37:42.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""what this all looks like,""" start="00:37:47.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and just context for the different things""" start="00:37:48.600" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that I'm working on.""" start="00:37:52.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""My website will be going up soon enough.""" start="00:37:53.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I just got a little distracted because I'm like,""" start="00:37:57.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""oh, I'm just gonna spin up a Gux server""" start="00:38:01.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I'm gonna make it super cool""" start="00:38:05.240" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""when really I just need just""" start="00:38:07.000" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Debian and Apache real quick, just something.""" start="00:38:09.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""So the website will be going up. It's just not up yet.""" start="00:38:12.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""And the very last thing is that""" start="00:38:16.680" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would really like to thank everyone""" start="00:38:19.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that helped me to get here. I would like to thank you know,""" start="00:38:22.960" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""all of my, you know, I would like to thank my fiance.""" start="00:38:27.200" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would like to thank all of my friends.""" start="00:38:32.320" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would like to thank my, you know,""" start="00:38:34.520" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""my mentor and business partner, Sharon.""" start="00:38:39.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would like to thank Tracy, my therapist.""" start="00:38:42.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would like to thank my parents.""" start="00:38:45.120" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I invited people to come watch this thing,""" start="00:38:48.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""and I would like to thank all of them.""" start="00:38:53.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would like to thank everyone""" start="00:38:55.280" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""who was planning on coming to this event anyway.""" start="00:38:57.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""The Emacs community is incredible, incredibly encouraging,""" start="00:39:02.440" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""incredibly kind, incredibly smart and talented.""" start="00:39:06.360" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""Y'all make Emacs what it is, and it is so cool.""" start="00:39:09.400" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would like to thank you, Satya.""" start="00:39:13.720" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""I would like to thank all of the organizers""" start="00:39:15.920" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""that made this possible.""" start="00:39:19.560" video="qanda-bookclub-tapas" id="subtitle"]]
+[[!template text="""This thing is the coolest and it was, this was so cool.""" start="00:39:20.880" video="qanda-bookclub-tapas" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [hello@ElephantErgonomics.com](mailto:hello@ElephantErgonomics.com?subject=Comment%20for%20EmacsConf%202023%20bookclub-tapas%3A%20Bookclub%20tapas)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/bookclub-tapas-before.md b/2025/info/bookclub-tapas-before.md
new file mode 100644
index 00000000..9a2f6c00
--- /dev/null
+++ b/2025/info/bookclub-tapas-before.md
@@ -0,0 +1,43 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 32-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-bookclub-tapas>
+Etherpad: <https://pad.emacsconf.org/2025-bookclub-tapas>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-bookclub-tapas"><source src="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--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="mainVideo-bookclub-tapas" data="""
+00:00.620 Introduction
+00:29.680 Hi, I'm Maddie!
+01:03.840 Bookclub Tapas
+02:00.520 Bookclub
+02:40.300 Too many hats, too many roles
+03:55.800 Narrativiation
+05:24.780 My starter kit - My stock, off the shelf suggestions
+05:47.660 Now what?
+05:58.980 Our overarching goal
+06:23.460 Our development focuses
+07:05.120 The rest of the headings
+08:37.980 Conversationality
+10:55.480 Ad-hoc means lesricsf tion
+13:01.920 Gratis documentation
+14:48.440 Keeping the thread of your intention
+16:21.500 Bookclub is becoming too much
+17:25.240 Introducing Tapas
+18:22.840 What are Tapas, what are Tapas not?
+22:25.180 Tapas are maybe best illustrated by example
+25:52.340 Introducing Squint
+28:36.100 What else does Bookclub Tapas do?
+29:08.160 Let's work together
+
+"""]]<div></div>Duration: 31:25 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-bookclub-tapas">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.opus">Download --main.opus (27MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--main.webm">Download --main.webm (74MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--script.org">Download --script.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--split.txt">Download --split.txt</a></li><li><a href="https://youtu.be/GAOZzrm6ecA">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-bookclub-tapas">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.m4v">Download --answers.m4v (100MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-bookclub-tapas--bookclub-tapas--maddie-sullivan--answers.webm">Download --answers.webm (107MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/bookclub-tapas-nav.md b/2025/info/bookclub-tapas-nav.md
new file mode 100644
index 00000000..9cc95b9c
--- /dev/null
+++ b/2025/info/bookclub-tapas-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/gardening">Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</a>
+Next by track: <a href="/2025/talks/schemacs">One year progress update Schemacs (formerly Gypsum)</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/calc-after.md b/2025/info/calc-after.md
new file mode 100644
index 00000000..7c0f6ebf
--- /dev/null
+++ b/2025/info/calc-after.md
@@ -0,0 +1,314 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="calc-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:03.620" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Hello, my name is Christopher Howard and welcome to my talk.""" start="00:00:03.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This is basically an introduction""" start="00:00:08.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to the built-in Emacs calculator,""" start="00:00:11.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""properly known as Emacs Calc,""" start="00:00:15.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""particularly from the perspective of someone""" start="00:00:18.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with a technical background such as engineering or electronics.""" start="00:00:21.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I will say, though, my personal interest is not really""" start="00:00:27.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in digital computing or digital calculators,""" start="00:00:32.880" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but lately has been focused more on analog computing.""" start="00:00:37.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I have, for example, been working to master""" start="00:00:42.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the venerable slide rule, a mechanical computer""" start="00:00:46.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that calculates multiplication powers and logarithms.""" start="00:00:50.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Here's a picture of one.""" start="00:00:57.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""It's a physical tool that was used for hundreds of years""" start="00:01:02.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for this sort of thing""" start="00:01:06.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""before the handheld calculator was made popular.""" start="00:01:09.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And I also had a project that I did""" start="00:01:16.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for a while to several months""" start="00:01:18.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to build an electronic analog computer.""" start="00:01:21.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""A rudimentary attempt of mine, but it's functional,""" start="00:01:33.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and it's basically a 1960s or 1970s style""" start="00:01:38.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""electronic analog computer built very much on a budget,""" start="00:01:43.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but the box in the middle is the computer proper""" start="00:01:48.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which has most of the components inside of it""" start="00:01:52.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""as well as the potentiometers for setting values,""" start="00:01:55.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and an operation switch.""" start="00:02:00.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""There's a patch panel on the left""" start="00:02:02.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for connecting the different integrators,""" start="00:02:04.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""amplifiers, multipliers, and so forth together.""" start="00:02:07.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then the output of the simulation is displayed""" start="00:02:11.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""on the oscilloscope on the right side,""" start="00:02:16.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which is a digital oscilloscope.""" start="00:02:19.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""To be honest, I think that a talk about analog computing""" start="00:02:25.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""would be much more interesting""" start="00:02:28.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""than the talk that I'm about to give,""" start="00:02:30.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but unfortunately that would be out of scope for EmacsConf.""" start="00:02:32.040" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What is Calc?""" start="00:02:36.640" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""So instead I will talk about Emacs Calc,""" start="00:02:36.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the digital calculator built into Emacs.""" start="00:02:39.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Emacs Calc, while not being a replacement for software""" start="00:02:43.360" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""like GNU Octave, does have advanced calculator functionality""" start="00:02:47.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that can be useful in engineering, electronics,""" start="00:02:51.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""or other technical applications. So I don't want to oversell it,""" start="00:02:55.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but I think functionality-wise, Calc is somewhere in between""" start="00:03:00.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what you'd expect of a decent scientific calculator""" start="00:03:06.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and an advanced graphics calculator.""" start="00:03:12.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So this talk I'll mention is not intended to be a tutorial""" start="00:03:23.940" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but only a brief introduction to Calc.""" start="00:03:28.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Please refer to the built-in Calc info manual""" start="00:03:33.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for detailed instructions on how to complete operations.""" start="00:03:37.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Turn off my volume here.""" start="00:03:46.740" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The documentation for Emacs Calc is built-in,""" start="00:04:01.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""although on some distributions you may have to install""" start="00:04:05.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the Emacs documentation separately for licensing reasons.""" start="00:04:10.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Calc presents itself as a stack-based calculator""" start="00:04:24.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""where entries are dropped onto a stack""" start="00:04:28.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then an operation is performed on the stack entries.""" start="00:04:31.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, I can drop 1.23 onto the stack,""" start="00:04:36.740" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then 8.56, and then multiply them together.""" start="00:04:42.900" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""calc-algebraic-entry""" start="00:04:54.280" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""It may present itself as a stack-based calculator,""" start="00:04:54.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but indeed, Calc is also capable of accepting input""" start="00:05:01.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in the more well-known algebraic format""" start="00:05:05.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""by using the calc-algebraic-entry command,""" start="00:05:07.740" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which by default is bound to the apostrophe (') key.""" start="00:05:10.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So you type the apostrophe key, enter the algebraic input,""" start="00:05:15.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""including parentheses as needed.""" start="00:05:19.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, here's a calculation of the resonance frequency""" start="00:05:22.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""of a coil which has an inductance of 250 microhenries""" start="00:05:28.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and 160 picofarads, taken from one of my electronics handbooks.""" start="00:05:35.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The formula for that is 1 over 2 pi""" start="00:05:41.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then the square root of our inductance""" start="00:05:50.020" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which is in this case 250 microfarads - excuse me, microhenries""" start="00:05:57.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then the capacitance is 160 picofarads.""" start="00:06:06.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Small typo here.""" start="00:06:19.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Now I need to evaluate that one more time,""" start="00:06:24.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because pi is a symbol.""" start="00:06:26.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I get about 800 kHz resonant frequency.""" start="00:06:30.920" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""calc-roll-down""" start="00:06:37.399" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""The command calc-roll-down,""" start="00:06:37.399" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which by default is bound to the TAB key,""" start="00:06:41.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""will swap the top two stack entries,""" start="00:06:44.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which is sometimes useful if you need to manipulate something""" start="00:06:47.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that's further down the stack.""" start="00:06:51.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So I can swap this around and say multiply by two""" start="00:06:57.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then put it back where it was.""" start="00:07:02.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This command is also capable of rolling the entire stack.""" start="00:07:05.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Say I want to shift them all around.""" start="00:07:14.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This can be done by passing extra arguments""" start="00:07:18.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to the calc-roll-down function.""" start="00:07:21.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That's a little bit inconvenient to do manually,""" start="00:07:23.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so in my init file, I defined here a key definition""" start="00:07:28.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that passes in those arguments correctly.""" start="00:07:40.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I attached this to shift-tab,""" start="00:07:45.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so this way, I can roll the entire stack.""" start="00:07:49.180" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then I could change one entry here""" start="00:07:52.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then put it back where it was.""" start="00:07:56.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So Calc does algebraic input.""" start="00:08:03.460" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Advanced functions""" start="00:08:07.760" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""It also does advanced functions""" start="00:08:07.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that you would expect any handheld scientific calculator,""" start="00:08:10.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""including trigonometric functions.""" start="00:08:15.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, we can get the sine of a number.""" start="00:08:19.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Now I'll mention here that Calc has multiple modes.""" start="00:08:25.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Right now it's in degree mode.""" start="00:08:30.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""You can switch over to radian mode if you want.""" start="00:08:32.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'm going to put it back in degrees.""" start="00:08:38.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Drop 12 degrees on the stack, and then get the sine of that.""" start="00:08:42.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then with the inverse sine function, I can put it back.""" start="00:08:49.800" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Solving equations with calc-solve-for""" start="00:08:58.180" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Calc also has the nifty ability to solve equations for you""" start="00:08:58.180" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so long as the equation is not too complicated.""" start="00:09:07.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This is using the calc-solve-for function.""" start="00:09:13.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, we could enter in an equation algebraically,""" start="00:09:19.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""then run calc-solve-for, and we just have to tell it""" start="00:09:31.700" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what variable we want to solve for. And there we go.""" start="00:09:36.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""We can do this manually as well""" start="00:09:41.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""just so you can see that we get the same result.""" start="00:09:43.200" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Systems of equations""" start="00:09:54.720" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Calc is also able to solve systems of equations.""" start="00:09:54.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""We can put more than one equation on the stack,""" start="00:09:57.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then solve for several variables.""" start="00:10:03.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""To give a technical example for this,""" start="00:10:08.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll show you a resistor network scribble that I did recently.""" start="00:10:13.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Hopefully you can see that. Basically,""" start="00:10:30.660" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""it's fairly simple, a pretty simple resistor network""" start="00:10:32.820" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with 1 kilo ohm and 10 kilo ohm resistors,""" start="00:10:38.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and using the loop methods, we are calculating the currents,""" start="00:10:42.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the current in each loop, and then that current can be used""" start="00:10:48.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to solve for the voltage of each individual resistor""" start="00:10:52.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""if we want to. So at the bottom there we have the equations""" start="00:10:58.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that we come up with as we work through each loop.""" start="00:11:06.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And I'm going to paste that into Calc.""" start="00:11:11.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""To save some time, I'm going to copy and paste that""" start="00:11:19.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""from my notes instead of typing it out.""" start="00:11:22.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So we have two equations there on the stack""" start="00:11:34.260" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in one stack entry. We run that calc-solve-for function again,""" start="00:11:38.260" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and we tell it which variables we want to solve for.""" start="00:11:44.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And voila! Those are our currents,""" start="00:11:49.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which we can then use to get the voltages""" start="00:11:51.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for the individual resistors.""" start="00:11:55.720" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""calc-find-root""" start="00:12:00.080" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""I'll just briefly mention""" start="00:12:00.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that if Calc is not able to solve an equation""" start="00:12:02.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with calc-solve-for,""" start="00:12:05.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""then you might be helped by another calc function""" start="00:12:07.780" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""called calc-find-root.""" start="00:12:10.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This function basically does a manual search""" start="00:12:11.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for a numerical solution to the equation.""" start="00:12:14.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And there's the documentation page on that.""" start="00:12:30.200" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Derivatives and integrals""" start="00:12:39.960" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Calc can also solve or find derivatives of functions,""" start="00:12:39.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""at least the more straightforward functions.""" start="00:12:44.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For a simple example,""" start="00:12:47.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""we can get the derivative of that""" start="00:12:49.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with the derivative function.""" start="00:13:00.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""On the other hand, Calc is also capable of figuring out""" start="00:13:11.980" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""indefinite integrals.""" start="00:13:17.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Say we put that function back on the stack,""" start="00:13:22.100" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and this time, we call the integral function.""" start="00:13:26.860" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""There you go. Of course, you have to add""" start="00:13:32.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""your own constant of integration.""" start="00:13:35.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For integrals that Calc cannot figure out symbolically,""" start="00:13:39.820" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""a numerical integration method is available""" start="00:13:43.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""through the calc-num-integral command, which is documented...""" start="00:13:46.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The function documentation is available here, more or less.""" start="00:13:59.999" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Programmable functions""" start="00:14:17.540" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""I definitely need to mention""" start="00:14:17.540" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that Calc is capable of doing programmable functions.""" start="00:14:20.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That is to say, you can program your own functions into Calc.""" start="00:14:24.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""There are three separate ways to do this.""" start="00:14:29.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""One is through a macro method""" start="00:14:32.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""similar to Emacs's usual keyboard macros.""" start="00:14:36.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The second method is to transform an algebraic function""" start="00:14:41.540" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""into a stored function definition.""" start="00:14:46.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And the third is to use Elisp directly.""" start="00:14:50.860" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Personally, I find that the second method""" start="00:14:54.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""is the most practical, the most convenient and practical""" start="00:14:56.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in my opinion. So I'll give a quick example of that.""" start="00:15:01.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So I could... Let's say I wanted to have a function""" start="00:15:08.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for calculating capacitive reactance.""" start="00:15:14.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll define that in algebraic mode first.""" start="00:15:20.700" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The function for that is 1 over 2 pi""" start="00:15:28.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the frequency and the capacitance.""" start="00:15:33.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Drop that on the stack. You see, it does automatically""" start="00:15:41.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""get simplified a little bit, but it's the same function.""" start="00:15:44.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then I press letters Z and F. Do that again.""" start="00:15:52.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Z and F to start transforming that into a stored function.""" start="00:15:58.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""It asks me to select a user key, a single key press.""" start="00:16:06.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll use the letter c.""" start="00:16:11.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then it's going to ask for a longer command name.""" start="00:16:15.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I've actually defined this once before, so it prefilled in""" start="00:16:19.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that command name.""" start="00:16:24.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then I need to enter which variables in the formula""" start="00:16:38.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""are actual arguments, rather than just symbols""" start="00:16:43.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to be evaluated later. I prefer to put this in with frequency""" start="00:16:46.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and the capacitance after that,""" start="00:16:52.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but actually in this particular case,""" start="00:16:54.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""it doesn't matter at all to the mathematics.""" start="00:16:57.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So, now all I have to do, that this is defined,""" start="00:17:07.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""is I can drop the frequency on the stack,""" start="00:17:11.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which we'll say, for this example, will be 4.5 MHz,""" start="00:17:15.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then drop on the capacitance, which in this example""" start="00:17:24.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""will be 22 pF.""" start="00:17:32.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then I'll call the function that I just defined.""" start="00:17:40.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I don't really like having to try to remember""" start="00:17:42.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the short letters that I've come up with,""" start="00:17:45.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so I'll just use the longer name.""" start="00:17:48.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I need to evaluate one more time""" start="00:17:57.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because the symbol pi is in there and not yet evaluated.""" start="00:17:59.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And so if I've done that right,""" start="00:18:05.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""we have a capacitive reactance of about 1600 ohms.""" start="00:18:07.540" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Plotting""" start="00:18:12.160" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""As the last feature that I'll mention here,""" start="00:18:12.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Emacs Calc does have an interface with gnuplot,""" start="00:18:16.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""if you want to have Calc work as your graphing calculator.""" start="00:18:24.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I do need to be honest and mention""" start="00:18:30.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I don't generally use it myself""" start="00:18:33.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because there's another program in GNOME""" start="00:18:35.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I've found to be generally more convenient""" start="00:18:39.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for the things that I want to graph quickly.""" start="00:18:43.500" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""But I think I can give you a simple example.""" start="00:18:47.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So first, we need to drop a range on the stack.""" start="00:18:53.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Let's say 0 to 10.""" start="00:19:00.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then we need to drop the function on the stack.""" start="00:19:06.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then I believe it's the letters g and f that graph this.""" start="00:19:11.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Let's see. Yep, there we go.""" start="00:19:17.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So there's our function and it looks nice.""" start="00:19:22.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That was pretty easy.""" start="00:19:25.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That's the fast way to do it.""" start="00:19:26.660" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I will, as a disclaimer, mention that""" start="00:19:29.020" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""using this quick approach,""" start="00:19:32.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that sometimes more complicated graphs""" start="00:19:34.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""will not turn out nicely,""" start="00:19:38.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because by default, the resolution will be pretty low.""" start="00:19:40.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That is to say it's... gnuplot is going to be""" start="00:19:44.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""skipping a lot of points""" start="00:19:48.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and so you'll have to learn a bit more""" start="00:19:49.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""about how to use the interface,""" start="00:19:52.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what parameters to pass if you want all your graphs""" start="00:19:55.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to come out looking nice.""" start="00:19:59.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So that covers all the features that I wanted to cover.""" start="00:20:03.700" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wish list""" start="00:20:08.800" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""I wanted to briefly mention a wish list of items""" start="00:20:08.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I'd like to see in Calc.""" start="00:20:13.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""One of them would be improper integrals.""" start="00:20:16.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So that's like our definite integrals""" start="00:20:23.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""except for where a limit of integration is infinity.""" start="00:20:25.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That's something that can be useful in a few applications.""" start="00:20:32.860" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Something else that would be neat to have would be""" start="00:20:38.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""annotations for row entries. So for example""" start="00:20:41.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""if I was putting together a sum of numbers""" start="00:20:45.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for, say, my monthly budget,""" start="00:20:48.820" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""let's say I was paying $2,000 for my rent""" start="00:20:53.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and let's say $800 a month for my groceries,""" start="00:20:57.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""(a lot of kids to feed there)""" start="00:21:03.832" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then say another $60 for dining out, and so on,""" start="00:21:07.932" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""it would be nice if there was some way""" start="00:21:14.566" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to put a little annotation next to each number""" start="00:21:18.260" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so that you could remember""" start="00:21:21.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what the meaning of that number was more easily.""" start="00:21:23.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I actually looked into programming this into Calc myself,""" start="00:21:27.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but discovered that it would require reprogramming""" start="00:21:31.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""quite a bit of Calc to make that work well""" start="00:21:35.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""across all calc functionality,""" start="00:21:41.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and so, eventually, I gave up.""" start="00:21:43.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""But I'd still really like to have that feature.""" start="00:21:46.940" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The final thing, though""" start="00:21:51.140" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I think this would not necessarily belong in Calc,""" start="00:21:52.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I think it would be cool if Emacs had some way""" start="00:21:54.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to run numerical solutions""" start="00:21:57.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for systems of differential equations,""" start="00:22:00.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""also known as a differential analyzer.""" start="00:22:02.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So this would allow you to be able to set up simulation models""" start="00:22:06.020" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""involving systems of differential equations,""" start="00:22:09.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for example, a spring mass system, or pressure temperature,""" start="00:22:11.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""or what have you, and then run the simulation""" start="00:22:14.880" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""using numerical approximation.""" start="00:22:18.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Maybe it would be silly""" start="00:22:22.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to actually put that in Calc itself,""" start="00:22:24.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but a nice interface maybe to some other software,""" start="00:22:26.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""simple software that did that,""" start="00:22:30.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""an easy to use interface for that""" start="00:22:33.300" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""would be really great.""" start="00:22:35.780" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:22:38.600" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""So that's my entire talk.""" start="00:22:38.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll just mention some information.""" start="00:22:41.801" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""If you want to learn more about me""" start="00:22:44.535" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""or things that I'm interested in,""" start="00:22:48.366" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I do not any longer have a web presence.""" start="00:22:50.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I don't have a website anymore,""" start="00:22:57.780" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but I do have a Gemini capsule""" start="00:22:59.660" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I post to all the time.""" start="00:23:03.360" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And if you can install, if you're willing to install the...""" start="00:23:07.140" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Gemini browser known as Elpher""" start="00:23:13.880" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""into Emacs, which is available from ELPA,""" start="00:23:19.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""then you can browse directly to it""" start="00:23:23.699" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and look around my Gemini capsule.""" start="00:23:27.360" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Thank you very much.""" start="00:23:31.440" video="mainVideo-calc" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+Questions or comments? Please e-mail [christopher@librehacker.com](mailto:christopher@librehacker.com?subject=Comment%20for%20EmacsConf%202023%20calc%3A%20Basic%20Calc%20functionality%20for%20engineering%20or%20electronics)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/calc-before.md b/2025/info/calc-before.md
new file mode 100644
index 00000000..34fe5808
--- /dev/null
+++ b/2025/info/calc-before.md
@@ -0,0 +1,28 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 24-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-calc>
+Etherpad: <https://pad.emacsconf.org/2025-calc>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-calc"><source src="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--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="mainVideo-calc" data="""
+00:03.620 Introduction
+02:36.640 What is Calc?
+04:54.280 calc-algebraic-entry
+06:37.399 calc-roll-down
+08:07.760 Advanced functions
+08:58.180 Solving equations with calc-solve-for
+09:54.720 Systems of equations
+12:00.080 calc-find-root
+12:39.960 Derivatives and integrals
+14:17.540 Programmable functions
+18:12.160 Plotting
+20:08.800 Wish list
+22:38.600 Wrapping up
+
+"""]]<div></div>Duration: 23:35 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-calc">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/MAc6gCUHjOw">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/calc-nav.md b/2025/info/calc-nav.md
new file mode 100644
index 00000000..cd4095ba
--- /dev/null
+++ b/2025/info/calc-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/latex">LaTeX export in org-mode: the overhaul</a>
+Next by track: <a href="/2025/talks/blee-lcnt">Blee-LCNT: An Emacs-centered content production and self-publication framework</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/claude-code-after.md b/2025/info/claude-code-after.md
new file mode 100644
index 00000000..e4a29e32
--- /dev/null
+++ b/2025/info/claude-code-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [ywata1989@gmail.com](mailto:ywata1989@gmail.com?subject=Comment%20for%20EmacsConf%202023%20claude-code%3A%20emacs-claude-code%3A%20Intelligent%20Claude%20Integration%20for%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/claude-code-before.md b/2025/info/claude-code-before.md
new file mode 100644
index 00000000..d9c35617
--- /dev/null
+++ b/2025/info/claude-code-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-min talk cancelled
+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/2025/info/claude-code-nav.md b/2025/info/claude-code-nav.md
new file mode 100644
index 00000000..35ed938a
--- /dev/null
+++ b/2025/info/claude-code-nav.md
@@ -0,0 +1,4 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+</div> \ No newline at end of file
diff --git a/2025/info/commonlisp-after.md b/2025/info/commonlisp-after.md
new file mode 100644
index 00000000..05c47a8d
--- /dev/null
+++ b/2025/info/commonlisp-after.md
@@ -0,0 +1,790 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="commonlisp-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""Hey, everyone. This talk is on this tradition,""" start="00:00:00.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""intelligent agents in Emacs""" start="00:00:07.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""using my Leonardo software individuals,""" start="00:00:10.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which I've mistyped as I just wrote here, I see.""" start="00:00:13.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Thank you to Sacha and everyone""" start="00:00:16.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""at EmacsConf and Emacs, I guess.""" start="00:00:20.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Sorry that I was running late.""" start="00:00:25.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I'm screwlisp.small-web.org.""" start="00:00:26.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I run those one or two weekly shows for a long time,""" start="00:00:29.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the Lispy Gopher Climate.""" start="00:00:34.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I'm active on the Mastodon at @screwlisp@gamerplus.org.""" start="00:00:35.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I'm screwtape on lambda.moo.mud.org.""" start="00:00:42.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And I ported, over the last kind of year,""" start="00:00:46.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""years, to some extent, I ported Eric Sandewall's system""" start="00:00:50.475" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""for developing intelligent software agents,""" start="00:00:58.500" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which he finished working on in 2014.""" start="00:01:01.520" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I got it working again around 2025.""" start="00:01:04.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""First, we're going to take a long arc.""" start="00:01:10.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""We're going to motivate... This is the idea.""" start="00:01:14.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""You can see I'm using Org Mode,""" start="00:01:16.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which I hope provides a good example""" start="00:01:18.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""for all the Org-Mode-oriented talks this conference.""" start="00:01:19.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""But you can also see""" start="00:01:25.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that I'm using Eduardo Ochs's eev minor mode with Org.""" start="00:01:26.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""But we can see a little bit of the difference""" start="00:01:33.108" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""between these two, and that will kind of evolve into""" start="00:01:35.641" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""my style with the agent communication in Emacs.""" start="00:01:39.208" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So you can see I used eev anchors as my Emacs headings.""" start="00:01:45.260" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""In eev, you just evaluate Elisp expressions""" start="00:01:53.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""as links to places.""" start="00:01:56.840" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""An anchor will link you somewhere else in the document.""" start="00:01:58.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So my table of contents links to my talk, I guess.""" start="00:02:01.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Anchors come in two halves,""" start="00:02:04.808" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""so that's why I built that unique table of contents""" start="00:02:07.508" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""experience there. What else am I going to say?""" start="00:02:12.941" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Totally normal computing""" start="00:02:21.480" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""So first, let's just do some totally normal computing""" start="00:02:21.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""because intelligence is going to be difficult to describe.""" start="00:02:24.175" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Let's just try and compute normally in Emacs in Org Mode""" start="00:02:27.141" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and then segue more so into eev,""" start="00:02:31.101" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and then maybe I would like if an agent was intelligent,""" start="00:02:34.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I would think that an intelligent agent""" start="00:02:38.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""would do something like what I'm doing.""" start="00:02:40.840" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It should be recognizably similar to what I do myself.""" start="00:02:43.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I don't think the word intelligence is relevant""" start="00:02:47.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""if it's not related to something I'm not familiar with.""" start="00:02:52.400" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Using Emacs as a human""" start="00:02:55.680" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""Using Emacs as a human, reading headings from my article,""" start="00:02:55.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""using Common Lisp. Right, my friend jeremy_list""" start="00:03:01.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""wrote actually a big project,""" start="00:03:03.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but part of it was base64 encoding,""" start="00:03:06.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and I just yoinked his C code for base64 encoding, I think.""" start="00:03:09.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""This is just clearly some C-based 64 encoding.""" start="00:03:17.440" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""If you go to my blog, his project is actually a C++ project""" start="00:03:20.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and you can see me doing this with C++ rather than C.""" start="00:03:24.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""But basically, you can go to my blog articles""" start="00:03:29.580" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""if you want more detail to read something instead.""" start="00:03:33.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then here's some embeddable Common Lisp,""" start="00:03:40.300" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Jack Daniel's ECL ANSI Common Lisp compiler I guess.""" start="00:03:42.434" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""This is just what it looks like.""" start="00:03:48.440" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""You can see I'm using Org Mode trickily,""" start="00:03:49.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""using noweb to put the lines of the C source block""" start="00:03:52.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""in this one. We're tangling it to this file""" start="00:03:56.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""rather than evaluating it.""" start="00:04:00.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So, you know, literate programming, tangle and weave.""" start="00:04:01.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""We're just using Org Mode""" start="00:04:05.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""like the other Org Mode people""" start="00:04:07.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""are all showing us this conference, I guess.""" start="00:04:09.198" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then we have to compile it.""" start="00:04:12.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's always hard to remember these invocations for me.""" start="00:04:13.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Results file. The file is my .fas file,""" start="00:04:16.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""because the way ECL's C and C++ integration works""" start="00:04:20.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""is that it just has to be seen by compile-file in Lisp.""" start="00:04:24.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I cached this earlier.""" start="00:04:30.520" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh, I should actually start Lisp, actually, shouldn't I?""" start="00:04:32.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""How are we going to do this?""" start="00:04:36.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""(setq inferior-lisp-program &quot;ecl&quot;). We could M-x slime.""" start="00:04:39.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Because... we better actually load this.""" start="00:04:47.100" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I did a dry run before.""" start="00:04:48.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I think we can just load this, because I already did it.""" start="00:04:54.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""But I cached it. Let's nuke the cache.""" start="00:04:58.260" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Okay, I'm going to say that that probably worked.""" start="00:05:04.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Now, as you saw, that base64 encoding""" start="00:05:06.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""was just, I guess, number to character code""" start="00:05:09.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to other character code. So I wrote this higher-level Lisp one,""" start="00:05:13.620" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but that's not really the point.""" start="00:05:19.141" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Obviously, Emacs also has Base64 encoding.""" start="00:05:20.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's just a point that we might have""" start="00:05:26.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""C++ and C external programs""" start="00:05:27.980" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that we'd like to be integrating""" start="00:05:29.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""into our Emacs agents capabilities.""" start="00:05:31.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Here we can see a normal named Org Mode source block.""" start="00:05:37.140" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that calls that function, then an Org Mode source block""" start="00:05:46.475" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that calls Emacs's base64-decode-string as a way of""" start="00:05:50.475" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""validating it, I guess.""" start="00:05:56.300" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""We go to Org, so we can see...""" start="00:05:57.941" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I have a named call to that function calling the Lisp function""" start="00:06:00.141" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Org is just kind of like this.""" start="00:06:04.408" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's cached but I don't seem to have run it before.""" start="00:06:07.041" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then I do the Emacs decode.""" start="00:06:11.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So if we just run this using C-c C-c,""" start="00:06:13.575" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and we can kind of see""" start="00:06:15.975" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""what Org Mode is like a little bit here.""" start="00:06:17.241" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""All right, yes, so as we can see,""" start="00:06:22.180" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""oh hang on, let's run this as well actually.""" start="00:06:24.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So the C embeddable Common Lisp""" start="00:06:27.660" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""base64 encoding gets us this.""" start="00:06:32.194" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then Emacs is decoding and gets us back,""" start="00:06:35.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""kind of validates it. I think I'm missing some things.""" start="00:06:38.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I don't pad characters out to the correct byte lengths,""" start="00:06:40.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that kind of thing, but it's fine.""" start="00:06:43.080" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""using this via eev as a human""" start="00:06:45.400" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""And then I kind of contrast that to,""" start="00:06:45.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I really like what my friend mdhughes.tech,""" start="00:06:48.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""game dev of the ages, calls REPL-driven development,""" start="00:06:53.180" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which he says is kind of the opposite of literate coding.""" start="00:06:57.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I think eev, at least for me,""" start="00:07:06.140" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""is kind of like REPL-driven development.""" start="00:07:08.941" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So in eev, if you just press F8, the thing happens.""" start="00:07:11.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And if it's a red star line,""" start="00:07:16.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the thing is an Emacs Lisp thing,""" start="00:07:17.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and otherwise it goes to the eepitch target.""" start="00:07:19.440" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So if I do this, great, now I'm pitching to that slime""" start="00:07:23.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""REPL ECL I made. And then I pressed F8. Press F8 again.""" start="00:07:26.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""The string got coerced to a list.""" start="00:07:32.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""F8. Now it's car codified.""" start="00:07:34.481" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I quite like this, because this looks like something I can do""" start="00:07:38.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and understand doing and reason about doing.""" start="00:07:41.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then I form a command to send from Lisp to Emacs.""" start="00:07:44.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then I do it and I recover the string from the beginning.""" start="00:07:49.520" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I guess I had one of these here. Oh, by the way, look at""" start="00:07:52.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""What Org Mode did with an eev source block.""" start="00:07:56.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then when I close the source block""" start="00:07:59.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""using C-c ',""" start="00:08:01.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""it brings me back to the Org doc,""" start="00:08:02.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which was a cool synergy between the eev minor mode""" start="00:08:05.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and eev source blocks in Org Mode that I noticed.""" start="00:08:09.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And so I kind of want my agents to be like this eev usage.""" start="00:08:16.020" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Clearly, Org is super powerful,""" start="00:08:22.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but I don't even like writing calls like this,""" start="00:08:25.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""where you write the function that will happen last first,""" start="00:08:28.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""so you're kind of writing right to left, first to last.""" start="00:08:32.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Whereas in REPL-driven development,""" start="00:08:39.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I guess I'm writing top to bottom,""" start="00:08:41.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and eev, I guess, executable logs""" start="00:08:43.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""are logs that are like that.""" start="00:08:46.980" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So I kind of like eev's view for reasoning""" start="00:08:48.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""more than Org's Tangle.""" start="00:08:52.379" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Obviously, Tangle is trying to do tricky things,""" start="00:08:54.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but maybe they have different specializations,""" start="00:08:57.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and eev's one is more close""" start="00:09:01.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to my own version of intelligence, maybe.""" start="00:09:04.880" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Software individuals using eev in Emacs like a human""" start="00:09:07.800" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""Software individuals using eev in Emacs like a human.""" start="00:09:07.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Yeah, you can always visit my blog post for more detail.""" start="00:09:13.540" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Right, I made a CLOS object""" start="00:09:17.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""in Common Lisp to wrap doing this.""" start="00:09:20.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's not really the topic.""" start="00:09:22.520" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's in the appendix somewhere if you need it.""" start="00:09:23.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So I've just executed that.""" start="00:09:27.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""You can look at the appendix in your own time.""" start="00:09:29.560" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Sandewall's leonardo system""" start="00:09:32.080" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""Jumping over to actually starting""" start="00:09:32.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""our hypothetical intelligent agent.""" start="00:09:33.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I guess we're doing eev here.""" start="00:09:36.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So if we open this, press F8 a bunch of times.""" start="00:09:38.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh, and if you were cloning it yourself,""" start="00:09:46.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I guess that's what you would do. setq eepitch-buffer-name.""" start="00:09:49.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh yeah, if you went to an eepitch shell and then came back.""" start="00:09:56.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""You would have had to do that, but I didn't.""" start="00:10:00.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I didn't, so I didn't need to.""" start="00:10:01.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Sandewall's style is to use relative paths""" start="00:10:04.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to tell which agent is acting inside a software individual.""" start="00:10:07.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Remembering a software individual""" start="00:10:11.975" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""is potentially a bunch of agents.""" start="00:10:13.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And we load... So one individual,""" start="00:10:15.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""all the agents in each individual share a kernel.""" start="00:10:18.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So only one agent in one software individual""" start="00:10:21.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""is active at any given time, but the agents are separate.""" start="00:10:25.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""They just all have to share the kernel resource,""" start="00:10:28.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which is the Remus agent. Oh, I got rid of this.""" start="00:10:31.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And start the CLE is the thing.""" start="00:10:38.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh, I did need to have an EmacsConf knowledge base.""" start="00:10:43.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Well, let's just keep eepitching for a little bit.""" start="00:10:46.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So I think I made... I'm going to call it emacsconf-kb.""" start="00:10:48.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Right, that looks likely. And I think that the agent...""" start="00:10:55.260" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I can check this. I could have checked that.""" start="00:10:59.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I could have done something like (get emacsconf-kb contents).""" start="00:11:03.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Yeah, and you can see""" start="00:11:12.700" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""there's a location inside it which is agent1,""" start="00:11:13.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which I assume is an entity file""" start="00:11:15.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that I was working with before.""" start="00:11:17.520" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then what were we going to do?""" start="00:11:20.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh yeah, back to the embeddable Common Lisp image.""" start="00:11:21.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So if I just press our button back to there...""" start="00:11:28.280" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Start a loop for one leonardo software individual""" start="00:11:36.100" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""And so my idea is that for an Emacs agent,""" start="00:11:36.100" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""basically, I'd like to have an Emacs Lisp list.""" start="00:11:41.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And just when stuff gets into that list,""" start="00:11:47.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the agent which is always running, but running slowly,""" start="00:11:49.641" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""will incrementally just do the stuff it finds in that list.""" start="00:11:53.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Populating that list probably gets into stuff""" start="00:11:58.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""like your Beliefs, Desires, Intents framework""" start="00:12:00.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and those kind of well-known and well-studied algorithms.""" start="00:12:03.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""That's not the point here.""" start="00:12:06.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I just want to have a list in Emacs that my ECL...""" start="00:12:07.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I'm just going to run a loop in ECL,""" start="00:12:14.260" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and the ECL is going to keep sending""" start="00:12:16.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""anything it finds in that Emacs Lisp list""" start="00:12:18.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to the software agent. The agent is also in Emacs,""" start="00:12:22.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""so it would be able to populate its own list itself""" start="00:12:25.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""if it had an idea of evaluating desires and chances to improve""" start="00:12:28.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""whatever it wants to improve""" start="00:12:36.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and chances to avoid whatever it wants to avoid.""" start="00:12:37.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""We talked a little bit too much. Let's just start this.""" start="00:12:40.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Sorry that I'm manually setting up my screen.""" start="00:12:47.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then let's put CLisp over here.""" start="00:12:51.540" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Right, we could work with this, right?""" start="00:12:55.500" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""This loop isn't very important.""" start="00:12:58.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's just a Common Lisp loop. I copy my friend jmbr's style""" start="00:13:00.100" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""of using Lisp machine-style keyword arguments""" start="00:13:04.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""instead of symbols like cl-loop,""" start="00:13:08.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the compatibility thing in Emacs Lisp does.""" start="00:13:12.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I'd never initialized that. Well, let's do that.""" start="00:13:16.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Okay, now we have the list.""" start="00:13:28.140" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And just every 30, let's turn it down to every 20 seconds.""" start="00:13:30.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Hypothetically, it's going to put""" start="00:13:35.020" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""whatever it finds in there, into there.""" start="00:13:37.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And so, I think, yeah, and now... Great.""" start="00:13:40.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So here I'm just going to fill it with stuff.""" start="00:13:46.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And this is quite interesting, I think.""" start="00:13:50.100" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It just shows I can put a whole bunch of stuff into that list.""" start="00:13:54.840" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Ideally, the agent would populate it itself""" start="00:13:58.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""with a BDI algorithm or something.""" start="00:14:01.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""But if we just put some stuff in there,""" start="00:14:03.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""we'll see that it will all get sent""" start="00:14:04.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""basically using Eduardo's eepitch internal machinery, at least.""" start="00:14:07.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And hence, it meets my requirement""" start="00:14:14.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that it works exactly like I work.""" start="00:14:17.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then in eev, I just have to press M-e.""" start="00:14:20.780" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh, it works via Emacs server, and I didn't start that,""" start="00:14:25.860" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""so if we server-start, hopefully...""" start="00:14:31.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then, ideally, things will just begin happening""" start="00:14:39.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""in this slime-repl C/Lisp agent.""" start="00:14:42.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh, if this was still running.""" start="00:14:53.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Okay, well we got at least one,""" start="00:15:05.420" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but hypothetically lots of these will happen.""" start="00:15:07.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So, show agent, I guess,""" start="00:15:09.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""happened over here. I put a whole bunch of &quot;sleep-for&quot;s in,""" start="00:15:13.700" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""because I thought that going slowly""" start="00:15:17.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""would make it seem more human.""" start="00:15:19.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Like I saw in Eduardo's talk last year""" start="00:15:21.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which is where I learned about eev.""" start="00:15:24.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""The system is a little fragile.""" start="00:15:29.100" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Hypothetically, we have a whole bunch of agents.""" start="00:15:32.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I guess every time it gets sent,""" start="00:15:41.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""it checks that we're in the right agent.""" start="00:15:43.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And it's not actually just sending a string,""" start="00:15:45.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""it's sending a sequence of string actions over there.""" start="00:15:47.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And so we see Emacs Lisp hypothetically put,""" start="00:15:52.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I guess it put this &quot;foo bar baz!&quot; into an entity, message-1,""" start="00:15:57.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which should be of type message, I guess, conceivably.""" start="00:16:06.860" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I forget if I set that up earlier.""" start="00:16:11.900" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's in the appendix somewhere.""" start="00:16:13.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then it just called, it did a sequence of actions""" start="00:16:14.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which was really just one action of showing that.""" start="00:16:18.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then I called b64-encode on message1,""" start="00:16:21.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which I believe will have set message-1 encoded.""" start="00:16:26.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Can I check that manually while it's happening?""" start="00:16:30.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Disaster. Well that's what it should have been.""" start="00:16:37.243" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Well, I did mention it was a little bit fragile.""" start="00:16:51.500" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""What if we put... Can we kind of rescue this?""" start="00:16:54.941" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I don't want to try redoing this. It's slightly fragile.""" start="00:17:03.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""What it would do, we can see the actions are kind of getting there,""" start="00:17:07.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but somehow my message didn't end up getting encoded""" start="00:17:12.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""by that sequence of actions.""" start="00:17:16.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So this decode will have also made the decoded one be null.""" start="00:17:18.120" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Let's do it manually""" start="00:17:23.280" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""Let's just do it manually. Should have worked.""" start="00:17:23.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""b64-encode, which calls out to Emacs""" start="00:17:26.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to get everything actually done.""" start="00:17:30.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh, I got interrupted by the agent.""" start="00:17:37.300" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Well, if I do it manually, it worked.""" start="00:17:41.520" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Hypothetically, the queue thing should have worked. Great.""" start="00:17:43.321" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Well, you can see it's kind of working.""" start="00:17:53.520" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Could be more robust.""" start="00:17:56.841" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""The reason is that I think what I did is a bit fragile,""" start="00:17:57.441" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but the intent is that FIPA,""" start="00:18:03.641" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Foundation for Intelligent Physical Agents's""" start="00:18:07.108" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""SL standard has tools for reliability""" start="00:18:09.308" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""through repetition and checking outcomes and that kind of thing.""" start="00:18:15.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So I would use those. I'm not putting too much work""" start="00:18:19.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""into being ultra-reliable right now, but it kind of worked.""" start="00:18:22.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""We saw, I guess, at least Embeddable Common Lisp""" start="00:18:26.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""believed it used emacsclient externally, asynchronously,""" start="00:18:29.760" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to send these to Emacs within Emacs.""" start="00:18:35.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I put a whole bunch of sleeps into its thing""" start="00:18:38.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to make it look slow and human-like, kind of happened""" start="00:18:41.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""because Emacs' model is that it's kind of single-threaded.""" start="00:18:45.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Can I just... I bet if we run this again""" start="00:18:52.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It'll at least look like it's succeeding""" start="00:18:59.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""because I fixed the base64 encoding""" start="00:19:02.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and so forth in the background. I wonder if it will.""" start="00:19:05.040" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:19:11.400" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""In the meantime, let's wrap up this talk to some extent.""" start="00:19:11.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then I'm just kind of saying what I'm expecting to happen.""" start="00:19:15.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I took out next action.""" start="00:19:18.800" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Originally, I was keeping the list inside of the agent.""" start="00:19:20.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then I decided to keep the list inside Emacs""" start="00:19:25.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""because I have kind of first class Emacs is my IDE,""" start="00:19:27.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""so I have better access to what's going on in my IDE.""" start="00:19:31.680" video="mainVideo-commonlisp" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Intelligence""" start="00:19:37.608" video="mainVideo-commonlisp" id="subtitle"]]</div>[[!template text="""Then I wanted to talk about intelligence a little bit""" start="00:19:37.608" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""in whatever my remaining time is.""" start="00:19:39.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I just have these great bullet points""" start="00:19:41.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""of Nosredna yduJ and Eric Sandewall.""" start="00:19:43.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So Nosredna yduJ, when she was on the show quite a long time ago,""" start="00:19:45.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""she... I keep describing things as expert systems""" start="00:19:50.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and she wanted to know what I meant""" start="00:19:55.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""when I said expert systems,""" start="00:19:57.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and I gave her a Lisp software example""" start="00:19:58.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and she said she personally wrote""" start="00:20:00.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that software in the 80s that I was referring to""" start="00:20:02.619" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and she wanted to know how it was an expert system.""" start="00:20:06.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""What I mean when I say expert system""" start="00:20:08.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""is a system that works kind of like I do and eev's eepitch does.""" start="00:20:10.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's where we can really reason""" start="00:20:19.840" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""in a very human-relatable way""" start="00:20:22.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""about what the inputs to the program is.""" start="00:20:24.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And also a program should be exposed to other programs""" start="00:20:26.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""in terms of like a well-structured transfer of knowledge as inputs,""" start="00:20:31.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and it should have a well-structured""" start="00:20:36.560" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""transfer of knowledge kind of outputs.""" start="00:20:38.011" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I don't know why this b64-encode message wasn't working.""" start="00:20:41.940" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Then we kind of faked it into working.""" start="00:20:47.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""It's going to be embarrassing for me""" start="00:20:50.000" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""if anybody watches this. But yeah, so yduJ's thing...""" start="00:20:52.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And then I was going to also build""" start="00:20:58.740" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that into Eric Sandewall's one.""" start="00:20:59.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So this is my vision of expert systems""" start="00:21:02.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""as kind of maybe this is an important""" start="00:21:05.640" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""general style loosely associated with Lisp.""" start="00:21:07.780" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Same as the Lisp editor Emacs.""" start="00:21:11.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So Eric Sandewall's description of intelligence""" start="00:21:14.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""was that his grandchildren were intelligent.""" start="00:21:17.666" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""So if we had software agents that were intelligent,""" start="00:21:21.160" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""this would be true if and maybe only if they were similar""" start="00:21:26.440" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""to his grandchildren""" start="00:21:32.440" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""who were a good reference for intelligence.""" start="00:21:33.720" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And grandchildren live for a really long time.""" start="00:21:36.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""They kind of learn gradually.""" start="00:21:39.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""They don't run on GPUs for a few minutes""" start="00:21:42.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and then get thrown out forever, something like that.""" start="00:21:46.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And so this is the kind of vision of, I guess,""" start="00:21:51.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the Leonardo system software individual stuff.""" start="00:21:54.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""You can see we kind of faked it into...""" start="00:21:57.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""at least the show get message one decoded bits were working.""" start="00:22:03.947" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I'm not sure what was happening""" start="00:22:06.321" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""with the Elisp ones that worked interactively,""" start="00:22:07.301" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but then they didn't work in my loopy thing.""" start="00:22:12.675" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Oh yeah, and then so I mentioned""" start="00:22:18.608" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""thank you to Sacha at the start of this talk.""" start="00:22:21.308" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And so Eric Sandewall's emphasis""" start="00:22:24.641" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that you'd really like intelligent software agents,""" start="00:22:26.975" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Leonardo system agents, to be like your grandchildren.""" start="00:22:31.341" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And I was talking to somebody, maybe to Ramin Honary""" start="00:22:34.175" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""who's doing the schemacs talk this year""" start="00:22:40.660" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""about Sacha's writing.""" start="00:22:44.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""A lot of Sacha's writing is about""" start="00:22:46.875" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""her experiences of life and technology,""" start="00:22:48.841" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and especially raising A\*""" start="00:22:51.775" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and her observations of her progeny A\*'s""" start="00:22:54.375" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""experiences of life and technology,""" start="00:22:59.741" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I would say as well as being""" start="00:23:05.320" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the Emacs News and Emacs conf doer that she is.""" start="00:23:07.875" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Yeah, and so I think a lot of what Sacha is seen doing""" start="00:23:18.040" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and concerned with are specifically what Eric Sandewall""" start="00:23:22.741" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""identifies as the study of intelligence as such,""" start="00:23:25.841" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""as should apply to computing as well. That was my thought""" start="00:23:31.208" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""on Sacha, Eric Sandewall, intelligence, and yduJ.""" start="00:23:36.480" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I have this note from pizzapal...""" start="00:23:42.980" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I didn't realize that Microsoft had announced""" start="00:23:44.241" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that 2025 was going to be the year of the software agent.""" start="00:23:46.275" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I only found this out in hindsight""" start="00:23:49.680" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""when I saw people crowing on the Mastodon""" start="00:23:51.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""about how Microsoft had basically declared""" start="00:23:54.200" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""that their Year of the Agent marketing campaign""" start="00:23:58.080" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""was a failure""" start="00:24:00.780" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""where basically people didn't like the same old web services""" start="00:24:04.460" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but now while you're accessing,""" start="00:24:09.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""while you're formally kind of accessing a web service,""" start="00:24:11.360" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the kind of web service that used to be called""" start="00:24:15.240" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""serverless web services, this kind of thing,""" start="00:24:16.960" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""but you're just being gibbered at by Microsoft Copilot""" start="00:24:19.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""while you're trying to use regular services.""" start="00:24:23.880" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And people turned out not to like this.""" start="00:24:27.120" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I think that, as we can see in this agent,""" start="00:24:29.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""the agent really needs to be running on its own clock""" start="00:24:32.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""and independently of you.""" start="00:24:36.375" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Like if you imagine your body is getting""" start="00:24:37.908" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""novel, slightly speculative instructions from your brain""" start="00:24:42.280" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""constantly throughout your entire waking day, quite slowly,""" start="00:24:46.075" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""this is what an agent should be like.""" start="00:24:50.681" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""And it should be... Sandewall wrote about this.""" start="00:24:54.975" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Basically, computer programs""" start="00:24:59.541" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""aren't going to want to use human natural language with each other.""" start="00:25:01.541" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""There's nothing desirable about that,""" start="00:25:04.841" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""so you wouldn't have two hypothetical Microsoft agents,""" start="00:25:06.675" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""which are just regular web services with""" start="00:25:10.675" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""a GPT model gibbering at you""" start="00:25:13.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""while you're trying to use the web service.""" start="00:25:16.341" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I think we can see...""" start="00:25:19.840" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Microsoft did the wrong thing with the word agent,""" start="00:25:22.540" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""allowing that agent is an overloaded term like static.""" start="00:25:26.741" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""I'm going to stop this. I'm not going to try and fix this.""" start="00:25:30.708" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Sorry, everybody. Thank you. Talk to you on the Mastodon.""" start="00:25:34.257" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""Hopefully, see you on the show.""" start="00:25:36.314" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""See you at your conference talks.""" start="00:25:37.920" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""My blog has writing and examples of this with multi-agents,""" start="00:25:40.400" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""more C and C++ stuff, Lisp things.""" start="00:25:45.600" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""You're welcome to come on my show to be interviewed,""" start="00:25:50.820" video="mainVideo-commonlisp" id="subtitle"]]
+[[!template text="""however formally we do that. See everybody next time.""" start="00:25:53.440" video="mainVideo-commonlisp" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+<div class="transcript transcript-qanda"><a name="commonlisp-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""Recording started.""" start="00:00:00.000" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Great. All right, you are live in Common Lisp on dev.""" start="00:00:04.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""This is Corwin back and I've got screwlisp with me,""" start="00:00:07.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""the host of the Lispy Gopher... Climate, I like to say.""" start="00:00:14.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""It used to be show.""" start="00:00:18.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""The Lispy Gopher show or the Lispy Gopher Climate.""" start="00:00:20.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Thank you so much for joining us. Minutes.""" start="00:00:24.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Yeah, we're just, we've got already""" start="00:00:31.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""a whole pad full of questions""" start="00:00:33.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and we have a unique opportunity if you,""" start="00:00:35.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""if you check out the etherpad,""" start="00:00:38.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""you'll see some instructions there to join on Lambda Moo,""" start="00:00:39.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which screwless,""" start="00:00:42.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""but I'm hoping you will talk to us a little bit about that""" start="00:00:43.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""as well as your, your very cool project.""" start="00:00:46.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Oh yeah, so I main on Lambda, as Corwin is saying.""" start="00:00:48.880" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And Corwin was pretending not to know the name of the show,""" start="00:00:52.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""but he has in fact appeared on an episode of it""" start="00:00:55.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""in January this year, I think.""" start="00:00:59.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So he was just pretending there. I'm screwless of this.""" start="00:01:00.880" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""What's happening?""" start="00:01:04.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""10 minutes or less before we started going live here,""" start="00:01:06.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""they were like, remember how you said you fixed that bug?""" start="00:01:13.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And then I had to quickly recapitulate my whole talk.""" start="00:01:16.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I introduced some new bugs while that was happening.""" start="00:01:21.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""But let's go through some of these questions.""" start="00:01:23.720" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""We're all hanging out in LambdaMoo.""" start="00:01:26.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So if you mx telnet over to lambda.moo.mud.org port 8888.""" start="00:01:29.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""This is where we're talking at the moment""" start="00:01:37.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""with people like Ed Swarthout, DM, and yduJ,""" start="00:01:40.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""who I gossiped about in the show,""" start="00:01:45.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and Sasha, and people were there a little bit as well.""" start="00:01:47.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'm just going to read some of the questions""" start="00:01:50.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""that GGXX in Lambdomoo has been relaying to me there,""" start="00:01:53.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""though I hear that there are a whole bunch of them now.""" start="00:01:59.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Someone asks on the Etherpad,""" start="00:02:08.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""what do you mean when I say the agent is running slowly?""" start="00:02:09.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Yeah, so if you saw in the talk,""" start="00:02:13.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I was having the agent only attempt""" start="00:02:17.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to act every 20 seconds.""" start="00:02:19.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""This is what I mean by the agent is acting slowly.""" start="00:02:21.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So this is quite different""" start="00:02:25.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to what people might expect within AI""" start="00:02:26.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""if people are talking about like the graphics card ones""" start="00:02:28.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""where you're trying crunch as fast as you can""" start="00:02:30.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""for as few seconds as you can, and then you stop.""" start="00:02:33.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""In contrast, my agent is just trying to do""" start="00:02:36.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""a simple action every 20 seconds.""" start="00:02:39.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""But if you keep going continuously""" start="00:02:42.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""at a simple action every 20 seconds""" start="00:02:45.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""without sleeping for days,""" start="00:02:47.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""it still adds up to a lot.""" start="00:02:49.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So that was the significance of it running slowly.""" start="00:02:51.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""What else are people saying? TGXX to screwtape.""" start="00:02:57.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Someone asked on the Etherpad,""" start="00:03:00.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""do you think that it would be too hard""" start="00:03:02.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to add a second way""" start="00:03:04.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to send commands from Common Lisps to Emacs?""" start="00:03:06.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""No, I put three of them together""" start="00:03:09.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and I didn't talk about it""" start="00:03:12.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""because this is a kind of affected choice.""" start="00:03:14.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Right now you're using Emacs client for that.""" start="00:03:17.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""That is the simplest way to implement.""" start="00:03:20.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""How about using the slime protocol?""" start="00:03:22.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Elsewhere, I am just using the SLIME protocol.""" start="00:03:24.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So, in everyone that's SLIME-connected.""" start="00:03:28.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So, earlier on, you saw somebody""" start="00:03:31.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""running a SWANK server in Python.""" start="00:03:33.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Normally, you run a SWANK server in Common Lisp.""" start="00:03:35.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And a SWANK server is what Emacs SLIME,""" start="00:03:38.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Superior Lisp Interaction Mode for Emacs, connects to.""" start="00:03:41.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And then Swank comes with Swank Eval and Emacs.""" start="00:03:45.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So after you've been slime connected,""" start="00:03:49.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""you can trivially send Emacs Lisp forms to Emacs""" start="00:03:50.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""using Swank Eval and Emacs.""" start="00:03:55.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""The reason that I chose to use""" start="00:03:57.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Emacs server and Emacs client""" start="00:04:00.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""was that I was letting the Leonardo agent""" start="00:04:05.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""talk to Emacs using Swank, Eval, and Emacs.""" start="00:04:14.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I wanted my ECL image to be using""" start="00:04:18.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""a different notion of a server.""" start="00:04:21.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So the ECL image, just because""" start="00:04:23.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I chose to do it like this,""" start="00:04:27.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""is using Emacs client and Emacs server going via,""" start="00:04:28.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I guess it's executing a program""" start="00:04:33.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""rather than using a shell.""" start="00:04:35.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And Yeah, I was letting somebody else""" start="00:04:36.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""use Slime eval in Emacs.""" start="00:04:40.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""It would have been simpler""" start="00:04:42.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""if everybody just used Slime eval in Emacs.""" start="00:04:45.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I thought I was getting something""" start="00:04:48.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""out of adding Emacs server into the mix.""" start="00:04:50.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""What's somebody saying?""" start="00:04:56.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Idaj is weirded out by doing get foo bar""" start="00:04:57.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""instead of get foo quote bar.""" start="00:05:00.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Yeah, that was Sandewall's choice.""" start="00:05:02.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""He was trying to pitch Lisp""" start="00:05:04.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to logic notation people,""" start="00:05:06.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""so he lets people put commas in""" start="00:05:09.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and then ignores them in certain expressions,""" start="00:05:12.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and he doesn't have these Lisp-style quotes.""" start="00:05:15.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Idaj is obviously from like Schlumberger""" start="00:05:18.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and wherever else she was at in""" start="00:05:22.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""in the kind of list of traditions.""" start="00:05:24.880" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Full of Spain is saying good observation.""" start="00:05:28.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Yidaj is shocked that she's being mentioned.""" start="00:05:30.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Interestingly Nosredna yduJ capitalizes Nosredna at the front,""" start="00:05:33.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""but she capitalizes yduJ at the back, just for clarity.""" start="00:05:40.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""You should read her Stanford page or her recipe site""" start="00:05:45.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""or anything if you're not clear on who yduJ is.""" start="00:05:49.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""It's actually you're looking for the word eclipsed.""" start="00:05:58.000" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I think she eclipsed a dodge,""" start="00:06:00.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I think is the English phrase that you're looking for.""" start="00:06:03.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""He does just saying she would not.""" start="00:06:06.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""She's no matter what I say""" start="00:06:08.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""she's not going to hug my software agent""" start="00:06:10.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""like she would hug a grandchild eyes me warily.""" start="00:06:13.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And Sasha is not going to.""" start="00:06:20.720" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Totally not training a general intelligence""" start="00:06:22.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""who requires a lot of data""" start="00:06:24.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and also cuddles. Okay, so everybody who has children""" start="00:06:26.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""is disagreeing with me quoting Sandewall,""" start="00:06:28.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""who did have children and grandchildren,""" start="00:06:31.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""saying that he wanted machine intelligences""" start="00:06:33.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to be like his grandchild.""" start="00:06:36.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""GGXX is saying somebody on Etherpad""" start="00:06:37.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""is asking what the Leonardo system is.""" start="00:06:40.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Sandewall is a LISP scientist""" start="00:06:43.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""from the 60s, 70s, 80s, 90s, 90s, 10s.""" start="00:06:46.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""with things like bronze statues of him in Sweden.""" start="00:06:51.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""People outside of the Swedish-speaking sphere of science""" start="00:06:55.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""are less familiar with him.""" start="00:06:59.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I guess he famously taught Robert Strand""" start="00:07:01.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""how to program in LISP, if that places him for you.""" start="00:07:04.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""What else did he do?""" start="00:07:08.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Yeah, so he was on a kind of long trajectory of AI,""" start="00:07:10.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which would now be called good old-fashioned AI.""" start="00:07:15.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And he was coming from the situation calculus,""" start="00:07:18.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""then activity calculus kind of direction,""" start="00:07:22.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which are extended first order logics""" start="00:07:26.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""for reasoning about change over time.""" start="00:07:28.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And his last program he contributed to the world was this.""" start="00:07:31.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""From 2005 to 2014, he worked on""" start="00:07:35.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""this Leonardo system for his master's program.""" start="00:07:39.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""He was teaching at that time""" start="00:07:43.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""at the University of Linköping in Sweden.""" start="00:07:45.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And... Then he just kind of gradually faded from view""" start="00:07:48.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""while he wrote his unpublished books""" start="00:07:53.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""on reasoning and change, I guess, between 2010 and 2014.""" start="00:07:55.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And then I just kind of noticed this eventually.""" start="00:08:01.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I brought that software back. And that's what this is.""" start="00:08:03.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And that's why it kind of weirdly exists.""" start="00:08:07.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Welcome to Khaki Guest. Magenta Guest is gone.""" start="00:08:10.000" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Pink Guest is gone.""" start="00:08:15.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Blue Guest has arrived. Great. Somebody order six.""" start="00:08:16.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Everybody orders sake from Emily.""" start="00:08:23.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""We're hanging out in Jay Lamott's sushi bar in Lambda,""" start="00:08:26.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which is on the model railway""" start="00:08:29.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""on the table in the second guest bedroom in Lambda House""" start="00:08:31.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""where we're all hanging out.""" start="00:08:35.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Oh, I think GGXX is ordering people up things.""" start="00:08:36.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""You know, just teach people about this.""" start="00:08:43.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""All right, I'm going to try looking""" start="00:08:46.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""at the etherpad manually. Sorry, I can read you.""" start="00:08:52.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So the next question you have,""" start="00:08:55.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""somebody says, I found Eduardo's blog.""" start="00:08:57.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""OK, you just got through that.""" start="00:09:00.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And then we were also, a question you answered""" start="00:09:03.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""is the other one that I see here, just about Lambda Moo.""" start="00:09:06.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I think you started to answer in the pad.""" start="00:09:10.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""But if you want to kind of read that out.""" start="00:09:14.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I definitely haven't written anything in the pad.""" start="00:09:16.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'm going to just talk to Khaki Guest in Lambda.""" start="00:09:19.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Sure, so why don't you do a little bit""" start="00:09:23.720" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and just read this question.""" start="00:09:25.880" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""The question was, what is LambdaMOO and how do we use it?""" start="00:09:27.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""LambdaMOO is a module introduction,""" start="00:09:31.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and you can tell that to it.""" start="00:09:33.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""There's instructions in the pad.""" start="00:09:35.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'll go ahead and drop that in the gen channel""" start="00:09:36.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""or in the dev channel chat right now.""" start="00:09:40.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I see it is already in there.""" start="00:09:42.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""But down at the bottom""" start="00:09:46.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""of the discussion links feedback area,""" start="00:09:49.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""you'll see a set of detailed instructions""" start="00:09:53.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""that ScrewList has provided us to get in there.""" start="00:09:55.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I think that was actually GGXX""" start="00:09:58.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""who might have written that for us.""" start="00:10:01.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Several changes evolved in the last 10 minutes""" start="00:10:03.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""before we went live here.""" start="00:10:08.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""But yeah, so LambdaMoo is""" start="00:10:09.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""the world's longest-running virtual reality.""" start="00:10:12.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I guess it started in the end of October in 1990""" start="00:10:14.880" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and has run continuously to today.""" start="00:10:19.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""You can get there, ideally, with a MUD client.""" start="00:10:21.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Technically, it's a MUD, comma, object-oriented.""" start="00:10:24.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""This is just where I hang out some degree of the week.""" start="00:10:27.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""yduJ is the wizard yduJ, or sorry,""" start="00:10:30.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""yduJ is also the wizard Nosredna of Lambdomoo, for example.""" start="00:10:36.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""It kind of fits into quite less history.""" start="00:10:40.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I guess Pavel Curtis would have started in 1990""" start="00:10:44.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""for Xerox PARC, originally. Just to go to what Khaki Guest""" start="00:10:47.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""has been continuing to talk about.""" start="00:10:52.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Welcome to Brown, Guest, as well, I guess.""" start="00:10:54.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Aki Guest says, to Screwtape,""" start="00:10:57.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""it seems like you're trying to build""" start="00:11:03.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""a more restrictive Turing test""" start="00:11:04.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""using the input output logs of an Emacs conversation.""" start="00:11:07.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Is that accurate?""" start="00:11:11.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Can you explain this idea of if it is intelligent,""" start="00:11:12.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'd like it to be like me?""" start="00:11:15.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Otherwise, I don't know what intelligence is.""" start="00:11:17.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Doesn't that seem a little egocentric?""" start="00:11:20.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Is that a joke or a genuine definition of intelligence?""" start="00:11:21.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Why do you think the link between""" start="00:11:25.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""input-output of Emacs human input-output""" start="00:11:27.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""is stronger than other forms of Turing tests?""" start="00:11:30.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So I'm going to misread Turing tests""" start="00:11:33.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""for a moment as Turing-complete.""" start="00:11:36.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And Sandewall's system is very specifically""" start="00:11:37.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Our first-order logic, if we don't extend it,""" start="00:11:40.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""is not Turing-complete, for starters.""" start="00:11:45.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And things like situation calculus,""" start="00:11:49.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""McCarthy's situation calculus,""" start="00:11:51.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which I guess is prior to""" start="00:11:53.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Sandewall's Leonardo's calculus,""" start="00:11:55.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""are extended first-order logics""" start="00:11:58.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""for reasoning about change.""" start="00:12:02.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And so they're slightly""" start="00:12:03.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""more restricted than conventional,""" start="00:12:05.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""than general-purpose computer programs.""" start="00:12:07.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And then what you're saying is, if it's intelligent,""" start="00:12:10.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'd expect it to be like me.""" start="00:12:14.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'm really just paraphrasing what Sandewall says about,""" start="00:12:16.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""well, he thinks his grandchildren are intelligent.""" start="00:12:19.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So if a computer is intelligent,""" start="00:12:23.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""he thinks the computer will have to be""" start="00:12:24.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""similar to his grandchildren.""" start="00:12:26.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""This is in contrast to people""" start="00:12:28.040" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""who are using the terms AI""" start="00:12:32.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to mean something a graphics card does""" start="00:12:33.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""with extremely specialized bulk matrix multiplication""" start="00:12:37.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""for a very short period of time""" start="00:12:41.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""on absolutely gigantic electrical""" start="00:12:43.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and kind of memory and computing resources,""" start="00:12:47.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which doesn't look at all like what""" start="00:12:50.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Sandewall's grandchildren were doing.""" start="00:12:51.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And this is why I'm kind of saying,""" start="00:12:55.000" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""well, if I have an agent,""" start="00:12:56.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And my agent is quite simple.""" start="00:12:57.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""It uses Emacs server and Emacs client""" start="00:13:00.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""to send lines of basically extended""" start="00:13:04.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""first-order logic to the agent,""" start="00:13:07.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and the agent then takes a kind of""" start="00:13:09.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""first-order logic-y action.""" start="00:13:12.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I was making the point""" start="00:13:15.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""that this looks more like me computing""" start="00:13:21.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""using of REPL-driven development like EEV,""" start="00:13:23.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""where in EEV I have basically a log""" start="00:13:27.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""of something I've previously done,""" start="00:13:30.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and I can tap F8 and execute""" start="00:13:32.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""line after line after line.""" start="00:13:34.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I think if I see an agent doing that,""" start="00:13:36.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I can clearly understand""" start="00:13:38.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and relate to what the agent is doing.""" start="00:13:40.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And so I'm not classifying""" start="00:13:43.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Like, I never do gigabytes and gigabytes""" start="00:13:45.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and gigabytes of matrix multiplications,""" start="00:13:49.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""so I can't relate to this as an idea of intelligence.""" start="00:13:52.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Sorry. Welcome to GreenGuest teleporting in.""" start="00:13:54.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""FullSpain is saying, no one truly knows what intelligence is.""" start="00:13:57.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""All right. I kind of wished that this was working,""" start="00:14:02.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""because just before we went live, they said,""" start="00:14:10.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""hey, just have your example working quickly.""" start="00:14:13.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Then I downloaded my example from my blog,""" start="00:14:15.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and I'd double escaped some characters""" start="00:14:19.000" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""so that the escaped characters would show up in my blog.""" start="00:14:22.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""And I caused a lot of rampant chaos.""" start="00:14:26.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""If anyone else has a question.""" start="00:14:29.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Guest has said, but. So. Great.""" start="00:14:32.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I guess I could go back and try it.""" start="00:14:40.760" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I probably should have jumped in a couple of minutes ago""" start="00:14:47.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and just said the live stream did cut over,""" start="00:14:50.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""but we're continuing to record this""" start="00:14:53.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and the whole session will be published""" start="00:14:54.920" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""along with the video on the website.""" start="00:14:57.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Oh, well. Sorry about that. I tried that.""" start="00:14:58.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I just lost a couple of minutes there""" start="00:15:04.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and failed to give you the smooth morning.""" start="00:15:06.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Oh, no, no. That's fine. I was just kind of rambling.""" start="00:15:08.880" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Listen. Don't download a web page""" start="00:15:14.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and try and convert it to an org file on the fly""" start="00:15:16.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and just before you go live somewhere""" start="00:15:19.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""is the kind of moral here.""" start="00:15:21.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""You know, just saying that's pretty graphics, but it's long.""" start="00:15:23.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""She's dropping. See you later. Yeah.""" start="00:15:27.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Let's, let's, let's all get out of here.""" start="00:15:29.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Basically. I'm going to go see""" start="00:15:31.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""if I can look at this ether pad one last time""" start="00:15:32.400" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and see if there are any questions""" start="00:15:36.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""just to not leave anyone else.""" start="00:15:37.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Anyone out much to their chagrin possibly.""" start="00:15:39.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Um, how to connect to LambdaMu, seems great.""" start="00:15:43.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Oh, interesting guides, somebody wrote that.""" start="00:15:47.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""What do you mean by slowly? Yeah, so I'm saying taking""" start="00:15:52.160" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""a simple action every 20 seconds,""" start="00:15:55.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""this still adds up to a lot over time.""" start="00:15:57.280" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Question, do you think that it would be,""" start="00:15:59.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""yeah, well, if you've used Slime,""" start="00:16:01.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and hence you're using Swank,""" start="00:16:04.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""you can just Swank, Eval,""" start="00:16:05.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and Emacs would be the more trivial way.""" start="00:16:07.240" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I felt like I was getting something bonus""" start="00:16:08.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""by using, um, Emacs server.""" start="00:16:10.720" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Somebody has a link to Eduardo's blog,""" start="00:16:13.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which I think has been misspelled.""" start="00:16:17.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""It should be angkwu with no dot there,""" start="00:16:19.840" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""dot net, sharp sign EEV.""" start="00:16:23.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So, Eduardo is the author of EEV mode.""" start="00:16:27.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I found Eduardo's thing.""" start="00:16:31.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Oh, this was the question, what is the Leonardo system,""" start="00:16:33.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""which I just answered.""" start="00:16:36.200" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""What is LambdaMOO? How do you use it?""" start="00:16:38.480" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""It's a mud, comma, object-oriented.""" start="00:16:42.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""So it's a multi-user dungeon kind of classical video game,""" start="00:16:45.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""still popular, but with extended object-oriented facilities.""" start="00:16:49.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Companies like Harlequin, which yduJ""" start="00:16:52.800" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and Ken Pitman, for example, were at, I think, in the 90s.""" start="00:16:57.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Instead of modernly, you'd have Slack web apps or something.""" start="00:17:00.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""People used to have these MOOs and things.""" start="00:17:05.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Okay, the music that's replaced me is evidently quite nice.""" start="00:17:08.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Yes, get the hints. Thanks for being here.""" start="00:17:15.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Well, let's continue this diatribe""" start="00:17:22.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""possibly on the Mastodon or something like that.""" start="00:17:29.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""We'll do some kind of...""" start="00:17:33.640" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Let me thank you one more time for preparing this talk""" start="00:17:36.000" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and for all that you do for the Free Software community""" start="00:17:40.520" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and especially for Emacs. particularly appreciate you.""" start="00:17:44.360" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Thank you for all you do for the Free Software community""" start="00:17:47.880" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and particularly Emacs, Corwin and Bruce.""" start="00:17:50.440" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'm still waiting for a working demo of Dungeon Mode.""" start="00:17:53.320" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""My joke that I was setting up and never had a chance for""" start="00:17:56.080" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""was that I was going to say""" start="00:17:58.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I wanted my agent to be using Dungeon Mode in Emacs.""" start="00:17:59.960" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""How's that? Okay, well, we'll work on that.""" start="00:18:03.600" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""That could be a project for the two of us in our copious free time.""" start="00:18:06.000" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""Definitely. Yeah. Okay. I'll let you go.""" start="00:18:10.120" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""I'm gonna abandon this stream.""" start="00:18:13.560" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""All right. I'll end out the recording""" start="00:18:14.680" video="qanda-commonlisp" id="subtitle"]]
+[[!template text="""and thanks to all who participated. Okay. See you later.""" start="00:18:17.040" video="qanda-commonlisp" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20commonlisp%3A%20Common%20Lisp%20images%20communicating%20like-a-human%20through%20shared%20Emacs%20slime%20and%20eev)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/commonlisp-before.md b/2025/info/commonlisp-before.md
new file mode 100644
index 00000000..099e4f98
--- /dev/null
+++ b/2025/info/commonlisp-before.md
@@ -0,0 +1,19 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 26-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-commonlisp>
+Etherpad: <https://pad.emacsconf.org/2025-commonlisp>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-commonlisp"><source src="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--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:56 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-commonlisp">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--debugged.png">Download --debugged.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.org">Download --main.org</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--main.webm">Download --main.webm (63MB)</a></li><li><a href="https://youtu.be/hy5i6Qb6fYE">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-commonlisp"><source src="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 18:24 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-commonlisp">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.m4v">Download --answers.m4v (33MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-commonlisp--common-lisp-images-communicating-likeahuman-through-shared-emacs-slime-and-eev--screwlisp--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/2025/info/commonlisp-nav.md b/2025/info/commonlisp-nav.md
new file mode 100644
index 00000000..b8775dd3
--- /dev/null
+++ b/2025/info/commonlisp-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/private-ai">Emacs and private AI: a great match</a>
+Next by track: <a href="/2025/talks/graphics">Modern Emacs/Elisp hardware/software accelerated graphics</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/completion-after.md b/2025/info/completion-after.md
new file mode 100644
index 00000000..e70f4409
--- /dev/null
+++ b/2025/info/completion-after.md
@@ -0,0 +1,485 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="completion-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""Nice to have you here on this talk.""" start="00:00:00.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""This is my second talk this year.""" start="00:00:02.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""First one was on things that I've done to Org Mode.""" start="00:00:04.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Just as a side note, this presentation""" start="00:00:09.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that I'm going to share with you""" start="00:00:13.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""about my work on Corfu and Jasnipit.""" start="00:00:16.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I've prepared that on Org Mode""" start="00:00:19.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and exported that with a work I've been doing""" start="00:00:21.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to the latest exporter.""" start="00:00:25.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Anyhow, what is my talk going to be about?""" start="00:00:26.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""It's going to be about Corfu and Yasnippet,""" start="00:00:31.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which I thought would be difficult to integrate,""" start="00:00:34.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and it was much easier than I thought.""" start="00:00:36.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So just a short outline, my motivation,""" start="00:00:42.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""step-by-step of the things that I've been investigating,""" start="00:00:46.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and some takeaways. So my motivation, yeah, snippet is old.""" start="00:00:49.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I've tried another, I've tried Temple""" start="00:00:55.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and other template management packages,""" start="00:00:59.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but it was really not my cup of tea. So mainly why?""" start="00:01:02.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Mainly because I have a nice base of VR snippets""" start="00:01:08.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have generated for my needs.""" start="00:01:10.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So it's not that I've been importing snippets""" start="00:01:14.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""from packages which are out there.""" start="00:01:17.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""No, they are my snippets. I'm used to them.""" start="00:01:20.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And of course, migration counts as a cost.""" start="00:01:23.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I've been using Company as my completion point function GUI for years,""" start="00:01:26.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but with the time coming in features and so on it""" start="00:01:32.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""was it's was not as easy to set up as I wanted for my needs""" start="00:01:38.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so I had been working I've been playing with Eaglet already some time for a language server protocol""" start="00:01:44.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I had read about how easy it was to integrate with Corfu""" start="00:01:53.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which was really nice and I had given it a try,""" start="00:01:57.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but I'm using both graphical user interface mode in Emacs""" start="00:02:02.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and text mode,""" start="00:02:06.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and for text mode you need a corporate terminal,""" start="00:02:07.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which was yet another package that I don't download.""" start="00:02:10.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Well, and I didn't really find a quick way""" start="00:02:16.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to get rid of company to get just snippet.""" start="00:02:21.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So at the end, when, at the beginning,""" start="00:02:24.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""when I was using Corfu and Eglot, I also needed to load a company""" start="00:02:26.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to have a snippet support,""" start="00:02:33.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which was really like sort of weird""" start="00:02:35.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because I wanted to get rid of, of your snippet.""" start="00:02:37.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Anyhow, while I try now, I'm following the mailing list,""" start="00:02:40.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""the development mailing list,""" start="00:02:47.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I got interested when I heard something about""" start="00:02:48.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""TTI charge frames being announced for master.""" start="00:02:51.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""That would mean less packages to download""" start="00:02:57.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because I thought I could get rid of Corfu,""" start="00:02:59.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I wanted to try if I could get rid of Corfu terminal""" start="00:03:04.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and run Corfu without that.""" start="00:03:07.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So, there were some hints there in that mailing list""" start="00:03:11.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that made it interesting for me.""" start="00:03:18.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And at the end, I'm also like a why not trying man,""" start="00:03:21.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so I said let's give it a try.""" start="00:03:26.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""My requirements, I'm working always on a new Emacs,""" start="00:03:29.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""a decently new Emacs, normally from Master Vanilla.""" start="00:03:33.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""completely Vanilla and I don't have any extras like Doom or things like that.""" start="00:03:36.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I'm only Vanilla. And one of the things""" start="00:03:42.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that I don't want is that on this Vanilla recent Emacs,""" start="00:03:45.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't want a Kung Fu Terminal. I need your snippet.""" start="00:03:50.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm basically an old man.""" start="00:03:55.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Old dog does new tricks and snippets must,""" start="00:03:57.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""in my way of working, must be easy and quick to configure""" start="00:04:02.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and Tempo or others that I've seen are not.""" start="00:04:06.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't want any reminiscence of a company in my setup.""" start="00:04:10.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And of course, don't forget that I've embraced""" start="00:04:13.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""the language protocol implementations and basically Eglot.""" start="00:04:18.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""My main focus now is Python and LaTeX,""" start="00:04:24.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I have PyLSB and TechLab.""" start="00:04:28.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And I don't want to have to stop using them.""" start="00:04:31.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So basic setup for Corfu and Eglot.""" start="00:04:37.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""You can find it everywhere you look for it.""" start="00:04:40.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""It's really easy.""" start="00:04:43.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And actually, I also do something somehow naughty,""" start="00:04:46.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is to set this variable,""" start="00:04:51.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""the Corfu auto variable to true,""" start="00:04:53.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""although I know it's not recommended, blah, blah, blah.""" start="00:04:55.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""But I use that because I'm a bit lazy in that.""" start="00:04:58.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So next step was looking at completion at point functions.""" start="00:05:02.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So the information there if you go through the scatter""" start="00:05:07.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and sometimes a bit cryptic.""" start="00:05:10.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""At the end I came up with something like the thing""" start="00:05:14.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that you see there on the screen.""" start="00:05:16.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So it's a function for just completion point""" start="00:05:18.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so I need my list of keywords""" start="00:05:21.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so that I'm going to be talking later""" start="00:05:24.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I have my bounds which is normally a word""" start="00:05:30.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and from that I get the start and the end""" start="00:05:34.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""of the of the thing that I want to""" start="00:05:37.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that I want to be my seed for looking and bringing up Corfu""" start="00:05:38.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and of course I need some completion properties here""" start="00:05:47.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""This looked like this is what you need to do,""" start="00:05:53.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but I had to dig quite deep""" start="00:05:55.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to create a JavaScript keyword test""" start="00:05:57.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and to understand the completion props.""" start="00:06:01.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And as an update of what I've been doing in the last weeks,""" start="00:06:04.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I've created a bound of things""" start="00:06:11.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that point for me with a different thing""" start="00:06:13.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that doesn't skip over non-blank characters,""" start="00:06:18.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that only skips over non-blank characters.""" start="00:06:22.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Why? Because Word was confusingly tech,""" start="00:06:25.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because the backslash,""" start="00:06:29.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""like in the example for the teletype text,""" start="00:06:30.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""was not taken into account by Word.""" start="00:06:35.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I had to create my own one,""" start="00:06:36.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which was a bunch of thing at point,""" start="00:06:39.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then my thing is non-blanks.""" start="00:06:42.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Completion at point properties, what are they?""" start="00:06:44.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""They allow Emacs to know how to handle the information""" start="00:06:53.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""for a specific completion time.""" start="00:06:56.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So you normally will have an annotation,""" start="00:06:57.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which then can disappear if you use NerdIconScoreFull.""" start="00:07:02.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is what I'm doing currently,""" start="00:07:08.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but I keep it commented just in case I get tired of Corfu""" start="00:07:11.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I want to have my completion function.""" start="00:07:17.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Then the company kind is actually not something""" start="00:07:20.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that comes from the company package, but does not require.""" start="00:07:26.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And that's going to allow NerdEye Conscorfu to identify""" start="00:07:31.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and put the right icon there in the completion list,""" start="00:07:39.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""as you will see in a couple of minutes.""" start="00:07:44.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So it's a snippet key.""" start="00:07:47.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So basically what this is telling you""" start="00:07:50.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""is that this is a snippet keyword.""" start="00:07:52.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""These two lines, either line,""" start="00:07:54.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""tell you that this is a snippet keyword.""" start="00:07:56.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And that it should be added to the other completions""" start="00:08:00.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that you already have in your list.""" start="00:08:05.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Problems looking now next step""" start="00:08:08.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""once I had the completion props""" start="00:08:15.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which was relatively easy was to go""" start="00:08:19.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and get the keyword list right.""" start="00:08:21.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I've been looking at pre-existing solutions""" start="00:08:24.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""like for example how the menu""" start="00:08:27.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""is built in by your snippet and it looked a bit like Mission Impossible.""" start="00:08:29.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because the approach by all the things""" start="00:08:34.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that I have seen and I have examined""" start="00:08:40.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""is to get the keys and the names""" start="00:08:43.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then further process them.""" start="00:08:45.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""My take was, do I really need both?""" start="00:08:50.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""At the end, if I use my own snippets,""" start="00:08:55.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm going to be using something""" start="00:08:58.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I would call meaningful keys for them""" start="00:09:00.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""or at least meaningful for these keys are meaningful for me""" start="00:09:02.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I try not to repeat them""" start="00:09:06.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because it makes little sense to repeat a keyword.""" start="00:09:07.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So why not center everything around the keys only""" start="00:09:09.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and can that help simplify my code?""" start="00:09:13.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I started to dive into your snippet""" start="00:09:18.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I found a lot of useful semi-hidden functions there.""" start="00:09:23.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I discovered that getting the list""" start="00:09:27.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""the list of keys for a given mode was not that difficult.""" start="00:09:30.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And at the end what I started doing""" start="00:09:34.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""is get all the snipple tables used by a major mode""" start="00:09:40.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and get the lists of the keys that you have in each table.""" start="00:09:47.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Sometimes the list is empty""" start="00:09:52.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so it's going to return a nil and that you have to discard.""" start="00:09:55.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""When you're using structured snippets""" start="00:10:01.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""like snippets and submenus and so on""" start="00:10:06.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to get a structured menu,""" start="00:10:08.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""you also get some non-strings that you need to filter out""" start="00:10:12.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""in order to get a workable keyword list.""" start="00:10:15.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""At the end of the day, what I had was something like this.""" start="00:10:19.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have, for a mode, I went through all modes.""" start="00:10:24.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""through all modes associated to that and then I went""" start="00:10:30.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I got my results from all the tables that I had""" start="00:10:37.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""for a for a given time for a given table""" start="00:10:42.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so what you do is you get your the tables""" start="00:10:45.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that are associated to a mode because surprise surprise""" start="00:10:48.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Some modes have more than one table,""" start="00:10:53.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then what you do is you filter out all non strings""" start="00:10:55.959" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""from each of the keys list that you have for each table.""" start="00:11:00.918" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So as you see, it's a 1, 2, 3, 4, 5, 6, 7 liner,""" start="00:11:07.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which was not too much.""" start="00:11:12.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""By the way, if someone from Yasnippet is around,""" start="00:11:14.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I sent a pull request to include this""" start="00:11:20.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""as a public function in Yasnipit""" start="00:11:26.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because it might be nice to have it in a packet""" start="00:11:29.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""in order to do this kind of things.""" start="00:11:32.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So fine-tuning I just adding a yes completion""" start="00:11:33.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to the completion point functions was not enough""" start="00:11:41.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't really know""" start="00:11:44.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but exclusive node didn't seem to work how I wanted""" start="00:11:46.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so I needed to escape sorry yeah I was saying I was getting rid of packages""" start="00:11:51.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I had to add one package""" start="00:11:57.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""in order to get a function which is very very nice""" start="00:12:01.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and which is part of the cape function of the cape package""" start="00:12:04.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and that's cape cap super.""" start="00:12:08.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So at the end using that you define an alias""" start="00:12:12.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which for that where you use cape cap super""" start="00:12:16.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to have a list of what you want""" start="00:12:23.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so in this case for example for the demo""" start="00:12:25.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm going to make I'm using yes completion""" start="00:12:29.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then the elisp completion point function provided by Emacs.""" start="00:12:32.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I combine them using cape cap super""" start="00:12:37.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and with that I create a completion point""" start="00:12:44.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""a new completion point function which I call cape list mode""" start="00:12:47.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then I add this alias to the completion functions list""" start="00:12:53.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and with that it is enough snippet expansion""" start="00:12:58.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""if you want to have your snippets expanded automatically,""" start="00:13:05.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""you have to add an exit function to the, I'm sorry,""" start="00:13:14.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to the completion properties""" start="00:13:28.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""yet another functionality you have to add""" start="00:13:30.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and to avoid this automatic selection to be too eager""" start="00:13:34.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""you need to add this set corfu""" start="00:13:39.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""on exact match to nil because otherwise""" start="00:13:43.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""you will always get the snippet expanded""" start="00:13:48.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""even if you don't want it Basically why?""" start="00:13:51.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Basically because this would be suboptimal""" start="00:13:55.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because the key can appear as part of a variable name.""" start="00:13:57.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Another nice thing, I'm also creating my own themes.""" start="00:14:05.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm trying to have very sleek themes""" start="00:14:10.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that only cover the modes that I use""" start="00:14:13.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and for that I have my own theme creator fork""" start="00:14:16.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""from the original team creator.""" start="00:14:22.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""In my personal work that I'm running at home,""" start="00:14:26.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I only have the faces for the modes I use.""" start="00:14:31.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't want to overload the thing""" start="00:14:34.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""with too much different things.""" start="00:14:38.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Looking at this, I really didn't need, as you will see now,""" start="00:14:41.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't need to add anything to my themes""" start="00:14:46.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because the default faces for Corfu""" start="00:14:50.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""adapt quite well to most of the themes.""" start="00:14:53.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So if I go back to my checklist decently remax yes""" start="00:14:58.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""compiled the one you'll see""" start="00:15:02.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""for the for in the demo I'm doing is a master""" start="00:15:06.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""compiled the day before yesterday""" start="00:15:09.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so and I don't need Corfu terminal there.""" start="00:15:12.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I need your snippet,""" start="00:15:15.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and you're going to see that in a second""" start="00:15:16.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""with a couple of snippets that I can expand here.""" start="00:15:20.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't want any reminiscence of a company in my setup,""" start="00:15:24.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and there's none. Well, actually, company kind is there""" start="00:15:27.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""you see the company there""" start="00:15:32.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but it isn't if I buy companies strictly speaking""" start="00:15:33.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and for I don't want I need Eglot integration""" start="00:15:39.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which I will also be showing you. Takeaways from all this,""" start="00:15:44.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""if you accept the extra burden""" start="00:15:50.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""of Corfu terminal for Emacs 30 or earlier Emacs 30s,""" start="00:15:55.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""it's not too difficult to get this set up running.""" start="00:16:02.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Corfu was easier to integrate and configure than Company,""" start="00:16:07.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and it's much lighter in terms""" start="00:16:11.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""of number of lines, et cetera. I learned a lot.""" start="00:16:13.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Well, actually, yes, with the help of Cape,""" start="00:16:20.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but it is much lighter and much easier""" start="00:16:25.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to integrate and configure.""" start="00:16:27.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I've learned a lot about computational functions in the process,""" start="00:16:30.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is, something that is always nice to learn new things""" start="00:16:34.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and the Nerd Icons Corfu makes the""" start="00:16:40.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""at least at this point in time I might get tired of it""" start="00:16:45.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but at this point in time it makes""" start="00:16:48.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""a makes a very nice overall look""" start="00:16:50.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and look and feel for for Emacs.""" start="00:16:53.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""requests to whom it may concern cape has nice features""" start="00:16:58.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that maybe could make their way into emacs""" start="00:17:02.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""i'm thinking basically about this cape super fun""" start="00:17:06.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""uh super function super cape function functionality""" start="00:17:09.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is very nice and overcomes the problem of linking""" start="00:17:12.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and this exclusive and all this kind of things""" start="00:17:18.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that we have currently in Corfu""" start="00:17:22.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""with the computational point functions.""" start="00:17:26.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Corfu is also really nice to have and it's not too big""" start="00:17:28.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so is there any possibility""" start="00:17:32.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that it makes its way into Emacs?""" start="00:17:35.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Please keep Yarn Snippet alive.""" start="00:17:40.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm not saying here that my pull request should be there,""" start="00:17:42.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but it would be nice if someone took a look""" start="00:17:48.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and made it part of Yarn Snippet.""" start="00:17:51.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And PS, currently on master,""" start="00:17:57.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""there's a lot of semantic highlighting going on,""" start="00:18:01.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is very, very nice. No criticism on that.""" start="00:18:07.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but you may need to add to your snippet hook""" start="00:18:13.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""this simple local value for ElixirFontify semantically""" start="00:18:19.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""because at least in my case I felt that""" start="00:18:25.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""the face were a bit too pushy""" start="00:18:30.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so I had to make a snippet mode""" start="00:18:32.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""use the old Emacs Lisp fontification.""" start="00:18:37.334" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""That's what we want to talk about.""" start="00:18:41.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Any initial reactions to this? There's a question here.""" start="00:18:46.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Someone asked, did you try Jasnepet Cup?""" start="00:18:55.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""If so, what did you miss from this approach? I tried that.""" start="00:18:59.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And it's not that I missed anything.""" start="00:19:05.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""It was more or less that I wanted to do it myself.""" start="00:19:11.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I wanted to see what was behind it. That's my answer.""" start="00:19:16.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""There are lots of packages there,""" start="00:19:24.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but I try to keep learning. So, this was a nice objective""" start="00:19:26.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""to learn a bit more about Emacs. And now, just a second.""" start="00:19:31.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Now, a small demo. This is the interaction.""" start="00:19:40.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And as you see, I have the snippet there.""" start="00:19:44.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I have a couple of snippets.""" start="00:19:47.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So, for example, if I would like to say""" start="00:19:52.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I want to define a function, I can go like this.""" start="00:19:55.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And what you see here is that""" start="00:19:58.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have two snippets appearing and then some variables.""" start="00:20:00.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So, I could go for def one or if I want a key map, for def key map,""" start="00:20:04.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which would be something like this.""" start="00:20:09.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And then when I press enter, I get directly into the map""" start="00:20:11.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I could say like, Show off mob.""" start="00:20:18.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Then it sets out directly a prefix T,""" start="00:20:26.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is something that I asked for in Emacs master.""" start="00:20:30.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So with prefix T, for those who prefix it true,""" start="00:20:35.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""for those who don't know it,""" start="00:20:39.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""it makes integrating this into keymaps in use package much easier.""" start="00:20:41.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So the next thing would be""" start="00:20:46.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I would like to write a description""" start="00:20:51.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""like for example a cool show off team up""" start="00:20:56.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then my keys are my functions and that would be it""" start="00:21:05.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but you also have like but also have like this define function""" start="00:21:08.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and of course you can say that's nice but there's no""" start="00:21:15.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but you're not showing the integration""" start="00:21:21.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""with Eglot and you're right.""" start="00:21:23.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I'm going just to open up a small program""" start="00:21:25.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that I'm currently developing in Python.""" start="00:21:30.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""X is a tool to do things in MP3.""" start="00:21:33.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And here I would have like all these things.""" start="00:21:38.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""As you see here in the bottom,""" start="00:21:42.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""service running, pilot is local, eglot is active.""" start="00:21:45.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I have my eglot stop and then I go down.""" start="00:21:49.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And I want to add a new argument here.""" start="00:21:57.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I would go like for it. I would go like add flag.""" start="00:22:00.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""For example, I would add a flag""" start="00:22:08.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I would get a new flag to add here.""" start="00:22:13.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Oops. Of course, this is integrated into Eagle Lord.""" start="00:22:21.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I'm getting your information about what I have.""" start="00:22:33.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't have OS, so I would need to import here,""" start="00:22:42.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but I can go up just to see""" start="00:22:52.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""if I would like to, for example,""" start="00:22:59.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""create a new a regular expression""" start="00:23:01.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm getting this information that you see right now on call""" start="00:23:11.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""for I'm getting that from Eglot""" start="00:23:15.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so you see there's the integration""" start="00:23:17.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""with with Eglot too in Python""" start="00:23:18.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have Eglot and as you've seen""" start="00:23:20.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I also have the and all these are snippets fine""" start="00:23:23.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""more reactions and questions""" start="00:23:30.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Because that would be my show off here.""" start="00:23:38.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Any questions? Any more questions on the pad?""" start="00:23:54.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but anyhow i'm going to try""" start="00:23:56.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""i'm going to try your snippet too""" start="00:24:11.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and i'm going to be answering this question more""" start="00:24:13.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""yeah time is good okay fine""" start="00:24:16.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so I would be done if there's no more reactions""" start="00:24:21.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""thank you so much You're welcome.""" start="00:24:30.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""If you have any other questions, folks,""" start="00:24:33.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""you can always follow up on the pad.""" start="00:24:34.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""That was a great demonstration, and I'm sure lots of people""" start="00:24:37.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""are looking forward to trying it out.""" start="00:24:39.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Oh, I see some questions coming in now.""" start="00:24:43.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""You may go ahead if you like.""" start="00:24:45.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""okay fine uh what uh there's someone asking""" start="00:24:46.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""what do special characters in your snippets work well too""" start="00:24:51.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""what kind of i don't use special characters in the key name""" start="00:24:57.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so in this case everything works quite nicely""" start="00:25:02.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then i'm passing i'm passing the control to your snippets""" start="00:25:05.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so if there's any problem in your snippets""" start="00:25:11.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""with uh special characters""" start="00:25:13.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that i don't know I don't use that as a key.""" start="00:25:15.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm just using for key names.""" start="00:25:24.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I normally use a, I only use letters, but that should work.""" start="00:25:30.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I mean, let's, uh, let's give it a trial.""" start="00:25:38.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Let's kill here. Yes. I don't want, I don't want to touch this.""" start="00:25:43.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Ugh. let's go into this one uh""" start="00:25:58.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""let's say I'm going to define this for example like this""" start="00:26:01.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I'm going to create a new snippet""" start="00:26:06.959" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm going to create a new snippet""" start="00:26:10.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and use this is for example when you look at this""" start="00:26:15.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""if you if you have the the venue uh the new""" start="00:26:18.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""sorry the new way of the the new emacs uh""" start="00:26:20.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""semantical highlighting working""" start="00:26:26.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""this would be quite cramped this is why i'm using""" start="00:26:31.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""this is why i said uh the snippet the""" start="00:26:39.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so is this more or less what you're talking about""" start="00:26:43.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""This is what you're talking about. Snippet. Save the snippet.""" start="00:26:49.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So I'm going to... Snippet, load and put window.""" start="00:27:01.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Enable interaction mode. Yes, I'm going to save.""" start="00:27:15.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And I'm going to save that as FD test. on the file.""" start="00:27:21.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""No, I'm going to save this. Load. Load input window.""" start="00:27:24.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm going to put this in Emacs Lisp mode. I want to save it. No.""" start="00:27:41.480" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm going to write that directly into Emacs Lisp mode.""" start="00:27:53.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""going to go back into scratch buffer""" start="00:28:27.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and here I have it and we have it here but anyhow""" start="00:28:30.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I'm just going to try to see if I feel like empty of course""" start="00:28:43.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""there's only one it will not show in Corfu,""" start="00:28:52.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""but I mean, I don't have any problems""" start="00:28:58.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""with that, as you see. Was that what you were meaning?""" start="00:29:01.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Yeah, I guess that works. Fine.""" start="00:29:21.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""All right, shall we wrap up here""" start="00:29:24.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so that you can have supper""" start="00:29:29.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and have lunch and other things? Okay, fine for me.""" start="00:29:31.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I was hoping to see the drop down. Just a second.""" start="00:29:40.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I think we can do that too. Two seconds.""" start="00:29:46.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""How can we do that with a drop down?""" start="00:29:49.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Yeah, if I say something like this.""" start="00:29:52.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And then I go and save it.""" start="00:29:57.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And I'm going to go and write this""" start="00:30:04.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""into, with a second, fine.""" start="00:30:08.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And now I need to quit here, sorry.""" start="00:30:16.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And I'm going to come back in a second with another remark.""" start="00:30:19.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Well, I'm bringing back and now let's see.""" start="00:30:26.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Let's see what we have in your snippets.""" start="00:30:31.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""It's not there. Why not? Just a second. Let's see if I go.""" start="00:30:34.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't know if it matters that the name was""" start="00:30:44.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""that didn't have the characters in the beginning.""" start="00:30:47.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Just a second. I think I know what is happening here.""" start="00:30:52.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Do I have here? I have them. I'm going to clean.""" start="00:31:03.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Oh, you're back in your home directories. Why?""" start="00:31:21.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""CD dash to get back in. Yeah. That's right.""" start="00:31:28.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So you see how the name also has""" start="00:31:35.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""it doesn't have the same as the keys.""" start="00:31:37.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I don't know if that affects what shows up.""" start="00:31:39.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Yeah, we we can try that. That's a quick one. This is my.""" start="00:31:41.040" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Fine, now that I have this,""" start="00:31:49.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is going to be quicker, we check again.""" start="00:31:51.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""They both seem to be the same now""" start="00:31:55.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I don't know if that affects, but anyhow, let's try it.""" start="00:31:57.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I go and then I look at the AR snippets, if it's there.""" start="00:32:03.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Yes, it is. Yeah, it's there.""" start="00:32:07.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And then if I say there, there you are. Oh, look at that.""" start="00:32:11.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""It doesn't seem to be affecting. Fantastic.""" start="00:32:18.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And by the way, it is there.""" start="00:32:24.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Yeah, I really should spend time""" start="00:32:32.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""getting more templates set up with Snippet.""" start="00:32:34.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I really love the fact that""" start="00:32:36.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""you can evaluate Emacs Lisp in it too.""" start="00:32:37.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Yeah, I mean, just to make it bigger,""" start="00:32:40.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""try that because if I go into my, for example,""" start="00:32:43.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""into my org mode stuff""" start="00:32:51.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and in my org mode, I go to the article,""" start="00:32:55.680" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is one of the big ones.""" start="00:32:59.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have things like, for example,""" start="00:33:03.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I defined a couple of functions here to do if it's empty,""" start="00:33:06.200" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""if that is empty, just add a white space.""" start="00:33:10.720" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""If one is empty, add a white space.""" start="00:33:16.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""add a white space here so it becomes a comment.""" start="00:33:19.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have functions for to do more things on that""" start="00:33:23.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and I also have like menus to see""" start="00:33:27.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""what language I want to choose for""" start="00:33:29.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""for my spell checking and so on so""" start="00:33:33.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and that's all that's as you see""" start="00:33:37.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""this is a Lisp being evaluated""" start="00:33:40.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so yes do I really encourage you""" start="00:33:41.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I've also heard people use it,""" start="00:33:45.120" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""like, especially if they're working""" start="00:33:46.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""in different programming languages,""" start="00:33:47.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""so they can just have the syntax""" start="00:33:49.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""for the different languages""" start="00:33:52.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""be condensed into a consistent abbreviation. Yeah.""" start="00:33:54.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And look, this is my article. I have another.""" start="00:33:58.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""This is when I'm writing articles. I have another one.""" start="00:34:01.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have another one for writing letters""" start="00:34:07.800" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""in org mode and so on. So, it's like letter, block,""" start="00:34:10.280" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and you have the complete infrastructure""" start="00:34:14.400" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and you don't have to type it by hand.""" start="00:34:16.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So, it's really, really nice.""" start="00:34:20.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Hmm, I think it might be nice to have""" start="00:34:22.880" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""a future Emacs carnival, you know,""" start="00:34:25.960" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""shared blogging theme thing be around""" start="00:34:28.080" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""having people share their snippets.""" start="00:34:31.240" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""No snippets and other things like for example,""" start="00:34:33.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""this is something stupid.""" start="00:34:39.360" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm switching my themes. All right.""" start="00:34:41.320" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""And of course, there you see,""" start="00:34:44.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I have also, this is also with,""" start="00:34:48.640" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""this is my way of switching buffers,""" start="00:34:51.440" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""which is with the shift control and tab,""" start="00:34:54.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I can switch different families""" start="00:34:58.160" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""and then when I'm in a family,""" start="00:35:00.560" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I can go and switch with control tab between the different,""" start="00:35:02.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm using tab line by the way. I'm not using the other one.""" start="00:35:07.000" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I'm using the old plain tab line with my themes.""" start="00:35:15.600" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So that's more or less everything.""" start="00:35:20.840" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""Thank you for the peek into your workflow.""" start="00:35:23.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I will work on getting the recordings for the live talks""" start="00:35:26.520" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""sorted out at some point very soon.""" start="00:35:30.760" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""I might even be able to get them out next week.""" start="00:35:33.920" video="mainVideo-completion" id="subtitle"]]
+[[!template text="""So thanks again. All right. Have a nice supper. Same to you.""" start="00:35:37.840" video="mainVideo-completion" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20completion%3A%20corfu%2Byasnippet%3A%20Easier%20than%20I%20thought)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/completion-before.md b/2025/info/completion-before.md
new file mode 100644
index 00000000..8ebf1db2
--- /dev/null
+++ b/2025/info/completion-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 37-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-completion>
+Etherpad: <https://pad.emacsconf.org/2025-completion>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-completion"><source src="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 36:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-completion">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--backup.webm">Download --backup.webm (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--handout.pdf">Download --handout.pdf</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.m4v">Download --main.m4v (95MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.opus">Download --main.opus (5.2MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-completion--corfuyasnippet-easier-than-i-thought--pedro-a-aranda-gutirrez--main.webm">Download --main.webm (48MB)</a></li><li><a href="https://youtu.be/vf-jntWJHBA">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/completion-nav.md b/2025/info/completion-nav.md
new file mode 100644
index 00000000..2305904c
--- /dev/null
+++ b/2025/info/completion-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/weights">Weightlifting tracking with Emacs on Android</a>
+Next by track: <a href="/2025/talks/zettelkasten">Zettelkasten for regular Emacs hackers</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/gardening-after.md b/2025/info/gardening-after.md
new file mode 100644
index 00000000..9a7aa15e
--- /dev/null
+++ b/2025/info/gardening-after.md
@@ -0,0 +1,387 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="gardening-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:05.980" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""Hello, everyone. My name is Marco""" start="00:00:05.980" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and today I'll talk about gardening with Emacs.""" start="00:00:08.960" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Gardening? Yes, but digital gardening, obviously.""" start="00:00:13.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""But first, one thing: I'm sorry, yes,""" start="00:00:17.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I'm a Microsoft Windows user.""" start="00:00:20.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I know, I know. I said I'm sorry.""" start="00:00:22.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Please stick with me.""" start="00:00:24.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Do not skip this talk!""" start="00:00:26.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Promise, I'll show you only free software!""" start="00:00:27.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And speaking about free software,""" start="00:00:31.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""yes, this presentation is not made with Emacs,""" start="00:00:33.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but I made it with LibreOffice.""" start="00:00:35.920" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What is a digital garden?""" start="00:00:39.040" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""So what is a digital garden?""" start="00:00:39.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""A digital garden is""" start="00:00:42.000" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""your personal corner of the internet""" start="00:00:43.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to cultivate ideas.""" start="00:00:45.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Think of it like a real garden""" start="00:00:47.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""where you plant seeds (your new thoughts),""" start="00:00:50.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""you water them (you add the details),""" start="00:00:54.395" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and watch them grow.""" start="00:00:57.380" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Unlike a fixed-date blog,""" start="00:00:59.960" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""which shows only polished results,""" start="00:01:03.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""a garden includes works-in-progress--""" start="00:01:06.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""like seedlings in a greenhouse.""" start="00:01:09.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It's a network of notes""" start="00:01:12.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""connected by links and tags,""" start="00:01:14.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""helping you see patterns in your thinking.""" start="00:01:17.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Here, the ideas are not static;""" start="00:01:21.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""they evolve as you learn,""" start="00:01:24.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""creating a living archive of your mind,""" start="00:01:26.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""just like the plants in a garden grow.""" start="00:01:29.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Also here, instead of the blog platform,""" start="00:01:37.740" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""you decide the tools, the look, and your pace.""" start="00:01:41.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I'll show you how I run my garden""" start="00:01:46.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""with plain Org Mode files""" start="00:01:50.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and our favorite Emacs.""" start="00:01:53.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""In short: a digital garden""" start="00:01:55.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is a flexible, pressure-free space""" start="00:01:57.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to explore, learn in public""" start="00:02:01.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and connect the knowledge--""" start="00:02:04.213" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""your own digital ecosystem.""" start="00:02:07.160" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Why a digital garden?""" start="00:02:11.520" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""Why a digital garden?""" start="00:02:11.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, a digital garden keeps knowledge alive:""" start="00:02:13.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""instead of freezing content after &quot;publish,&quot;""" start="00:02:17.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""you revisit and refine it,""" start="00:02:21.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""so ideas stay accurate and useful.""" start="00:02:22.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""By sharing half-formed thoughts early,""" start="00:02:26.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""you lower the barrier to writing""" start="00:02:29.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and let concepts evolve gradually--""" start="00:02:31.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""no need to wait for one &quot;perfect&quot; essay.""" start="00:02:34.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Links and tags weave ideas together,""" start="00:02:37.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""revealing unexpected patterns""" start="00:02:41.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that isolated posts would hide.""" start="00:02:43.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""This approach sheds perfectionism,""" start="00:02:46.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""encouraging small, regular updates""" start="00:02:49.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that build momentum and invite collaboration.""" start="00:02:52.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, actually, even not regular updates are fine.""" start="00:02:55.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Early readers can offer feedback, share resources,""" start="00:03:00.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or identify blind spots,""" start="00:03:04.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""accelerating your and their improvement.""" start="00:03:07.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Over time, your garden can become""" start="00:03:12.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""a searchable showcase of your thinking,""" start="00:03:14.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""a living résumé for collaborators, peers,""" start="00:03:18.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or anyone curious about how you learn.""" start="00:03:21.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And what about me?""" start="00:03:25.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Why a digital garden?""" start="00:03:27.800" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, I actually have started a digital garden""" start="00:03:29.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to learn Emacs and Org Mode.""" start="00:03:33.140" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""How to digital garden?""" start="00:03:39.200" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""How to digital garden?""" start="00:03:39.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, start simple.""" start="00:03:41.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Pick one place for your notes""" start="00:03:43.000" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and put them online.""" start="00:03:45.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Even the worst Github ever out there is fine.""" start="00:03:46.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Then, well, maybe you can move out of GitHub,""" start="00:03:50.420" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but that's another story.""" start="00:03:53.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Capture your ideas quickly.""" start="00:03:55.020" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Publish them, even rough,""" start="00:03:57.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and maybe, if you want, tag them as seeds""" start="00:04:00.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to let the other people know they are rough.""" start="00:04:02.940" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Learning in public is useful""" start="00:04:06.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""because link-related pages""" start="00:04:09.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""so that readers can work through your thinking,""" start="00:04:11.580" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""helping them see your connections.""" start="00:04:16.860" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Once a week or whenever you want,""" start="00:04:19.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""prune outdated pieces if you want""" start="00:04:22.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or keep them there""" start="00:04:24.960" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and add fresh insights if you have any.""" start="00:04:26.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Share your updates openly.""" start="00:04:30.460" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Invite comments because steady small steps""" start="00:04:33.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""will keep the garden thriving.""" start="00:04:38.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And what about me?""" start="00:04:41.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""How I do digital garden work with Emacs?""" start="00:04:43.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""With Org Mode and its publishing to HTML file,""" start="00:04:46.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and we will see it in a moment.""" start="00:04:51.140" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""How to make Emacs portable, on Windows""" start="00:04:57.440" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""How to make Emacs portable on Windows""" start="00:04:57.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is the first topic.""" start="00:05:01.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, being in Windows,""" start="00:05:03.700" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I have the advantage and the possibility""" start="00:05:06.000" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to bring and use my data""" start="00:05:08.740" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and software basically everywhere:""" start="00:05:10.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""home, office, my sister-in-law's PC""" start="00:05:14.300" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""when she needs technical help,""" start="00:05:18.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""friends and the like.""" start="00:05:19.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""So for these reasons,""" start="00:05:21.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""it's been many, many years""" start="00:05:23.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I'm using exclusively portable applications""" start="00:05:25.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that do not need an installation""" start="00:05:28.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and bring their own data""" start="00:05:31.540" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and configuration bundled together.""" start="00:05:33.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And now also Emacs is portable,""" start="00:05:37.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""inside my tiny, really tiny, USB key.""" start="00:05:38.800" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""How?""" start="00:05:43.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I mean: not being sure""" start="00:05:44.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""if my USB key drive letter""" start="00:05:46.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""will be D:, E:, K:,""" start="00:05:48.800" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or whatever other drive letter""" start="00:05:52.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""will be assigned to it""" start="00:05:53.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""by the system I'm plugging it into,""" start="00:05:54.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""how can I specify, to Emacs,""" start="00:05:57.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that its home folder is on my USB?""" start="00:06:00.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, I could maybe have used relative paths,""" start="00:06:04.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but then, where's the fun of hacking things?""" start="00:06:07.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""The trick here is""" start="00:06:10.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the not-so-well-known ~dp0 system variable""" start="00:06:12.700" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that contains the execution directory""" start="00:06:17.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""full path of the executable file.""" start="00:06:20.700" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And yes, it ends with a backslash,""" start="00:06:25.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""so composing it with other literal paths is ugly as well.""" start="00:06:29.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""The ~dp0 variable is only available""" start="00:06:33.340" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""inside a batch file during its execution,""" start="00:06:37.540" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and expands to the drive (d) and the path (p),""" start="00:06:40.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""in which that batch file (0th)""" start="00:06:46.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""command line parameter is located""" start="00:06:50.701" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""(that obviously cannot change""" start="00:06:55.500" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""because it's executing).""" start="00:06:58.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""The data are obtained""" start="00:07:02.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""from the %0 system variable""" start="00:07:04.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that contains the batch file name.""" start="00:07:08.734" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I actually have never tried,""" start="00:07:10.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but it should even allow to let the batch run""" start="00:07:12.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""from a UNC network location""" start="00:07:16.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""with no mapped drive letter at all!""" start="00:07:19.820" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And that's the batch file""" start="00:07:22.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I'm using to run Emacs with an automatically selected""" start="00:07:24.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and fixed Emacs folder,""" start="00:07:28.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""emacshome folder,""" start="00:07:31.140" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""sibling of the unzipped Emacs one,""" start="00:07:33.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""regardless the computer I'm in""" start="00:07:35.900" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and the assigned drive letter.""" start="00:07:37.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""If you need a portable Emacs,""" start="00:07:40.220" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""this is probably the simplest way to go!""" start="00:07:42.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Just put the runemacs.bat file""" start="00:07:45.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""in your unzipped Emacs""" start="00:07:48.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""(well, 30.2 actually now) bin folder,""" start="00:07:50.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and your Emacs and its configuration""" start="00:07:54.380" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""will always be there with you.""" start="00:07:56.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""With this, I'm basically""" start="00:07:58.620" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""creating the possibility""" start="00:08:00.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to bring my own digital garden with me,""" start="00:08:01.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""just like a little desk Zen garden,""" start="00:08:05.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and together with it, also,""" start="00:08:09.467" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""all the tools that I need to work on it,""" start="00:08:11.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""always with me, in my USB key.""" start="00:08:13.860" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""My Emacs customization""" start="00:08:18.820" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""Speaking about configuration,""" start="00:08:18.820" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""here comes the second topic:""" start="00:08:20.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""my Emacs customization.""" start="00:08:22.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Having a portable Emacs allows to""" start="00:08:25.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""always have the configuration with me.""" start="00:08:28.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Yes, okay, but which configuration?""" start="00:08:31.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, obviously, I'm speaking of the init.el file""" start="00:08:33.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that lives inside of the emacs.d folder""" start="00:08:38.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""in my emacshome portable configuration folder""" start="00:08:42.000" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that we just saw.""" start="00:08:45.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I'm not an Emacs expert,""" start="00:08:46.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but I want to highlight a point here""" start="00:08:48.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that has to be clear to every one of us:""" start="00:08:51.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the set of basic considerations I had""" start="00:08:55.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""for text width, tabs versus spaces,""" start="00:08:59.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""trailing spaces, and so on.""" start="00:09:02.020" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""As you can see here,""" start="00:09:05.140" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I'm pretty opinionated,""" start="00:09:07.300" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but this is the important part:""" start="00:09:08.960" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""we are lucky enough to be able to use Emacs,""" start="00:09:10.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that is presumably""" start="00:09:15.340" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the most highly configurable tool ever,""" start="00:09:16.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""so let's use it!""" start="00:09:20.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Remember that it's your Emacs,""" start="00:09:21.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and you can and must configure it""" start="00:09:24.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""for your needs,""" start="00:09:27.860" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""even if it might seem ridiculous to others.""" start="00:09:28.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Here, the configuration you see""" start="00:09:33.140" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is not the important part.""" start="00:09:35.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""The important part is how you feel""" start="00:09:37.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""with your configuration.""" start="00:09:39.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""For example: I have a fill-column-indicator""" start="00:09:42.420" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""at 72 characters,""" start="00:09:45.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I prefer spaces instead of tabs,""" start="00:09:47.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""no trailing spaces, truncate lines, and so on.""" start="00:09:49.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It might seem weird to some of you""" start="00:09:53.020" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and to most of my colleagues""" start="00:09:55.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""(and friends as well,""" start="00:09:57.960" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but that's another story!)""" start="00:09:58.960" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and it might even be.""" start="00:10:00.620" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""But I'm comfortable with my configuration,""" start="00:10:02.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and you should be with yours too.""" start="00:10:05.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""That is: as an owner and worker""" start="00:10:07.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""of my own digital garden,""" start="00:10:11.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""it's obviously easier for me""" start="00:10:13.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to choose my own tools""" start="00:10:15.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and adapt those to my needs,""" start="00:10:18.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""instead of the opposite!""" start="00:10:21.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""If I want to put the roses""" start="00:10:23.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""in a circle instead of a row""" start="00:10:25.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that is maybe the best practice, who cares?""" start="00:10:27.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It's my garden, and I use it as I want.""" start="00:10:30.400" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""PlantUML and Japanese""" start="00:10:36.120" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""Continuing on the configuration party,""" start="00:10:36.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the third topic is PlantUML and Japanese.""" start="00:10:38.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Why those two are listed together?""" start="00:10:44.860" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Well, they are weird enough""" start="00:10:47.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to be both part of my configuration.""" start="00:10:48.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""First, I think PlantUML""" start="00:10:50.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is a very nice and powerful tool,""" start="00:10:52.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""so integrating it in Emacs""" start="00:10:55.020" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is pretty useful,""" start="00:10:57.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""even if I'm currently using it""" start="00:10:58.900" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""only to generate SVG images""" start="00:11:01.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""when publishing my digital garden to HTML.""" start="00:11:04.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""There are some pain points""" start="00:11:08.960" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that I still have to solve,""" start="00:11:10.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and I know that it's also possible to use it""" start="00:11:11.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""for (pre)viewing diagrams""" start="00:11:14.740" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""directly in Emacs, without publishing,""" start="00:11:16.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but maybe I don't need this feature at the moment.""" start="00:11:19.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And I have to thank our favorite Sacha Chua here,""" start="00:11:22.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""because she taught me (through Mastodon)""" start="00:11:27.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""how to automatically answer y,""" start="00:11:29.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""when publishing in HTML,""" start="00:11:32.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""every time that PlantUML has to (re)generate an SVG.""" start="00:11:33.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""So, thank you Sacha.""" start="00:11:36.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Moving to Japanese, let me go back to""" start="00:11:39.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the previous slide for a moment""" start="00:11:41.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to show you a bit more in detail""" start="00:11:43.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the coding system I've configured.""" start="00:11:46.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""If this PC is helping me in moving""" start="00:11:49.800" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""back to the previous slide.""" start="00:11:54.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Okay, so let me... No, it's not working.""" start="00:11:56.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It's not... Okay.""" start="00:12:02.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""So, speaking about Japanese,""" start="00:12:05.820" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I have studied Japanese.""" start="00:12:09.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""My wife is Japanese,""" start="00:12:12.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but that's a detail.""" start="00:12:13.800" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""So I frequently write in Japanese,""" start="00:12:15.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and I wanted to write in Japanese""" start="00:12:18.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""also inside Emacs.""" start="00:12:19.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I learned, as you can see,""" start="00:12:21.220" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that UTF-8 DOS""" start="00:12:23.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is a more than enough coding system""" start="00:12:25.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to allow me writing in the same file,""" start="00:12:28.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""both Italian with all our accented letters""" start="00:12:31.140" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and Japanese through Windows IME system.""" start="00:12:35.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""This allows me to properly write, save, read files,""" start="00:12:40.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but it was not enough for copying""" start="00:12:44.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and pasting Japanese text.""" start="00:12:48.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""If I copied some Japanese text from the browser""" start="00:12:51.180" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or even from another text editor,""" start="00:12:55.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""it didn't work.""" start="00:12:56.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It only pasted the rubbish in Emacs""" start="00:12:57.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""until I found out that for whatever reason,""" start="00:13:00.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I had to use, as you can see in bold,""" start="00:13:04.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""UTF-16LE DOS for the selection coding system.""" start="00:13:07.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""And this basically allows me""" start="00:13:13.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to copy Japanese from another file,""" start="00:13:14.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""text editor, browser, whatever,""" start="00:13:17.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and paste it in Emacs and vice versa.""" start="00:13:19.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""So the lesson here is,""" start="00:13:22.700" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""if you need European languages""" start="00:13:24.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and Japanese inside your Emacs,""" start="00:13:26.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""well, this coding system works.""" start="00:13:29.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Let me go back to PlantUML and Japanese.""" start="00:13:32.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Another interesting thing about Japanese""" start="00:13:37.000" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is this nice macro I found""" start="00:13:40.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""in the Emacs mailing list""" start="00:13:44.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to add furigana to Japanese kanjis""" start="00:13:46.980" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""when exporting or publishing to HTML.""" start="00:13:49.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It's actually even possible to do the same""" start="00:13:53.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""with LaTeX export/publish""" start="00:13:55.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and I'll give you some references later.""" start="00:13:57.680" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It's very useful because I can show,""" start="00:14:00.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""as you can see on the example at the bottom,""" start="00:14:03.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I can show the easier-to-read pronunciation""" start="00:14:06.860" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""even for readers with really basic knowledge of Japanese.""" start="00:14:10.220" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""(And it's also useful to myself, actually,""" start="00:14:14.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to remember how to pronounce those kanji!)""" start="00:14:17.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""For those of you that have no idea""" start="00:14:20.260" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""on how to read or write Japanese, well, sorry.""" start="00:14:22.560" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""As you can see, the garden evolved from the beginning""" start="00:14:27.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""on how to use Emacs and Org Mode,""" start="00:14:31.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and it's evolving further,""" start="00:14:33.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and here it's becoming open to""" start="00:14:35.200" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""different plants (or PlantUML…)""" start="00:14:37.400" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and also be able to adapt""" start="00:14:40.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to different foreign visitors' needs.""" start="00:14:43.840" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""My Org Mode publishing configuration""" start="00:14:50.660" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""Third topic: my Org Mode publishing configuration,""" start="00:14:50.660" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or where the digital garden is born.""" start="00:14:54.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""The latest (but not least!) part of""" start="00:14:58.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the creation and tending of my digital garden""" start="00:15:00.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is the publishing file that is needed to export""" start="00:15:03.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the whole Org Mode project into HTML.""" start="00:15:07.120" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Here I do not have many fancy configurations,""" start="00:15:11.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""even though I'm copying the publishing.el file itself""" start="00:15:14.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""in the output folder,""" start="00:15:19.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to make it available in the published version of the garden.""" start="00:15:21.460" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Also I have added the mentioned configuration""" start="00:15:24.860" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to manage SVG (or PNG) exports from PlantUML""" start="00:15:28.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""(thank you again, Sacha),""" start="00:15:32.980" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and I'm also forcing HTML5""" start="00:15:34.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""without scripts as the result format.""" start="00:15:37.000" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Together with this,""" start="00:15:40.060" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I also have a fancy CSS addition""" start="00:15:41.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to the default one""" start="00:15:43.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""that uses the System Font Stack concept""" start="00:15:44.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to harmonize fonts""" start="00:15:48.240" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""with readers' local systems,""" start="00:15:49.760" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""without downloading or injecting""" start="00:15:51.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""external fonts.""" start="00:15:54.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I've customized links and tags a bit,""" start="00:15:55.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""with the CSS, together with tables""" start="00:15:57.800" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and some other pieces here and there,""" start="00:15:59.840" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""but nothing too much fancy.""" start="00:16:01.160" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The final result""" start="00:16:04.520" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""So, this is one (not-so-)random page""" start="00:16:04.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""of my digital garden,""" start="00:16:08.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or my knowledge 枯山水,""" start="00:16:10.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""my knowledge Zen garden, as I prefer to call it.""" start="00:16:12.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""This is, specifically, the page related""" start="00:16:17.620" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""to write about the Digital Garden concept itself,""" start="00:16:20.520" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""as a sort of meta-writing.""" start="00:16:23.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""You can see the different""" start="00:16:26.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""rendering of the links,""" start="00:16:27.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""depending if they are internal, in blue,""" start="00:16:28.880" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""or external to the garden in gray-ish.""" start="00:16:31.640" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""You can see the Japanese furigana""" start="00:16:37.660" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""on top of the kanjis,""" start="00:16:39.440" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""and you also can see the automatic table of contents,""" start="00:16:40.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the custom aside component that highlights""" start="00:16:44.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""the latest modification date, and so on.""" start="00:16:47.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Everything I've spoke about here""" start="00:16:50.820" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""is available in my digital garden""" start="00:16:53.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""in my knowledge kare-san-sui, again,""" start="00:16:55.920" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""as a sort of self-description""" start="00:16:57.600" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""of the digital garden itself.""" start="00:17:00.600" video="mainVideo-gardening" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Thank you for listening""" start="00:17:03.280" video="mainVideo-gardening" id="subtitle"]]</div>[[!template text="""Thank you, everyone,""" start="00:17:03.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""for being with me till the end.""" start="00:17:04.280" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""So as I said, if you want more details""" start="00:17:06.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""about these topics,""" start="00:17:08.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""take a look at my knowledge kare-san-sui.""" start="00:17:10.040" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""The link is here, and feel free to contact me""" start="00:17:13.160" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""through Delta Chat""" start="00:17:16.360" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""at this email address.""" start="00:17:17.480" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Yes, I know.""" start="00:17:20.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It's a Microsoft email address.""" start="00:17:21.320" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""It's an old one.""" start="00:17:23.720" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""I recycled it. I know. It's my fault.""" start="00:17:25.080" video="mainVideo-gardening" id="subtitle"]]
+[[!template text="""Thank you again, and happy Emacs everyone!""" start="00:17:29.020" video="mainVideo-gardening" id="subtitle"]]
+
+</div>
+
+Captioner: rodion
+
+Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20gardening%3A%20Gardening%20in%20Emacs%3A%20A%20Windows%20user%27s%20tale%20of%20tending%2C%20tweaking%2C%20and%20triumph)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/gardening-before.md b/2025/info/gardening-before.md
new file mode 100644
index 00000000..3bbaf7f9
--- /dev/null
+++ b/2025/info/gardening-before.md
@@ -0,0 +1,25 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 18-min talk ; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference Etherpad: <https://pad.emacsconf.org/2025-gardening>
+Etherpad: <https://pad.emacsconf.org/2025-gardening>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-gardening"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--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="mainVideo-gardening" data="""
+00:05.980 Introduction
+00:39.040 What is a digital garden?
+02:11.520 Why a digital garden?
+03:39.200 How to digital garden?
+04:57.440 How to make Emacs portable, on Windows
+08:18.820 My Emacs customization
+10:36.120 PlantUML and Japanese
+14:50.660 My Org Mode publishing configuration
+16:04.520 The final result
+17:03.280 Thank you for listening
+
+"""]]<div></div>Duration: 17:36 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gardening">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.opus">Download --main.opus (15MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--main.webm">Download --main.webm (48MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--script.txt">Download --script.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani--split.vtt">Download --split.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gardening--gardening-in-emacs-a-windows-users-tale-of-tending-tweaking-and-triumph--marco-bresciani.odp">Download .odp (3.6MB)</a></li><li><a href="https://youtu.be/lNIc8-_C9kQ">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/gardening-nav.md b/2025/info/gardening-nav.md
new file mode 100644
index 00000000..fc9f5c26
--- /dev/null
+++ b/2025/info/gardening-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/hyperboleqa">Questions and answers to help you fly with Hyperbole</a>
+Next by track: <a href="/2025/talks/bookclub-tapas">Bookclub tapas</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/gmail-after.md b/2025/info/gmail-after.md
new file mode 100644
index 00000000..cd1b0cb3
--- /dev/null
+++ b/2025/info/gmail-after.md
@@ -0,0 +1,758 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="gmail-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Before we begin""" start="00:00:00.000" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Hello everyone.""" start="00:00:00.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""My name is Bala Ramadurai.""" start="00:00:01.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Today I'm going to be talking about org-gmail.""" start="00:00:03.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's something that I put together.""" start="00:00:07.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""This is what I call gmail meets org mode.""" start="00:00:10.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And they get along too.""" start="00:00:12.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's talk about email""" start="00:00:15.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and how to manage email via org mode.""" start="00:00:16.520" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The 4-year overnight success""" start="00:00:19.840" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""This project is a four year overnight success.""" start="00:00:19.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It was in 2021.""" start="00:00:23.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I said, Hey, wait a second.""" start="00:00:26.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It'll be so cool if we can integrate Gmail with org.""" start="00:00:27.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So I started trying out new things.""" start="00:00:30.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And immediately I realized""" start="00:00:32.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""this is a much larger project than I thought.""" start="00:00:34.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So it lived in someday maybe.org""" start="00:00:36.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""for about three years.""" start="00:00:40.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Enter 2024 AI arrives and in 2025 I had a working""" start="00:00:42.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""prototype in 24 hours flat.""" start="00:00:48.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So three years and 364 days, nothing much happened""" start="00:00:50.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and one day it actually got it working.""" start="00:00:55.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Sometimes procrastination is just waiting for the""" start="00:00:58.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""right tools.""" start="00:01:00.920" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The real title""" start="00:01:02.800" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""The real title should have been org mail for""" start="00:01:02.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""people who like org mode more than email.""" start="00:01:05.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""The Gmail monster that has always been attacking us.""" start="00:01:08.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay, but we still have to deal with email.""" start="00:01:12.800" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Why not gnus/mu4e/notmuch?""" start="00:01:15.600" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""One of the most common questions that I've got so far.""" start="00:01:15.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Why not gnus or mu4e or notmuch, or other tools.""" start="00:01:18.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""They are amazing.""" start="00:01:24.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Use them if it works for you, absolutely.""" start="00:01:26.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Just go right ahead.""" start="00:01:29.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If it works for you, don't change anything""" start="00:01:30.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""because this looks cool.""" start="00:01:32.240" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The honest answer""" start="00:01:34.280" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Well, the honest answer for me is that""" start="00:01:34.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""they want to be your email client.""" start="00:01:36.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's not what I am after.""" start="00:01:39.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I don't want an email client.""" start="00:01:40.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I have enough email clients already.""" start="00:01:42.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I don't want one more.""" start="00:01:45.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And they require 500 lines of config.""" start="00:01:46.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I've tried it.""" start="00:01:49.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's a lot of maintenance for myself,""" start="00:01:50.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I still have those somewhere.""" start="00:01:53.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""The mu4e config or the gnus config.""" start="00:01:54.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""They struggle with Gmail's labels,""" start="00:01:57.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""threading, messages and deletion.""" start="00:01:59.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I find it tough, and it's either""" start="00:02:01.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""all in emacs or nothing.""" start="00:02:05.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It cannot be a combinatorial approach,""" start="00:02:07.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""is what I realized.""" start="00:02:10.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So I said, why can't we have both?""" start="00:02:11.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I want the org mode's focus""" start="00:02:13.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and Gmail's flexibility.""" start="00:02:15.960" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The org-gmail philosophy""" start="00:02:17.920" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Org-gmail philosophy is very simple.""" start="00:02:17.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You triage in Gmail.""" start="00:02:20.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Use the fast web UI for the easy stuff""" start="00:02:22.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and process in org mode.""" start="00:02:26.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Pull important threads where you do real work.""" start="00:02:27.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And of course, a two way sync is possible.""" start="00:02:30.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Changes flow both directions.""" start="00:02:33.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Big inspiration has been org-gcal.""" start="00:02:36.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I named it org-gmail because I saw org-gcal.""" start="00:02:39.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It was so cool.""" start="00:02:42.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I really wanted it.""" start="00:02:43.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Think of it like an org capture for email, but""" start="00:02:44.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""just bidirectional.""" start="00:02:47.720" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Architecture (the boring but important slide)""" start="00:02:49.440" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Alright, the architecture (boring, but important""" start="00:02:49.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""slide) is that Gmail interacts with Python via an""" start="00:02:53.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""API and interacts with Emacs Lisp.""" start="00:02:56.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""User commands, org formatting, all that magic is""" start="00:02:59.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""done on the Emacs side with Lisp.""" start="00:03:02.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Python side handles the Gmail API, OAuth,""" start="00:03:04.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""json wrangling and Gmail API handles""" start="00:03:09.141" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""the actual email data.""" start="00:03:12.408" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can do pip install, add to the load path, and""" start="00:03:13.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""10 minute OAuth setup, you are all set.""" start="00:03:17.680" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demo 1: From gmail to org""" start="00:03:21.200" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""We'll switch over to demo from gmail to org.""" start="00:03:21.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""How do you go about doing that?""" start="00:03:27.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I will start off with a demo folder that I have.""" start="00:03:29.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It has this tree structure.""" start="00:03:32.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Ignore the tilde files.""" start="00:03:35.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So this is what it contains.""" start="00:03:36.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""An org folder with all the working directory, the""" start="00:03:37.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""actual where the life of org mode is.""" start="00:03:41.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And I have a credentials.json, this is for logging""" start="00:03:44.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""into Gmail.""" start="00:03:48.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""This is a file that you can download.""" start="00:03:49.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""The instructions are in my README in the""" start="00:03:50.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""repository.""" start="00:03:53.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can find out how to get yourself a""" start="00:03:54.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""credentials.json.""" start="00:03:56.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's not very difficult.""" start="00:03:57.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Once you have these, you're all set.""" start="00:03:59.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""All you need to do is if you have straight or any""" start="00:04:01.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""of the other VC packages ready, that you can take""" start="00:04:05.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""a Git repository and have that in your folder, you""" start="00:04:08.540" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""can do that, or you can do it like this.""" start="00:04:11.501" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Have a Git clone.""" start="00:04:13.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Like I'm doing it right now.""" start="00:04:15.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Just clone it, keep it in.""" start="00:04:16.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And now you'll see""" start="00:04:19.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""that the Gmail is already there.""" start="00:04:20.875" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""There are two files that are really ultra""" start="00:04:23.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""important, which is, gmail_label_manager.py and""" start="00:04:25.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""org-gmail.el.""" start="00:04:28.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""These are the two files that do the email""" start="00:04:30.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""processing.""" start="00:04:31.900" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I have a plain vanilla Emacs""" start="00:04:33.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""that I'm going to use for the demo.""" start="00:04:35.200" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Settings""" start="00:04:37.480" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""These are a few settings""" start="00:04:37.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""that you will need in order to get going.""" start="00:04:39.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So one is the Gmail itself, the elisp, and the""" start="00:04:42.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Python script.""" start="00:04:45.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You'll need to require the package.""" start="00:04:47.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""The org agenda files need to be set.""" start="00:04:49.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If they're already there, then yes, it needs to""" start="00:04:52.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""include the org files.""" start="00:04:54.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Main settings are, you need an org file in order""" start="00:04:55.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""to download all the emails from Gmail.""" start="00:04:59.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You need the credentials path.""" start="00:05:02.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You need the Python script,""" start="00:05:03.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""wherever it is pointed to that.""" start="00:05:05.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""The date drawer, you can customize it""" start="00:05:07.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""to whatever you want.""" start="00:05:10.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I call it org-gmail.""" start="00:05:11.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can set it to ignore certain labels,""" start="00:05:12.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""not to download it.""" start="00:05:14.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You're not interested in certain labels""" start="00:05:15.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""being downloaded.""" start="00:05:17.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can set that""" start="00:05:18.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and process time out of 300 seconds.""" start="00:05:19.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""These are some things to keep life sane in this""" start="00:05:21.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""plain vanilla emacs.""" start="00:05:25.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So I have this refile targets and stuff.""" start="00:05:27.820" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's the main org-gmail settings are all here.""" start="00:05:30.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm going to eval this buffer so that we have all""" start="00:05:33.580" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""of it and we are all set.""" start="00:05:37.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So we have org-gmail ready to work right now.""" start="00:05:40.040" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Downloading""" start="00:05:43.040" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""The first thing I'm going to show you is""" start="00:05:43.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""org-gmail-download-by-label.""" start="00:05:44.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""This is the demo Gmail that I have.""" start="00:05:48.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""They all have some kind of test emails and I'm""" start="00:05:50.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""going to label them.""" start="00:05:53.620" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I've created this hierarchy of labels here based""" start="00:05:56.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""on Tiago Forte's PARA - Project, Area, Resources,""" start="00:06:00.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Archives structure.""" start="00:06:04.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""1Projects, DemoProject1, 2Areas, DemoArea,""" start="00:06:06.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""4Archives, 2025, OldProject.""" start="00:06:09.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I've labeled them inside my Gmail.""" start="00:06:12.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay, now let's go to Emacs and we will now""" start="00:06:14.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""download these things, but before downloading""" start="00:06:20.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""them, you will need to authenticate.""" start="00:06:23.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So for that, you can start""" start="00:06:26.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""with any org-gmail command.""" start="00:06:28.801" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So I'm going to take org-gmail-download-by-label.""" start="00:06:30.901" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""When I press that, it immediately opens a session""" start="00:06:35.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""in my browser.""" start="00:06:38.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay?""" start="00:06:40.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""What you can't see is a list of my Gmail accounts""" start="00:06:40.660" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""that I'm going to select.""" start="00:06:45.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm going to select my one Gmail account, and I'm""" start="00:06:46.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""going to show you the next screen.""" start="00:06:50.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So in this screen, you'll have to continue and""" start="00:06:53.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""select, and the authentication is completed.""" start="00:06:57.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So once it's, this is done, you can close this.""" start="00:06:59.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Come back to Emacs and you will have Select Gmail.""" start="00:07:02.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So it has tab support.""" start="00:07:09.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If you click tab, it will tell you""" start="00:07:10.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""what all labels are available.""" start="00:07:11.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I can pick anyone.""" start="00:07:13.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""1Projects/DemoProject1, and let's see what happens.""" start="00:07:16.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It starts downloading and it downloads.""" start="00:07:21.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And all three messages, four messages,""" start="00:07:26.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""five messages.""" start="00:07:28.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Six, seven.""" start="00:07:29.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""There are 11 messages in total,""" start="00:07:30.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and it's downloading all of them.""" start="00:07:33.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""~/demo/org/0Inbox.""" start="00:07:36.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's where I have it.""" start="00:07:40.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And here are the emails.""" start="00:07:42.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""They're all in org mode, format.""" start="00:07:44.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""All the emails are in here.""" start="00:07:46.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Since it's org mode,""" start="00:07:48.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""it can fold them all and you will see those emails.""" start="00:07:49.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So these are five emails""" start="00:07:52.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""that are present for the DemoProject1.""" start="00:07:54.280" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Replying""" start="00:07:56.880" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""The next one I wanted to show you was""" start="00:07:56.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""reply without leaving emacs.""" start="00:07:59.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's go back to emacs.""" start="00:08:01.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""How am I going to reply?""" start="00:08:04.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""org-gmail-reply-at-point.""" start="00:08:06.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's how I'm going to reply.""" start="00:08:09.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Reply all or reply.""" start="00:08:11.380" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay.""" start="00:08:13.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's first find out what is the email all about.""" start="00:08:13.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay.""" start="00:08:16.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""There's just one sender with just one recipient.""" start="00:08:16.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So the reply all or reply""" start="00:08:19.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""doesn't make a difference.""" start="00:08:21.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay?""" start="00:08:23.021" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So we will reply at point and if it's Reply All,""" start="00:08:23.701" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""it includes my own email as well.""" start="00:08:28.340" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""In this, my email is .mx.""" start="00:08:31.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay.""" start="00:08:34.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Cc, I can cc anybody I want and I won't do that.""" start="00:08:35.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I have a Gmail reply window.""" start="00:08:39.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Split window here.""" start="00:08:42.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""C-c C-c is what will send the reply.""" start="00:08:43.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""C-c C-k is what will cancel the reply.""" start="00:08:47.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I want to reply.""" start="00:08:50.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So let's say test reply from within emacs""" start="00:08:51.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and bala@balaramadurai.net""" start="00:08:57.780" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""should receive this email.""" start="00:09:00.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay.""" start="00:09:01.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Initial successfully reply sent for this email id.""" start="00:09:03.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay.""" start="00:09:07.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""A feature request I can already imagine is""" start="00:09:08.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""the reply also appearing at the bottom of this.""" start="00:09:11.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's not yet there.""" start="00:09:15.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""In the next version I will have that.""" start="00:09:16.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's check if I've have sent that email.""" start="00:09:18.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's check in the sent box.""" start="00:09:22.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I just checked in the sent and yes,""" start="00:09:25.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""a test reply from within emacs, does show up.""" start="00:09:29.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay, great.""" start="00:09:31.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That works.""" start="00:09:33.040" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Label management""" start="00:09:33.680" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""The third demo is going to be on label management.""" start="00:09:33.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""How do I manage labels?""" start="00:09:36.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's see.""" start="00:09:38.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's go back to emacs.""" start="00:09:39.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Suppose, I am not keen on this DemoProject1 for this.""" start="00:09:40.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It should belong to DemoArea, okay?""" start="00:09:46.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""For this thread itself doesn't belong to this.""" start="00:09:50.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's do org-gmail-edit-label-at-point.""" start="00:09:52.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Well, I don't want one project at all.""" start="00:09:57.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It should be under 2Areas/DemoArea.""" start="00:10:00.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I don't think it, it's not tab supported.""" start="00:10:05.900" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You should know this.""" start="00:10:08.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I will.""" start="00:10:09.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's another feature request.""" start="00:10:10.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""2Areas/DemoArea.""" start="00:10:11.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And when I say this, it should update it.""" start="00:10:14.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Yes, it has updated it.""" start="00:10:17.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So you can see that it has updated""" start="00:10:19.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""the label here as well.""" start="00:10:21.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""We can go check if it has indeed changed it""" start="00:10:22.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""in our... what is the name of the email?""" start="00:10:26.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's a test mail for one project demo""" start="00:10:29.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and the date is at 3 12.""" start="00:10:31.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's check if DemoArea has it.""" start="00:10:33.460" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's not refreshed, but there are two,""" start="00:10:36.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""two emails now under DemoArea.""" start="00:10:39.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's obviously done the job well.""" start="00:10:42.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's happening as expected.""" start="00:10:43.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I just turned this back from DemoArea to""" start="00:10:46.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""DemoProject1.""" start="00:10:49.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If you decide that I want to move all of""" start="00:10:50.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""DemoProject1 to archive, I'm done with the""" start="00:10:53.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""project.""" start="00:10:56.560" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Refiling""" start="00:10:57.160" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Oh, by the way, you could...""" start="00:10:57.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""that's the whole point""" start="00:10:58.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""of this is to have""" start="00:10:59.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""all of this refiled into your project,""" start="00:11:00.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""you can do that.""" start="00:11:05.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I don't know if I have that.""" start="00:11:06.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Yes, I have demo project one""" start="00:11:08.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and I could have emails and I created a node""" start="00:11:11.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and I moved everything there to that folder""" start="00:11:17.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""so that when I want to look at the demo project.""" start="00:11:20.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let me look at this.""" start="00:11:24.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""In that context, in the project context and email,""" start="00:11:25.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I have notes, let's say, and one of the emails is""" start="00:11:29.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""a note.""" start="00:11:33.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And I want to be able to keep it that way.""" start="00:11:34.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I could refile it and put it under notes as well,""" start="00:11:38.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""saying that this has some password, it has some""" start="00:11:41.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""reference that I need to have it there.""" start="00:11:44.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I can have it under notes as well.""" start="00:11:46.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So that's the advantage.""" start="00:11:48.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Once it's inside the org mode system, you can do""" start="00:11:49.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""many things that are usually org-modesy.""" start="00:11:52.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So you can do all of that within your org mode""" start="00:11:55.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""with emails, manipulate them, see it under a""" start="00:11:57.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""context, reply to that.""" start="00:12:00.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""All of that can happen""" start="00:12:01.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""right within your project context.""" start="00:12:02.575" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Archiving""" start="00:12:04.120" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""You're done with this project.""" start="00:12:04.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You want to move to archive.""" start="00:12:05.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So what you need to do is you don't have to be""" start="00:12:07.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""here, you can do it this from anywhere.""" start="00:12:09.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Bulk movement of labels, you can do it.""" start="00:12:11.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If you had consult, embark, ivy, or helm, this will""" start="00:12:15.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""show up as a dropdown and it looks neater.""" start="00:12:19.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""This, I'm using a vanilla emacs, so this is what""" start="00:12:22.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""you would see, but it has tab support.""" start="00:12:24.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can use that.""" start="00:12:26.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So I want to transfer 1Projects/DemoArea1, I want""" start="00:12:27.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""to move it to archive.""" start="00:12:32.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So let's say 4Archives is the folder.""" start="00:12:33.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So 4Archives/2025 already set this up.""" start="00:12:36.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I have not created this label in Gmail.""" start="00:12:41.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So do I need to go back to Gmail and create that?""" start="00:12:46.740" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""No, not at all.""" start="00:12:48.681" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can do this from the comfort of your org mode.""" start="00:12:49.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Go in here and enter this.""" start="00:12:52.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's see what happens.""" start="00:12:54.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So it found that it is not there.""" start="00:12:55.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So it created a new label and it's now moving all""" start="00:12:57.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""of the emails, all of those threads into archives""" start="00:13:01.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""without deleting 1Projects/DemoProject1.""" start="00:13:04.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So it still has 1Projects/DemoProject1 and it also""" start="00:13:07.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""updated the labels here.""" start="00:13:09.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So the project has been moved.""" start="00:13:10.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If you want to move it to archive this entire...""" start="00:13:12.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can do that too.""" start="00:13:15.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's see if it has archives.""" start="00:13:16.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Yes, it has archives and I have it...""" start="00:13:19.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""have a heading called 2025.""" start="00:13:21.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""My demo project can be moved there""" start="00:13:24.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and I'm done here.""" start="00:13:26.275" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""My project was done.""" start="00:13:27.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""All the emails are moved to archive.""" start="00:13:28.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So is this project from my project folder.""" start="00:13:30.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can integrate it into your workflow, your org""" start="00:13:32.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""mode workflow.""" start="00:13:34.920" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Action commands""" start="00:13:37.140" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Next, we have action commands.""" start="00:13:37.140" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""What all can you do with singular emails?""" start="00:13:39.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can do four things with single emails.""" start="00:13:41.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Delegate, defer, act on it or trash at point.""" start="00:13:45.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Defer.""" start="00:13:49.660" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Doesn't seem to work yet.""" start="00:13:50.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That is a snooze part.""" start="00:13:52.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Doesn't seem to work yet.""" start="00:13:53.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's another bug.""" start="00:13:54.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's the second bug I have in my package.""" start="00:13:55.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""But the rest of them work.""" start="00:13:58.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Delegate is to move it to somebody so they can do""" start="00:13:59.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""the job.""" start="00:14:02.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Act is you will do it with a context with a to-do""" start="00:14:03.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""which will show up in your agenda.""" start="00:14:06.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Trash the email from your Gmail, and you are done.""" start="00:14:08.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay, let's do that.""" start="00:14:10.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's go back to emacs.""" start="00:14:12.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I just moved everything back to DemoProject1.""" start="00:14:13.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I moved everything back so that I can demonstrate""" start="00:14:18.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""the four actions that I'm showing.""" start="00:14:20.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""At least three actions.""" start="00:14:22.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""One of them doesn't work yet.""" start="00:14:23.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So if I want to delegate it to somebody in this""" start="00:14:25.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""case myself, but I can delegate it""" start="00:14:30.180" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""to anybody I want.""" start="00:14:31.608" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So how do I do that so I can delegate this, or""" start="00:14:32.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""delegate is org-gmail-delegate-at-point.""" start="00:14:36.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Move the cursor to the email, delegate it to this""" start="00:14:38.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""guy balaramadurai.net.""" start="00:14:42.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can add a note saying,""" start="00:14:44.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Hey, act on task quickly.""" start="00:14:46.608" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Boss is watching.""" start="00:14:50.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay?""" start="00:14:53.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So you can say yes, and this thread gets forwarded""" start="00:14:54.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""to your colleague""" start="00:14:59.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and so that they can take this up.""" start="00:15:01.441" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It has indeed arrived here.""" start="00:15:03.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can see.""" start="00:15:05.820" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Boss is watching.""" start="00:15:07.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""The test reply was also arrived here.""" start="00:15:08.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can also see that email.""" start="00:15:11.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So that was delegate.""" start="00:15:13.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So how do we set up actions?""" start="00:15:15.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So let's not mess this email.""" start="00:15:18.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""This is the second email.""" start="00:15:21.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""How do you act""" start="00:15:22.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""on it?""" start="00:15:23.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's an action you set for yourself is add""" start="00:15:24.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""action at point, and you do that.""" start="00:15:27.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""What action can you set for yourself?""" start="00:15:31.001" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Write a long report using an LLM.""" start="00:15:32.941" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay, so it's changed the status to a to-do task.""" start="00:15:38.620" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And the to-do is right here.""" start="00:15:42.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Now, here you can schedule it""" start="00:15:44.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""to say tomorrow 9:00 AM.""" start="00:15:47.834" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So there you go.""" start="00:15:50.701" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""At 9:00 AM I'll be looking at this.""" start="00:15:51.801" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Org Agenda""" start="00:15:53.680" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Now here's the cool part.""" start="00:15:53.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can actually find the whole thing""" start="00:15:55.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""in org agenda.""" start="00:15:58.934" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So my entire email threads""" start="00:16:00.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""are all in the org agenda.""" start="00:16:03.268" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""They're all present here and my task associated is""" start="00:16:05.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""also here in the agenda.""" start="00:16:09.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""This is marked TODO,""" start="00:16:11.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""means I haven't acted on that email.""" start="00:16:12.768" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's still pending.""" start="00:16:14.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And what do I have to do is right here within""" start="00:16:16.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""here, which is the action that I have to carry on""" start="00:16:19.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""in the DemoProject1.""" start="00:16:21.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can see that demo project one""" start="00:16:22.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""is showing up in the bottom.""" start="00:16:24.534" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay. It's cool way you can also see it in the agenda.""" start="00:16:25.740" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Trash""" start="00:16:28.280" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""I am not interested in this email at all.""" start="00:16:28.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's say I, I want to delete it.""" start="00:16:31.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's see.""" start="00:16:33.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Yes, I finished the task.""" start="00:16:33.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Now the task is finished.""" start="00:16:35.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I really don't want to see this email, this""" start="00:16:37.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""message alone.""" start="00:16:40.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Alright.""" start="00:16:40.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Easy peasy.""" start="00:16:42.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's do Gmail Trash at point.""" start="00:16:42.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And you say, message,""" start="00:16:46.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I don't want to delete the entire thread.""" start="00:16:48.021" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Yes.""" start="00:16:49.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Delete it.""" start="00:16:50.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Delete the message alone.""" start="00:16:51.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And it's gone.""" start="00:16:53.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""But it's not gone.""" start="00:16:54.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's gone to the trash.""" start="00:16:56.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""The entire subtree was deleted""" start="00:16:57.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and we have a clean flow here.""" start="00:16:59.734" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I have archived, it is still in the archive, but""" start="00:17:01.881" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""it's still active according to my Gmail folder.""" start="00:17:04.480" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Real workflow: GTD""" start="00:17:07.440" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Next I'm going to show you is""" start="00:17:07.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""real workflow capture.""" start="00:17:09.575" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can use label in email with ToProcess""" start="00:17:12.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""downloaded to the inbox.org, and do one of these""" start="00:17:15.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""you've already seen.""" start="00:17:19.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Later still doesn't work.""" start="00:17:20.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I will get it to work, but hopefully by the time""" start="00:17:22.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""the conference is up, you will have the feature up""" start="00:17:25.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and ready.""" start="00:17:28.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Rest of the stuff works, delegate works, trash""" start="00:17:29.400" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""works, and add action works.""" start="00:17:32.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""We are in weekly review can have an email context,""" start="00:17:34.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""not just links to an external URL.""" start="00:17:37.480" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Real Workflow: P.A.R.A.""" start="00:17:40.560" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""In the P.A.R.A Our Project, Areas, Resources and""" start="00:17:40.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Archives structure, you can have Gmail labels""" start="00:17:46.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""mirror your PARA structure.""" start="00:17:50.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can have that within your org mode structure,""" start="00:17:51.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and you can mimic that very well.""" start="00:17:53.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""All the emails embedded in your own structure and""" start="00:17:56.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""you can download it by label""" start="00:17:59.420" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""in the place you want.""" start="00:18:02.068" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm still working on that feature where you can""" start="00:18:03.521" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""have it inside the project structure itself rather""" start="00:18:05.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""than an index.org.""" start="00:18:08.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It'll take some time, but I will do it.""" start="00:18:09.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""But right now you can refile it once it's in the""" start="00:18:11.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""index.org or any other file you choose, and then""" start="00:18:14.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""you can bulk move labels to archive and move that""" start="00:18:17.460" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""entire project repository to""" start="00:18:21.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""your archive also. That works very well.""" start="00:18:23.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And your org files and Gmail stay in sync""" start="00:18:26.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""effortlessly, and the whole email part of it""" start="00:18:29.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""becomes part of your knowledge management system.""" start="00:18:33.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Okay.""" start="00:18:35.240" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What this is NOT""" start="00:18:35.960" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""We have reached the end of the demo.""" start="00:18:35.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Hopefully you understood""" start="00:18:37.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""what org-gmail was all about.""" start="00:18:39.668" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If you have any questions, let me know, but some""" start="00:18:41.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""bits of warning, I wanted to give you what this""" start="00:18:44.640" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""package is not, it's not a full fledged email""" start="00:18:47.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""client.""" start="00:18:50.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's meant for label management and importing some""" start="00:18:50.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""emails that you wanted or you're interested in to""" start="00:18:55.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""the context of your projects or areas or your GTD""" start="00:18:58.740" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""context.""" start="00:19:02.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It is not a replacement for gnus, mu4e or notmuch.""" start="00:19:02.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It is not a way to read all your emails in emacs.""" start="00:19:07.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It cannot handle a large server load for sure.""" start="00:19:10.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It is not offline capable.""" start="00:19:13.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It needs API access.""" start="00:19:15.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So bear that in mind.""" start="00:19:17.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""What it is, is a bridge between""" start="00:19:19.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""gmail and org mode.""" start="00:19:22.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's a way to manage important email threads.""" start="00:19:23.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So you can keep updating threads.""" start="00:19:27.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Whenever there's a reply, you keep downloading it""" start="00:19:29.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""to that thread.""" start="00:19:32.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If you want to keep track of what's going on, what""" start="00:19:32.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""is the logical way you can all see it.""" start="00:19:35.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can even use ellama or one of those to make""" start="00:19:37.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""sense of the conversation.""" start="00:19:40.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""If it's a long longish thread, it's a power tool""" start="00:19:42.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""for the getting things done or Tiago Forte's PARA""" start="00:19:45.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""method.""" start="00:19:49.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I've used PARA for a long time now.""" start="00:19:49.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm a power user of PARA, so to speak, so I find""" start="00:19:52.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""this extremely useful myself.""" start="00:19:54.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's about 800 lines of Python""" start="00:19:56.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and about 300 to 500 lines of elisp.""" start="00:19:59.068" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It's usable in 10 minutes, but can remain powerful""" start="00:20:02.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""for years.""" start="00:20:07.000" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Technical decisions""" start="00:20:07.680" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""So some technical decisions that I took.""" start="00:20:07.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Why Python plus Gmail, API.""" start="00:20:10.600" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Gmail API is better at handling than an imap with""" start="00:20:13.420" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""all the other metadata.""" start="00:20:17.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I found it easier.""" start="00:20:19.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Python has excellent Google API libraries.""" start="00:20:20.200" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Email calls Python via the call-process.""" start="00:20:22.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""json is the interchange format.""" start="00:20:25.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Why not pure elisp?""" start="00:20:27.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""For one, OAuth 2.0 flow is a bit complex.""" start="00:20:29.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I found it a bit complex to meander on.""" start="00:20:33.800" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's probably why it took me three years, 364""" start="00:20:35.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""days to get over it.""" start="00:20:38.140" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Gmail API Client libraries are mature, easier to""" start="00:20:40.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""test/debug separately and lets emacs do what it""" start="00:20:43.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""does best, which is text editing.""" start="00:20:48.460" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Pragmatism over purity, the emacs way since 1976.""" start="00:20:50.160" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Roadmap""" start="00:20:54.760" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Okay, some roadmap here.""" start="00:20:54.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""But near term I want better error messages.""" start="00:20:57.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It still gives me python error messages.""" start="00:21:00.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""There are some asynchronous operations there's no""" start="00:21:02.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""blocking going on.""" start="00:21:05.040" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It needs a search integration soon.""" start="00:21:06.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Attachment I have not yet touched.""" start="00:21:08.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""That's a big big if, I don't know how to integrate""" start="00:21:11.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""with org-attach, I'm still wondering how to do""" start="00:21:13.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""that.""" start="00:21:15.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Perhaps I should be able to interact with Outlook""" start="00:21:16.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""also, fast mail, proton mail.""" start="00:21:19.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I don't know AI summaries of thread.""" start="00:21:21.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm thinking ellama could do it, but I'm not very""" start="00:21:24.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""sure.""" start="00:21:27.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Calendar integration is a nice idea, but org-gcal""" start="00:21:28.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""and org gmail...""" start="00:21:32.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""How will they interact?""" start="00:21:33.320" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""How will that work?""" start="00:21:34.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm still not sure. I use them separately.""" start="00:21:35.840" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And any other feature requests that you may have,""" start="00:21:37.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""just let me know.""" start="00:21:40.600" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Contributing""" start="00:21:41.440" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""What I may need help with if you have the time and""" start="00:21:41.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""you're interested in this project, is to test it""" start="00:21:44.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""on macOS and Windows.""" start="00:21:47.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I use Linux.""" start="00:21:49.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I use it on Debian.""" start="00:21:50.160" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It works fine.""" start="00:21:51.760" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""OAuth edge cases.""" start="00:21:52.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm not sure how it works.""" start="00:21:54.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""It shows me some error or the other""" start="00:21:55.720" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""here and there.""" start="00:21:57.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Definitely documentation needs improvements.""" start="00:21:58.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Other email provider expertise will be welcome.""" start="00:22:00.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""What's ready is, GitHub repo with issues.""" start="00:22:04.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""You can start with that could be great if you can""" start="00:22:07.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""tell me some issues with that.""" start="00:22:10.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Some kind of development guide.""" start="00:22:11.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I am not a programmer.""" start="00:22:13.880" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I vibe-coded most of it.""" start="00:22:15.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""So a development guide, a true blood developer,""" start="00:22:18.080" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""if they can come and tell me,""" start="00:22:20.920" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""here is what you should be doing,""" start="00:22:22.480" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm more than happy to listen to that.""" start="00:22:24.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""And probably a test suite.""" start="00:22:26.240" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I do that manually.""" start="00:22:27.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""All of this, some kind of help with that""" start="00:22:28.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""will also work.""" start="00:22:31.240" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The big picture""" start="00:22:32.940" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""The big picture is org-mode and Gmail""" start="00:22:32.940" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""can be friends.""" start="00:22:36.560" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""They can bond over a cup of coffee.""" start="00:22:37.680" video="mainVideo-gmail" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Let's connect""" start="00:22:41.120" video="mainVideo-gmail" id="subtitle"]]</div>[[!template text="""Let's connect.""" start="00:22:41.120" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Here are my details and I am all game to listen to""" start="00:22:41.960" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""your question and answers.""" start="00:22:47.660" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I'm happy to give you any answer or responses that""" start="00:22:48.680" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""I find.""" start="00:22:51.280" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Please do connect with me on LinkedIn. I have my""" start="00:22:52.000" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""website here, and please do fork or install""" start="00:22:54.440" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""org-gmail and let me know what you think.""" start="00:22:58.360" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Let's talk about taming email.""" start="00:23:00.520" video="mainVideo-gmail" id="subtitle"]]
+[[!template text="""Thank you very much.""" start="00:23:02.760" video="mainVideo-gmail" id="subtitle"]]
+
+</div><div class="transcript transcript-qanda"><a name="gmail-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""I first of all want to address the feedback.""" start="00:00:00.000" video="qanda-gmail" id="subtitle"]]
+[[!template text="""You're absolutely right. I should have stuck to one theme.""" start="00:00:02.220" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Unfortunately, I was using vanilla Emacs""" start="00:00:06.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and not my own config.""" start="00:00:09.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So to show that it can work, apologies for that.""" start="00:00:10.300" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I will keep that in mind the next time I do such a demo.""" start="00:00:13.460" video="qanda-gmail" id="subtitle"]]
+[[!template text="""The first question, I mean, the feedback was considered""" start="00:00:18.420" video="qanda-gmail" id="subtitle"]]
+[[!template text="""using similar background dark only""" start="00:00:21.540" video="qanda-gmail" id="subtitle"]]
+[[!template text="""or light only throughout the help,""" start="00:00:23.820" video="qanda-gmail" id="subtitle"]]
+[[!template text="""throughout the help with iStream.""" start="00:00:25.420" video="qanda-gmail" id="subtitle"]]
+[[!template text="""The question, the first question is,""" start="00:00:29.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""should I know all my contact email address by heart""" start="00:00:31.820" video="qanda-gmail" id="subtitle"]]
+[[!template text="""or is some kind of contact list?""" start="00:00:35.420" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Unfortunately, right now, this is just to get started.""" start="00:00:38.500" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So it is, you have to know it by heart,""" start="00:00:42.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""but I take this as feedback.""" start="00:00:45.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I will write this down for myself as a feature request.""" start="00:00:47.620" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I will make sure that all contacts""" start="00:00:51.340" video="qanda-gmail" id="subtitle"]]
+[[!template text="""or some kind of tab support is present for email addresses.""" start="00:00:53.780" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I do not use the org system for replying so much.""" start="00:00:58.420" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I use it for knowing the context.""" start="00:01:03.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So I don't really reply using the org mode itself to reply.""" start="00:01:06.260" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So I did not focus on that feature. But this is doable.""" start="00:01:12.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""We can certainly add a tab support""" start="00:01:16.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""for any contacts that you may have, org contacts.""" start="00:01:18.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Or I don't know if there's any other package that does that.""" start="00:01:24.620" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So if it is, let me know.""" start="00:01:28.060" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Org contacts is what comes to my mind.""" start="00:01:29.700" video="qanda-gmail" id="subtitle"]]
+[[!template text="""The second question is, what would it take""" start="00:01:33.900" video="qanda-gmail" id="subtitle"]]
+[[!template text="""to use the org pieces of this with?""" start="00:01:36.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""offline IMAP or other non Gmail mail setups.""" start="00:01:40.140" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I use fast mail.""" start="00:01:45.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Currently, I use only Gmail because that's my workflow""" start="00:01:46.060" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and it works with a Gmail API.""" start="00:01:52.780" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So which means the Python script that goes along with it""" start="00:01:58.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""only works with Gmail and no other system for now.""" start="00:02:00.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""This is the current package.""" start="00:02:05.180" video="qanda-gmail" id="subtitle"]]
+[[!template text="""However, yes, I will note this down.""" start="00:02:06.940" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I don't know what it will take""" start="00:02:09.460" video="qanda-gmail" id="subtitle"]]
+[[!template text="""to include this offline IMAP setup""" start="00:02:12.060" video="qanda-gmail" id="subtitle"]]
+[[!template text="""or any other non-Gmail setup.""" start="00:02:16.380" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Let me tinker with it and find out what it will involve.""" start="00:02:18.500" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So give me some time, maybe I will get to it.""" start="00:02:23.140" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Sorry, sorry. Oops. Okay. Okay. May I continue?""" start="00:02:30.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Hi, Bella. Yes, please. Sorry for the confusion.""" start="00:02:43.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Hi, Amin. All right. So the next one is,""" start="00:02:46.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""do you worry about sending some info to a wrong person""" start="00:02:53.180" video="qanda-gmail" id="subtitle"]]
+[[!template text="""due to some unseen technical issues,""" start="00:02:56.940" video="qanda-gmail" id="subtitle"]]
+[[!template text="""for example, due to memory overflow?""" start="00:02:58.900" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Again, I have not been focusing""" start="00:03:03.300" video="qanda-gmail" id="subtitle"]]
+[[!template text="""on replying from within Emacs.""" start="00:03:05.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""so much, or using my package,""" start="00:03:07.140" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I usually do it through the Gmail interface.""" start="00:03:09.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I usually use this to get the context within the project,""" start="00:03:13.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""download all the emails, make sure that I have acted on emails""" start="00:03:18.300" video="qanda-gmail" id="subtitle"]]
+[[!template text="""which Gmail doesn't do so well.""" start="00:03:22.060" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I don't know what the action is.""" start="00:03:23.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I don't want to use Gmail as a to-do list.""" start="00:03:25.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Org Mode is great at this.""" start="00:03:28.500" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Any work I have to do, any reports I have to compile,""" start="00:03:30.147" video="qanda-gmail" id="subtitle"]]
+[[!template text="""all of that Org Mode does. I don't use it for replying""" start="00:03:32.647" video="qanda-gmail" id="subtitle"]]
+[[!template text="""or doing its actions around the email, which I focus on.""" start="00:03:39.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""But point taken, let me see""" start="00:03:43.460" video="qanda-gmail" id="subtitle"]]
+[[!template text="""if there is a like Gmail offers.""" start="00:03:45.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""you know, for 10 seconds or something you can still undo""" start="00:03:47.780" video="qanda-gmail" id="subtitle"]]
+[[!template text="""so that it doesn't go out of your email""" start="00:03:52.220" video="qanda-gmail" id="subtitle"]]
+[[!template text="""if you made a mistake or if there's a problem with your,""" start="00:03:54.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""you know, Gmail or email sending should sort of stop.""" start="00:03:59.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Let me think about that.""" start="00:04:04.620" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So, I've not paid attention to that,""" start="00:04:07.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""but I'll take your point.""" start="00:04:09.397" video="qanda-gmail" id="subtitle"]]
+[[!template text="""The next one, you should say what org-gmail is""" start="00:04:11.105" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and not its goals and non-goals,""" start="00:04:17.540" video="qanda-gmail" id="subtitle"]]
+[[!template text="""which in this case is more helpful""" start="00:04:20.220" video="qanda-gmail" id="subtitle"]]
+[[!template text="""to help people get their head around this.""" start="00:04:22.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""You had some good ones in your slides,""" start="00:04:24.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""but not your GitHub page. Okay, great.""" start="00:04:26.380" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Okay, so I will definitely take""" start="00:04:28.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""the information from the slides""" start="00:04:30.580" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and give it to, I mean, put it back into my readme.""" start="00:04:33.780" video="qanda-gmail" id="subtitle"]]
+[[!template text="""It's been a while since I updated ReadMe,""" start="00:04:38.500" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and you're absolutely right.""" start="00:04:40.180" video="qanda-gmail" id="subtitle"]]
+[[!template text="""It probably doesn't say why you need org email.""" start="00:04:42.180" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So that would be definitely something that I can do.""" start="00:04:45.780" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Wanting to add the goal is an easier way""" start="00:04:49.060" video="qanda-gmail" id="subtitle"]]
+[[!template text="""to add one-off email into org mode""" start="00:04:51.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and org agenda workflows and first.""" start="00:04:53.820" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Love seeing a different way""" start="00:04:56.420" video="qanda-gmail" id="subtitle"]]
+[[!template text="""of looking at and working with email.""" start="00:04:57.780" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Thank you so much for that.""" start="00:04:59.540" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Yes, that's the idea here is if we can integrate email""" start="00:05:00.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and I think there is memacs, you know,""" start="00:05:05.620" video="qanda-gmail" id="subtitle"]]
+[[!template text="""that's one package that I love.""" start="00:05:08.340" video="qanda-gmail" id="subtitle"]]
+[[!template text="""It can integrate all of the other stuff into your org mode.""" start="00:05:11.580" video="qanda-gmail" id="subtitle"]]
+[[!template text="""That worked, but I like email and dealing with email.""" start="00:05:17.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""That is my single source of truth outside of org mode.""" start="00:05:21.540" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So that's the only one I need for now.""" start="00:05:26.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And I like seeing the action""" start="00:05:28.820" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and the history on my org agenda.""" start="00:05:32.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""That's one of the reasons why I built this package.""" start="00:05:35.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And I hope that answers that.""" start="00:05:37.260" video="qanda-gmail" id="subtitle"]]
+[[!template text="""There is one more saying, how does it handle attachments?""" start="00:05:43.700" video="qanda-gmail" id="subtitle"]]
+[[!template text="""If it doesn't, do you have a plan to add this feature?""" start="00:05:49.460" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Attachments is a bit tricky for me right now""" start="00:05:52.820" video="qanda-gmail" id="subtitle"]]
+[[!template text="""because I don't understand org-attach so well.""" start="00:05:55.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I don't use org-attach, but you're absolutely right.""" start="00:05:58.620" video="qanda-gmail" id="subtitle"]]
+[[!template text="""It does make sense to have org-attach also.""" start="00:06:01.300" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And it's definitely in my plan to include org-attach.""" start="00:06:05.340" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I don't think I talked about it in my talk,""" start="00:06:08.260" video="qanda-gmail" id="subtitle"]]
+[[!template text="""but I definitely have that idea.""" start="00:06:12.460" video="qanda-gmail" id="subtitle"]]
+[[!template text="""First I have to wrap myself, my head""" start="00:06:14.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""around the idea of org-attach and how it,""" start="00:06:17.340" video="qanda-gmail" id="subtitle"]]
+[[!template text="""because I don't like, what I don't like about org-attach,""" start="00:06:21.340" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I'll tell you, is default is,""" start="00:06:26.060" video="qanda-gmail" id="subtitle"]]
+[[!template text="""it opens a new folder called data""" start="00:06:28.900" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and there are, it uses a unique code""" start="00:06:31.700" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and there are subfolders in it, which I do not appreciate""" start="00:06:34.380" video="qanda-gmail" id="subtitle"]]
+[[!template text="""because I want all those files also to be within the same context.""" start="00:06:37.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""of my project or area.""" start="00:06:43.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And that's one of the reasons I, and I'm sure you can customize that.""" start="00:06:45.780" video="qanda-gmail" id="subtitle"]]
+[[!template text="""There are ways to do that,""" start="00:06:50.860" video="qanda-gmail" id="subtitle"]]
+[[!template text="""but I have to pay more attention to this.""" start="00:06:52.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""Right now, all of the attachments are dealt with in Gmail,""" start="00:06:55.380" video="qanda-gmail" id="subtitle"]]
+[[!template text="""which is not a good system to handle that""" start="00:06:58.730" video="qanda-gmail" id="subtitle"]]
+[[!template text="""because it's so out of context.""" start="00:07:01.220" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And there are like 25 contexts in the same inbox,""" start="00:07:03.580" video="qanda-gmail" id="subtitle"]]
+[[!template text="""which I do not appreciate.""" start="00:07:06.380" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So even the attachments are like that.""" start="00:07:08.420" video="qanda-gmail" id="subtitle"]]
+[[!template text="""But Org Mode has a much better way of handling it,""" start="00:07:11.060" video="qanda-gmail" id="subtitle"]]
+[[!template text="""or Emacs has a much better way of handling it.""" start="00:07:13.540" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I will definitely put my attention""" start="00:07:16.100" video="qanda-gmail" id="subtitle"]]
+[[!template text="""to this and get this feature out.""" start="00:07:20.340" video="qanda-gmail" id="subtitle"]]
+[[!template text="""This is all customer feedback for me, so to speak.""" start="00:07:22.220" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So I would definitely request all of you to try it out.""" start="00:07:25.300" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And tell me, you know, good""" start="00:07:30.180" video="qanda-gmail" id="subtitle"]]
+[[!template text="""or bad things about the package.""" start="00:07:32.180" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And you've been very candid so far. Please be so.""" start="00:07:34.940" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So, you know, so be it that be candid with your feedback""" start="00:07:38.620" video="qanda-gmail" id="subtitle"]]
+[[!template text="""and I will get to know how to go with this.""" start="00:07:43.540" video="qanda-gmail" id="subtitle"]]
+[[!template text="""With so much, I mean, I'm not an expert in Elisp,""" start="00:07:46.700" video="qanda-gmail" id="subtitle"]]
+[[!template text="""but I have a workaround, which is I have generative AI support,""" start="00:07:49.700" video="qanda-gmail" id="subtitle"]]
+[[!template text="""which has done well with me.""" start="00:07:57.020" video="qanda-gmail" id="subtitle"]]
+[[!template text="""I test the software better, so I can use the generative AI""" start="00:07:58.340" video="qanda-gmail" id="subtitle"]]
+[[!template text="""to help me with the coding,""" start="00:08:03.660" video="qanda-gmail" id="subtitle"]]
+[[!template text="""but I can test it so that it works for me.""" start="00:08:05.140" video="qanda-gmail" id="subtitle"]]
+[[!template text="""And I would request your help""" start="00:08:08.540" video="qanda-gmail" id="subtitle"]]
+[[!template text="""also in testing this software.""" start="00:08:10.740" video="qanda-gmail" id="subtitle"]]
+[[!template text="""So for sure. Thank you so much for your question.""" start="00:08:13.260" video="qanda-gmail" id="subtitle"]]
+[[!template text="""If there are any more, I can definitely answer them.""" start="00:08:16.180" video="qanda-gmail" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [bala@balaramadurai.net](mailto:bala@balaramadurai.net?subject=Comment%20for%20EmacsConf%202023%20gmail%3A%20org-gmail%3A%20A%20deep%20integration%20of%20Gmail%20into%20your%20Org%20Mode)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/gmail-before.md b/2025/info/gmail-before.md
new file mode 100644
index 00000000..ffb75f0c
--- /dev/null
+++ b/2025/info/gmail-before.md
@@ -0,0 +1,46 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 24-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-gmail>
+Etherpad: <https://pad.emacsconf.org/2025-gmail>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-gmail"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--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="mainVideo-gmail" data="""
+00:00.000 Before we begin
+00:19.840 The 4-year overnight success
+01:02.800 The real title
+01:15.600 Why not gnus/mu4e/notmuch?
+01:34.280 The honest answer
+02:17.920 The org-gmail philosophy
+02:49.440 Architecture (the boring but important slide)
+03:21.200 Demo 1: From gmail to org
+04:37.480 Settings
+05:43.040 Downloading
+07:56.880 Replying
+09:33.680 Label management
+10:57.160 Refiling
+12:04.120 Archiving
+13:37.140 Action commands
+15:53.680 Org Agenda
+16:28.280 Trash
+17:07.440 Real workflow: GTD
+17:40.560 Real Workflow: P.A.R.A.
+18:35.960 What this is NOT
+20:07.680 Technical decisions
+20:54.760 Roadmap
+21:41.440 Contributing
+22:32.940 The big picture
+22:41.120 Let's connect
+
+"""]]<div></div>Duration: 23:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gmail">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--script.txt">Download --script.txt</a></li><li><a href="https://youtu.be/8P93UBYrUB8">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-gmail"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 24:55 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gmail">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.m4v">Download --answers.m4v (43MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--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/2025/info/gmail-nav.md b/2025/info/gmail-nav.md
new file mode 100644
index 00000000..57a28521
--- /dev/null
+++ b/2025/info/gmail-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/reference">Emacs as a fully-fledged reference manager</a>
+Next by track: <a href="/2025/talks/gnus">Reading and writing emails in GNU Emacs with Gnus</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/gnus-after.md b/2025/info/gnus-after.md
new file mode 100644
index 00000000..f29245e8
--- /dev/null
+++ b/2025/info/gnus-after.md
@@ -0,0 +1,790 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="gnus-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:02.620" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""Hello, my name is Amin Bandali,""" start="00:00:02.620" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and today I'd like to talk about""" start="00:00:04.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""reading and writing emails in GNU Emacs""" start="00:00:06.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""using Gnus specifically.""" start="00:00:08.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Gnus has had this sort of reputation""" start="00:00:14.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of being difficult to approach and configure.""" start="00:00:16.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""That's understandable""" start="00:00:20.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""because it has many, many options""" start="00:00:23.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and major and minor modes""" start="00:00:26.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that interact in different ways with each other.""" start="00:00:27.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And it also doesn't help that Gnus started originally""" start="00:00:30.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""as a newsreader""" start="00:00:35.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""rather than a mail client.""" start="00:00:36.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So a lot of the terminology that it uses""" start="00:00:38.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is also rooted in that,""" start="00:00:40.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""in reading and writing news.""" start="00:00:42.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""But nevertheless, with this video and talk,""" start="00:00:45.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I hope to provide a sort""" start="00:00:48.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of very quick introduction""" start="00:00:52.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of starting to use Gnus""" start="00:00:55.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to read and write email and send it.""" start="00:00:57.540" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We will use Gnus' IMAP support,""" start="00:01:00.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""mainly because a lot of people""" start="00:01:02.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""these days have email accounts""" start="00:01:06.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with mail service providers""" start="00:01:08.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that support IMAP,""" start="00:01:10.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which is an open standard.""" start="00:01:12.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So it's widely available and supported""" start="00:01:14.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""across many different providers""" start="00:01:17.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""as well as mail clients or mail user agents as well.""" start="00:01:19.720" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demo""" start="00:01:25.240" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""Okay, so let's just jump straight right in.""" start="00:01:25.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I will enter this demo directory that I created""" start="00:01:30.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for the purposes of this demonstration""" start="00:01:34.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and change my home directory to this one""" start="00:01:36.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so that we can safely experiment with Gnus here.""" start="00:01:41.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""For this presentation, I've written up""" start="00:01:49.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""a quick initialization file or init file""" start="00:01:53.980" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that I will share afterwards as well""" start="00:01:56.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to get us going with Gnus.""" start="00:01:59.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""There's not much to it at the moment.""" start="00:02:01.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Just set up the package archives and""" start="00:02:04.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""install the keycast package""" start="00:02:07.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for showing the key presses in the mode line.""" start="00:02:09.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, that's about it.""" start="00:02:14.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And I'll also define""" start="00:02:15.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""a little like inline function +emacs.d""" start="00:02:16.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that allows me to conveniently write""" start="00:02:20.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and have it expanded""" start="00:02:24.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""or refer to files and directories, rather,""" start="00:02:26.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""paths that we could expand,""" start="00:02:29.301" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""inside my Emacs configuration directory.""" start="00:02:30.901" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I also have this eval-last-sexp""" start="00:02:32.834" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""bound to a global key,""" start="00:02:37.501" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so that I will be able to easily""" start="00:02:41.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""use it for this talk.""" start="00:02:43.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Okay, let's jump right in.""" start="00:02:47.520" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Don't panic""" start="00:02:49.960" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""First things first, don't panic.""" start="00:02:49.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And that's actually also the name""" start="00:02:52.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of the very first node""" start="00:02:55.268" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""in the Gnus manual when you open it.""" start="00:02:58.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And it's actually nice.""" start="00:03:01.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I definitely, definitely recommend""" start="00:03:02.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that you look through""" start="00:03:04.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""at least the very first couple of chapters of this,""" start="00:03:07.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""skim through it, and later on refer to it""" start="00:03:10.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""whenever you find something confusing""" start="00:03:14.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""or don't understand it.""" start="00:03:16.134" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""But yeah, we'll start""" start="00:03:19.500" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with these two paragraphs here.""" start="00:03:21.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So again, a Gnus installation""" start="00:03:22.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is basically just a list of one or more servers""" start="00:03:23.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and the subscribed groups from those servers""" start="00:03:28.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and articles in those groups.""" start="00:03:30.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""You can already kind of see""" start="00:03:32.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""where that influence of a newsreader comes in.""" start="00:03:34.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""But yeah, basically what it's saying is that,""" start="00:03:39.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""you know, we have one or more servers.""" start="00:03:41.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can think of them as email servers.""" start="00:03:43.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Groups can be like, we can think""" start="00:03:47.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of them as folders or directories.""" start="00:03:49.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And yeah, articles,""" start="00:03:52.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""those would be like our email messages.""" start="00:03:55.240" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Configuring servers""" start="00:03:58.560" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""With Gnus, we can add""" start="00:03:58.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and configure servers mainly using two variables.""" start="00:03:59.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""One of them is the gnus-select-method""" start="00:04:06.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and the other is gnus-secondary-select-methods.""" start="00:04:07.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""The first one predates the second one""" start="00:04:11.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and I generally don't recommend using it, because""" start="00:04:15.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""first of all, it can only point""" start="00:04:17.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to one server, and that server,""" start="00:04:22.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""because it's the primary,""" start="00:04:26.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""then Gnus won't add a prefix to its groups,""" start="00:04:27.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so later on, as you get into""" start="00:04:32.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""more advanced features of Gnus""" start="00:04:34.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and, for example, want to write rules""" start="00:04:36.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to modify your message composition""" start="00:04:38.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""in a way for certain groups, or file mail,""" start="00:04:42.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""automatically classify mail,""" start="00:04:47.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""this distinction can become""" start="00:04:48.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""confusing and annoying.""" start="00:04:51.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""My recommendation is to always and only use""" start="00:04:53.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""the gnus-secondary-select-methods.""" start="00:04:57.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, so let's do that here.""" start="00:05:01.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I'm gonna uncomment this portion.""" start="00:05:07.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So here, I set the primary select method to nil,""" start="00:05:10.300" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and the second one, I define an nnimap server""" start="00:05:16.420" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of the nnimap backend.""" start="00:05:24.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I give it the name ec25gnus.""" start="00:05:30.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""What I want it to do is to""" start="00:05:32.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""connect to my mail server,""" start="00:05:35.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which is at this address,""" start="00:05:37.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and fetch emails from it over TLS with this username.""" start="00:05:41.080" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text=""".authinfo""" start="00:05:46.240" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""And then the passwords or the credentials,""" start="00:05:46.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""you can put them in the .authinfo file.""" start="00:05:50.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Normally, you would want to, for example,""" start="00:05:56.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""encrypt this file with your GPG key.""" start="00:05:58.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""But for this demonstration, I haven't.""" start="00:06:03.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So yeah, the format is the keyword &quot;machine&quot;""" start="00:06:06.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""followed by the name of your Gnus server or account,""" start="00:06:10.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""followed by the word &quot;login&quot;,""" start="00:06:15.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""then your login username,""" start="00:06:17.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and then the password, which here it's not shown.""" start="00:06:19.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah.""" start="00:06:23.960" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Configuration""" start="00:06:26.600" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""But before we actually set this,""" start="00:06:26.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I'll just show you that if we like start Gnus""" start="00:06:28.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with M-x gnus,""" start="00:06:31.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""initially, it will just show""" start="00:06:33.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""an error like this.""" start="00:06:36.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Even if we continue, it's empty.""" start="00:06:37.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""There's not much because Gnus doesn't know""" start="00:06:40.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""where to fetch these emails from.""" start="00:06:43.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And that's what we will configure.""" start="00:06:47.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Excuse me.""" start="00:06:52.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, so just for convenience,""" start="00:06:55.860" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we can bind Gnus to,""" start="00:06:57.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for example, C-c g, as I've done here.""" start="00:06:59.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""You will want to set your name""" start="00:07:00.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and email address, like so.""" start="00:07:04.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Here we tell Emacs""" start="00:07:05.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that we are going to be using Gnus for reading email,""" start="00:07:09.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""because Emacs comes""" start="00:07:11.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with other email clients as well,""" start="00:07:12.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""such as Rmail, and in fact, defaults to Rmail,""" start="00:07:14.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so this way, we tell it to use Gnus.""" start="00:07:18.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""By default, Gnus puts its newsrc file and other files,""" start="00:07:24.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I believe it still scatters them""" start="00:07:31.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""in a few different directories""" start="00:07:34.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""in your home directory,""" start="00:07:35.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so it's a little bit messy.""" start="00:07:36.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So what I prefer to do is to just put it""" start="00:07:37.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""all under the Gnus directory""" start="00:07:40.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""inside of my Emacs configuration, as I do here.""" start="00:07:42.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, and then here we just tell Gnus""" start="00:07:47.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to, like, don't try to bother""" start="00:07:50.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with a generic newsrc file""" start="00:07:53.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that would be shared""" start="00:07:55.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with other news readers.""" start="00:07:57.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Just want to use it for email.""" start="00:07:58.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And yeah, so we just tell Gnus""" start="00:07:59.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to keep all of its data""" start="00:08:01.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""inside a dedicated .newsrc.eld""" start="00:08:03.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""(for Emacs Lisp data) file instead.""" start="00:08:08.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And we can also have Gnus not prompt us""" start="00:08:12.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""when we want to exit with q.""" start="00:08:15.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Anyway, so let's go ahead and evaluate this.""" start="00:08:19.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So this has been set,""" start="00:08:23.400" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Starting Gnus""" start="00:08:25.720" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""so if we type M-x gnus again, or hit C-c g,""" start="00:08:25.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""now we're faced with an empty buffer,""" start="00:08:32.268" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and it says no news is good news,""" start="00:08:35.700" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and that's actually""" start="00:08:37.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""one of the characteristics of Gnus""" start="00:08:38.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is that by default it tries""" start="00:08:40.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to like sort of declutter""" start="00:08:44.780" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and show us a little less possible""" start="00:08:47.620" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""in the group buffer,""" start="00:08:49.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""meaning that if you don't have""" start="00:08:50.820" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""any groups with unread or marked""" start="00:08:53.260" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""or, like, starred messages, it will not show them.""" start="00:08:55.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""To actually see all of our groups or folders,""" start="00:09:00.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we hit shift L or capital L,""" start="00:09:03.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and we see that we have an inbox here,""" start="00:09:08.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""as expected. So we enter the inbox,""" start="00:09:12.420" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and we see that there is an article there""" start="00:09:14.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and it's already been marked as read.""" start="00:09:17.460" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""But if we mark it as unread""" start="00:09:20.780" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and exit and enter Gnus again,""" start="00:09:22.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""this is what we would see.""" start="00:09:25.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We would see that our group""" start="00:09:27.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and then we enter it, we see our mail here.""" start="00:09:28.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, and this is our very first email""" start="00:09:34.100" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that we read in GNU Emacs here, inside Gnus.""" start="00:09:36.160" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Always showing groups""" start="00:09:40.080" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""It might be useful to have Gnus always show""" start="00:09:40.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""certain groups or folders""" start="00:09:43.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""even if they don't have""" start="00:09:46.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""anything unread or marked inside of them.""" start="00:09:48.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""The way we can do that is""" start="00:09:52.340" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""by setting this variable""" start="00:09:56.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""gnus-permanently-visible-groups""" start="00:09:57.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to a regular expression""" start="00:10:01.340" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that describes the name of these groups.""" start="00:10:03.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So if we launch Gnus again,""" start="00:10:09.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""this time, we see that that group is visible,""" start="00:10:11.540" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""even though there's no unread messages in it.""" start="00:10:14.760" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Reading messages""" start="00:10:19.900" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""When we enter a group or folder,""" start="00:10:19.900" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we will see a list of all of our messages.""" start="00:10:24.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Here, we only have one.""" start="00:10:26.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can press M-u or Alt-u""" start="00:10:27.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to mark something as unread.""" start="00:10:31.940" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""You can press d to mark it as read.""" start="00:10:34.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""If you press just u,""" start="00:10:38.540" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""it'll tick the article,""" start="00:10:40.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which is kind of the equivalent""" start="00:10:41.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of marking the message or email""" start="00:10:44.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""as starred in other email clients""" start="00:10:47.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""such as Thunderbird.""" start="00:10:50.540" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We see that when there are groups""" start="00:10:55.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that have starred or ticked messages""" start="00:11:00.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""inside of them,""" start="00:11:03.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Gnus will mark them""" start="00:11:04.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with this little star here, or asterisk.""" start="00:11:05.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""This talk is just barely""" start="00:11:16.020" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""scratching the surface.""" start="00:11:17.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Let's see how far...""" start="00:11:19.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""How am I doing with the time?""" start="00:11:21.081" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Okay, 11 minutes already.""" start="00:11:22.760" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Debugging IMAP""" start="00:11:30.120" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""Just a couple of helpful things here,""" start="00:11:30.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""like this nnimap-record-commands variable.""" start="00:11:32.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""It's useful when you want to debug""" start="00:11:36.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""your IMAP setup with Gnus.""" start="00:11:38.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""If you set it to anything non-nil,""" start="00:11:40.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""it will log the commands that it runs""" start="00:11:42.860" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to a special `\*imap log\*` buffer.""" start="00:11:46.700" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And here I just set it""" start="00:11:49.540" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to this init-file-debug variable,""" start="00:11:50.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which is set to non-nil""" start="00:11:52.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""whenever you launch Emacs""" start="00:11:55.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with the --debug-init switch,""" start="00:11:56.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so that's pretty helpful.""" start="00:11:59.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""You want to also set your sent folder,""" start="00:12:02.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""basically, where Gnus will save""" start="00:12:05.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""a copy of the message that you just sent.""" start="00:12:07.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Normally, I think the convention these days is,""" start="00:12:09.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""a lot of you know servers and clients""" start="00:12:12.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""use a dedicated sent folder,""" start="00:12:16.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""but with Gnus, I just prefer to use INBOX itself.""" start="00:12:18.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Mainly because then I will have""" start="00:12:24.340" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""threading working for free,""" start="00:12:27.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so I can read the entire thread""" start="00:12:28.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of an email chain there in one place.""" start="00:12:31.940" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Of course, we don't have to keep""" start="00:12:34.300" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""the messages in there forever.""" start="00:12:35.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And in fact, Gnus has facilities,""" start="00:12:38.900" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""both manual and automated,""" start="00:12:42.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for expiring emails into""" start="00:12:43.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""different locations or different folders.""" start="00:12:46.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah. So let's move on here.""" start="00:12:52.680" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Topics""" start="00:12:55.160" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""Topics are another nice feature of Gnus.""" start="00:12:55.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So this is useful""" start="00:13:02.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for creating some topics""" start="00:13:03.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and then classifying or grouping""" start="00:13:05.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""your directories there.""" start="00:13:08.460" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So we will see the use""" start="00:13:10.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of this in a moment,""" start="00:13:11.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""where, let's say, I want to add""" start="00:13:13.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""a second account to Gnus.""" start="00:13:17.020" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""This one I'm going to call ec25work.""" start="00:13:20.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Let's pretend that""" start="00:13:23.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""this is my work email.""" start="00:13:24.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So if we open Gnus now,""" start="00:13:29.860" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we see that our work INBOX""" start="00:13:32.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""also shows up here.""" start="00:13:37.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And because we enabled topic mode,""" start="00:13:37.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we see that we have""" start="00:13:41.300" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""these sort of buttons""" start="00:13:42.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""like Gnus and misc here.""" start="00:13:43.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And we can, I believe,""" start="00:13:44.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""create a topic with capital T n.""" start="00:13:46.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can call it personal, this one.""" start="00:13:49.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Let's create another one, work.""" start="00:13:52.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And then what we can do is go""" start="00:13:56.940" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""over the directory that we want,""" start="00:13:59.580" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for example, this one,""" start="00:14:02.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""hit capital T m to move it""" start="00:14:04.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to the personal topic,""" start="00:14:08.220" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and this work one,""" start="00:14:11.900" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""move it to the work topic.""" start="00:14:13.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So we can nicely classify""" start="00:14:15.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and group our groups folders here,""" start="00:14:17.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which is especially useful""" start="00:14:23.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""when you have hundreds of them.""" start="00:14:24.720" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Customizing message display""" start="00:14:25.560" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""Anyhow, we can customize""" start="00:14:25.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""different aspects of message display.""" start="00:14:29.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Like for example,""" start="00:14:35.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we can this way customize""" start="00:14:35.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and change the order of""" start="00:14:38.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which headers we want to see and where.""" start="00:14:39.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So if I launch Gnus""" start="00:14:41.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and go back to this email here,""" start="00:14:45.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""these are the headers that we see at the top.""" start="00:14:48.460" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Excuse me.""" start="00:14:52.140" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And with Gnus we can always""" start="00:14:52.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can have it show all the headers""" start="00:14:55.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""by pressing t to toggle the headers.""" start="00:14:57.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Here we can see all the nitty-gritty""" start="00:15:02.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and all of the headers in the message""" start="00:15:04.580" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and we can toggle it back with t again.""" start="00:15:06.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can modify and customize the sorting""" start="00:15:12.220" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""with dedicated sorting functions.""" start="00:15:16.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""It comes with a number of them""" start="00:15:20.020" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""out of the box""" start="00:15:21.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""but we can define them as well.""" start="00:15:21.600" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Sending emails""" start="00:15:24.320" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""Now to send emails. Let's see.""" start="00:15:24.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We will be using message,""" start="00:15:29.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and that's what Gnus itself uses.""" start="00:15:31.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So I will set things up here.""" start="00:15:34.940" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Let's see.""" start="00:15:38.580" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Okay, so first of all,""" start="00:15:42.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we want to have Gnus mark""" start="00:15:44.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""the messages that we write to others""" start="00:15:46.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""as read automatically,""" start="00:15:48.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so this option does that.""" start="00:15:49.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And then we define posting styles this way""" start="00:15:51.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""using the prefix, the name""" start="00:15:58.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of the IMAP server.""" start="00:16:01.620" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And this is how we can tell it to use""" start="00:16:04.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""what email address for the From [header]""" start="00:16:06.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and which SMTP server to send it with.""" start="00:16:09.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, and then gcc is where Gnus will save""" start="00:16:14.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""the copy of the messages that we write.""" start="00:16:17.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So if we go ahead and launch Gnus again.""" start="00:16:20.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can go into our personal email here,""" start="00:16:24.140" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""hit m to compose a new message.""" start="00:16:26.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can prepare an email to,""" start="00:16:28.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""let's say, our work address.""" start="00:16:33.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Hello from EmacsConf 2025 Gnus talk.""" start="00:16:35.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Hello, this is just a test. :)""" start="00:16:42.420" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, and we hit send.""" start="00:16:47.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""The sending will be done""" start="00:16:55.740" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""using Emacs's built-in SMTP libraries.""" start="00:16:56.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Sometimes it can take a moment.""" start="00:17:03.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Okay, that's it. It's done.""" start="00:17:05.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So if we go back out""" start="00:17:07.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and if we hit g to get new news,""" start="00:17:09.260" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""we should be able to see our new email there""" start="00:17:11.560" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""in the other account that we just sent it to.""" start="00:17:15.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So we can come here, open it,""" start="00:17:17.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and there we go.""" start="00:17:22.361" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Plans""" start="00:17:26.660" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""There is a lot to configure in Gnus,""" start="00:17:26.660" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and we're just barely scratching the surface,""" start="00:17:29.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and unfortunately I don't have the time""" start="00:17:31.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to explain all of these""" start="00:17:34.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""but I do plan on doing""" start="00:17:35.000" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""a much longer running series,""" start="00:17:36.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""whether it's text or videos,""" start="00:17:38.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""showing how to configure""" start="00:17:41.500" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and use a lot of these different aspects of Gnus.""" start="00:17:42.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""But yeah, here, near the end, just a couple of...""" start="00:17:45.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""quick things. I find it's nice to have message""" start="00:17:49.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""prompt us for [confirmation]""" start="00:17:54.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""that we do want to send a message.""" start="00:17:56.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Actually, when it does that, I take""" start="00:17:59.200" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""another look over my email""" start="00:18:01.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to make sure I don't have any typos.""" start="00:18:02.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""It's generally a good idea to wrap your messages""" start="00:18:07.060" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""around 70 or 72 characters.""" start="00:18:09.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We do that here.""" start="00:18:14.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""We can tell Gnus to forward messages""" start="00:18:16.620" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""as a proper MIME part,""" start="00:18:19.160" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""instead of some half-broken way.""" start="00:18:22.600" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""This customization, the sendmail function,""" start="00:18:27.060" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is how we tell Gnus with message""" start="00:18:30.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to use the SMTP library to sending the email,""" start="00:18:34.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and these two variables are useful for""" start="00:18:38.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""omitting our own email address""" start="00:18:42.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""when we want to send someone,""" start="00:18:45.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""like when we hit r, to reply to someone.""" start="00:18:47.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""if we configure these variables,""" start="00:18:50.180" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""then Gnus won't add""" start="00:18:51.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""our own address to the To or Cc,""" start="00:18:52.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which is pretty useful.""" start="00:18:56.060" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I also find it helpful""" start="00:18:58.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to unbind C-c C-s.""" start="00:18:59.920" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""That's another key""" start="00:19:03.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for sending the message [in addition to C-c C-c].""" start="00:19:04.975" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And because C-c C-d,""" start="00:19:06.320" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""which is very close to it on the QWERTY layout,""" start="00:19:09.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is useful for saving a draft""" start="00:19:13.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and then coming back to it,""" start="00:19:15.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I don't want to accidentally hit C-c C-s,""" start="00:19:16.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and send the message prematurely.""" start="00:19:20.080" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""So I unbind it.""" start="00:19:22.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Yeah, anyway, that's about it.""" start="00:19:25.980" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:19:27.960" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""That's a kind of very quick tour""" start="00:19:27.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and introduction of setting up Gnus.""" start="00:19:31.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Here, we just configured a remote IMAP server,""" start="00:19:37.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""but we can also, of course,""" start="00:19:40.720" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""set up a local IMAP server such as Dovecot""" start="00:19:43.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and point Gnus to there,""" start="00:19:46.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and use programs like OfflineIMAP, I believe,""" start="00:19:48.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""or the mbsync program from isync package""" start="00:19:52.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""or isync project to synchronize our messages""" start="00:19:57.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""to local mail directories""" start="00:20:02.940" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and then point Gnus to it.""" start="00:20:04.480" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""The reason we might want to use that""" start="00:20:06.280" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is to always have a copy of our messages at hand""" start="00:20:08.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so we can use offline.""" start="00:20:11.720" video="mainVideo-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""nnimap""" start="00:20:12.760" video="mainVideo-gnus" id="subtitle"]]</div>[[!template text="""And why use nnimap specifically?""" start="00:20:12.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""As of now, the Maildir backend included with Gnus""" start="00:20:17.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is very inefficient,""" start="00:20:27.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""especially when dealing with""" start="00:20:29.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""tens or hundreds of thousands of messages""" start="00:20:31.400" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""like some of us are.""" start="00:20:33.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""It just takes an eternity to try""" start="00:20:36.660" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and index them and get going.""" start="00:20:38.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""In that case, what I recommend doing""" start="00:20:43.260" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""is instead of interfacing directly with Maildir,""" start="00:20:44.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""for Gnus, just install and run""" start="00:20:47.800" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Dovecot, a local IMAP server,""" start="00:20:52.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and point Gnus to that.""" start="00:20:54.360" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""I plan on writing tutorials or doing videos""" start="00:20:59.820" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""about these other aspects""" start="00:21:02.960" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""of configuring Gnus after the conference.""" start="00:21:06.640" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""That's about it for me,""" start="00:21:10.520" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""so I hope you find this helpful.""" start="00:21:11.440" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""If you have any questions,""" start="00:21:14.120" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""please feel free to email me""" start="00:21:16.680" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""at bandali@gnu.org or @kelar.org.""" start="00:21:18.240" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""You can take a look at my personal website""" start="00:21:23.760" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""where I plan on posting""" start="00:21:25.880" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""other Emacs and Gnus materials.""" start="00:21:26.840" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""And yeah, thank you for watching""" start="00:21:31.060" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""and I hope you enjoy the rest of the conference.""" start="00:21:33.040" video="mainVideo-gnus" id="subtitle"]]
+[[!template text="""Take care.""" start="00:21:35.160" video="mainVideo-gnus" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+<div class="transcript transcript-qanda"><a name="gnus-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""Okay, so first question.""" start="00:00:00.000" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I noticed that it took considerable amount of time to send email.""" start="00:00:02.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Is it possible to configure to use an external SMTP client""" start="00:00:05.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to send emails? Right, yes, it definitely is possible.""" start="00:00:09.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""In fact, in the past, I've used, I believe, MSMTP,""" start="00:00:14.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""which is a small SMTP implementation""" start="00:00:18.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that's independent of Emacs. So you can do that.""" start="00:00:23.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It's also possible to, pointed""" start="00:00:27.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to have it use the sendmail binary on your system.""" start="00:00:30.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""If you have a local MTA mail transfer agents""" start="00:00:34.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""like Exim or Postfix installed and configure.""" start="00:00:41.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I believe that should also dispatch""" start="00:00:46.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and return instantaneously""" start="00:00:50.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and then have Postfix or Exim""" start="00:00:51.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""deal with sending the message on their terms""" start="00:00:55.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""without blocking Emacs. I don't know, it depends.""" start="00:00:57.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Normally it's not always that slow. Sometimes it is.""" start="00:01:02.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I think it also depends on the load on your mail server.""" start="00:01:04.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Sometimes it's instantaneous, sometimes not.""" start="00:01:11.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So I hope that helps.""" start="00:01:14.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Let's see, is the Dovecot workaround""" start="00:01:17.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""actually a solution?""" start="00:01:20.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I haven't tried it, but if it works smoothly,""" start="00:01:21.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I'll surely do so. It is, it really is.""" start="00:01:24.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I've actually been using that setup for many years.""" start="00:01:27.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I can't remember. Oh, I believe it's Eric Abramson""" start="00:01:31.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""who first shared instructions on how to set this up.""" start="00:01:45.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Let's see if I can find it. There we go. Yeah, this is it.""" start="00:01:49.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I'll share this on IRC as well.""" start="00:02:04.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, so Dovecot is very, very efficient.""" start="00:02:06.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It's written in C. And yeah, when you point Gnu's""" start="00:02:15.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to an IMAP server like Dovecot,""" start="00:02:21.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""dealing with email is pretty instantaneous.""" start="00:02:23.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""This article or post by Eric is great.""" start="00:02:25.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Although I will say that""" start="00:02:29.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""there was a recent major release of Dovecot.""" start="00:02:32.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I can't remember if it's 2.4 or 2.5.""" start="00:02:34.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and it's a breaking change.""" start="00:02:37.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""They change a lot of the configuration syntax,""" start="00:02:39.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""so there's a high likelihood""" start="00:02:42.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that this drop-in configuration won't work,""" start="00:02:44.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""even though that's what I used""" start="00:02:47.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""as my starting point a couple years ago.""" start="00:02:49.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I will be writing an article on my personal site""" start="00:02:51.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to go over how to configure recent versions of Dofconn""" start="00:02:56.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""for such a setup, for a local setup.""" start="00:03:02.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Let's see. Do you have experience with Mu4e or not much?""" start="00:03:07.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And why would you say Gnus is worth using compared to these?""" start="00:03:15.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I do have experience with these,""" start="00:03:22.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""although it goes back many years,""" start="00:03:23.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and I'm sure both of these have evolved since,""" start="00:03:25.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and they're great pieces of software in their own rights.""" start="00:03:27.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And actually I did use them in that order.""" start="00:03:31.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Like I first tried Mu4e in Emacs,""" start="00:03:33.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""when I started using email in Emacs,""" start="00:03:37.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""then I tried Notmuch for a while, and then I went to Gnus.""" start="00:03:40.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""They're great. They have like pros and cons.""" start="00:03:44.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Mu4e, I believe, has""" start="00:03:51.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""excellent maildir handling directly,""" start="00:03:52.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""if I'm not mistaken, unlike Gnus,""" start="00:03:55.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""so you can point it directly""" start="00:03:58.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to your maildirs locally,""" start="00:04:00.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and it should work fine,""" start="00:04:03.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""if I'm remembering correctly.""" start="00:04:06.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""NotMuch is also excellent.""" start="00:04:08.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""The thing with Notmuch""" start="00:04:11.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""is that it uses Xapien""" start="00:04:12.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""for indexing and searching email.""" start="00:04:13.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It's tag-based, so you can tag messages.""" start="00:04:17.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And then, yeah, it's amazing""" start="00:04:20.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""for tagging and searching capabilities,""" start="00:04:24.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""very powerful search features.""" start="00:04:26.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And my reason for trying Gnus""" start="00:04:28.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and then, I don't know, eventually""" start="00:04:31.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""liking it was couple of years ago,""" start="00:04:33.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I went through this kind of phase""" start="00:04:37.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of trying and trying to like use""" start="00:04:38.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and stick with packages""" start="00:04:40.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that are built into GNU Emacs""" start="00:04:43.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""as much as possible.""" start="00:04:45.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""No particular reason that I would like,""" start="00:04:47.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""you know, recommend people do that per se,""" start="00:04:51.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but yeah, that's just what I wanted to do.""" start="00:04:54.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Cause I noticed my configurations""" start="00:04:57.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""were like growing unwieldy.""" start="00:05:00.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So I, like many others declared, Emacs in its bankruptcy,""" start="00:05:02.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""in its file bankruptcy, and configure things from scratch""" start="00:05:07.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and try to use whatever that Emacs had to offer""" start="00:05:11.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""built in itself, and then only reach for a couple""" start="00:05:15.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of external packages here and there.""" start="00:05:18.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So that's what I went to. That's how I ended up on Gnu's.""" start="00:05:20.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And it's been very nice.""" start="00:05:24.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I've tried a few other email clients""" start="00:05:26.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""since then, temporarily,""" start="00:05:29.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""like I tried AERC, A-E-R-C,""" start="00:05:31.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""which is not built into Emacs,""" start="00:05:33.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but I don't know,""" start="00:05:36.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I keep coming back to Gnus.""" start="00:05:36.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It's great to have it all, to be able to do all these things""" start="00:05:38.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""from within GNU Emacs. Let's see, some notes and feedback.""" start="00:05:42.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Thank you for all the kind words folks, appreciate it.""" start="00:05:47.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I'm glad that you found the presentation helpful""" start="00:05:52.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or somewhat useful. Let's see, new question.""" start="00:05:56.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Oh, and I will check IRC as well.""" start="00:05:59.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Let's see, at my organization,""" start="00:06:02.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""we're forced to use OAuth with Outlook,""" start="00:06:06.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and they've also blacklisted""" start="00:06:09.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""all email clients except Thunderbird,""" start="00:06:11.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but they don't support it,""" start="00:06:13.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""only the Webmail or the Outlook app.""" start="00:06:15.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Do you know if this is something""" start="00:06:17.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that can be circumvented in Gnus? Let's see.""" start="00:06:18.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So if I'm pretty sure, at least with the recent Emacs versions,""" start="00:06:23.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Gnus does support xOAuth as a backend.""" start="00:06:29.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So I think you should be able to do that""" start="00:06:37.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""even with just the things, the machinery built into Emacs.""" start="00:06:41.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Even so, I think there are external packages and programs.""" start="00:06:45.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""One of them I think comes from this Cyrus IMAP world""" start="00:06:53.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of things that implement like XOAuth.""" start="00:06:58.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So you should be able to do that.""" start="00:07:02.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You should be able to use that to get authenticated""" start="00:07:04.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to your organization's mail server.""" start="00:07:09.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""But I've never tried that myself.""" start="00:07:12.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""In terms of like blacklisting all email clients,""" start="00:07:15.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I don't know how they would do it outside of, you know,""" start="00:07:22.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""this kind of authentication thingy.""" start="00:07:27.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""If, you know, they check""" start="00:07:29.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""the user agent header or something,""" start="00:07:32.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that's pretty easy to customize and set.""" start="00:07:36.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""With Gnus, you can set, define a posting style""" start="00:07:42.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to set a custom user agent.""" start="00:07:50.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So, yeah, that's as far as I know.""" start="00:07:55.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Thunderbird is pretty nice too.""" start="00:07:58.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Like I reach out for it sometimes""" start="00:08:00.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""when I'm in a rush or can't,""" start="00:08:05.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""don't have the time to like set up Gnus with""" start="00:08:10.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""like some new like IMAP server or something.""" start="00:08:15.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I reach for it sometimes, but yeah,""" start="00:08:24.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I primarily use Gnus. I see.""" start="00:08:28.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So the question says they tried it""" start="00:08:32.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""with not much and it never worked.""" start="00:08:34.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Even KML on Android didn't work.""" start="00:08:38.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Right. Yeah, I'm not sure.""" start="00:08:39.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""If you can like provide maybe more details""" start="00:08:45.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""as to like what doesn't work""" start="00:08:47.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or if you get any particular error messages""" start="00:08:57.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or like how they're trying to like prevent you from using it,""" start="00:09:02.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""then maybe folks could have some ideas""" start="00:09:05.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of maybe how to get around that.""" start="00:09:08.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah. Let's see, I'm going to go""" start="00:09:11.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""over and take a look at IRC. Yes, scoring is great.""" start="00:09:16.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""In it for bankruptcy,""" start="00:09:29.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""they have mail to use outlook from Gnus, right?""" start="00:09:33.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, there are various like solutions and workarounds.""" start="00:09:39.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, let's see. How's the schedule looking?""" start="00:09:43.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I think the next talk""" start="00:09:47.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""is gonna start pretty soon, if I'm not mistaken.""" start="00:09:48.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, so I believe that's about all the time""" start="00:09:52.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that we have on the stream for the Q&A,""" start="00:10:34.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but of course I'll hang around here on big blue button""" start="00:10:35.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and IRC for a while if folks would like to ask more questions.""" start="00:10:38.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And also feel free to email me,""" start="00:10:43.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""bandali@gnu.org""" start="00:10:43.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or at kelar.org with any questions.""" start="00:10:44.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Thanks again for the kind words folks, appreciate it.""" start="00:10:46.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, I myself also wish""" start="00:10:49.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that there were like some tutorials or something""" start="00:10:51.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""when I was getting started with Guinness,""" start="00:10:53.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but we didn't have that. So, and I've been meaning""" start="00:10:54.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to like record a talk like this for years for EmacsConf,""" start="00:10:56.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but yeah, funnily enough, after like 10 years of,""" start="00:10:59.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""at my 10th anniversary""" start="00:11:12.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of being involved with the conference,""" start="00:11:22.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I finally put together a talk of my own""" start="00:11:27.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to talk about configuring Gnus.""" start="00:11:29.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Let's see. Oh, I see, I see.""" start="00:11:32.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So the organization is doing some kind of check""" start="00:11:35.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""during setting up of OAuth.""" start="00:11:41.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So I think how that works is""" start="00:11:43.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""sometimes these email clients,""" start="00:11:44.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I think at least this is the case for Gmail or something,""" start="00:11:47.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""where a project such as Thunderbird""" start="00:11:50.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""needs to apply for some kind of token""" start="00:11:55.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to be able to authenticate""" start="00:12:00.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and connect its users to a mail server.""" start="00:12:02.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So all I will say is""" start="00:12:05.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that Thunderbird is free software""" start="00:12:10.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and the sources are available""" start="00:12:12.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and you might be able to find""" start="00:12:13.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""the token that they use and yeah.""" start="00:12:15.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Right, so yeah, I'm just reading this comment here.""" start="00:12:19.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You're very welcome again.""" start="00:13:13.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I hope you find it useful in some way.""" start="00:13:16.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So they say that they like the fact""" start="00:13:18.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that I started with a clean setup and built from that.""" start="00:13:21.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Reading and writing emails in Emacs""" start="00:13:25.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""is definitely not straightforward.""" start="00:13:27.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And I find it frustrating""" start="00:13:28.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that there are so many pieces to put together""" start="00:13:30.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and a bunch of documentation to read.""" start="00:13:32.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And they admit that they find Gnus overwhelming.""" start="00:13:34.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I sympathize and empathize.""" start="00:13:39.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I've been in that very same situation.""" start="00:13:42.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And yeah, it's totally okay to feel like that.""" start="00:13:45.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I mean, email itself is kind of complex,""" start="00:13:50.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""even on the server side.""" start="00:13:55.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""If you've ever looked or have been interested""" start="00:13:57.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""in self-hosting your email,""" start="00:14:00.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""you know that there are so many moving parts and pieces.""" start="00:14:02.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So yeah, I hope that this short video""" start="00:14:06.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""can be a useful first step""" start="00:14:14.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of getting you set up to""" start="00:14:18.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""at least be able to read your emails""" start="00:14:19.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and compose and send them within Emacs""" start="00:14:22.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""so that you can see that it's possible""" start="00:14:26.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and get that positive feedback loop going""" start="00:14:30.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and get the encouragement and then go from there.""" start="00:14:34.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, Gnus is most definitely very extensible.""" start="00:14:41.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It already has a lot of backends built into GNU Emacs,""" start="00:15:06.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and there are other ones""" start="00:15:10.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that people have written externally""" start="00:15:12.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""on various code hosting forges""" start="00:15:14.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that you can download and set up. Yeah, thank you all.""" start="00:15:18.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It's nice to see that the talk""" start="00:15:27.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""has kind of resonated with so many folks.""" start="00:15:30.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And, yeah, it is encouragement""" start="00:15:33.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""for me to finally get around to starting""" start="00:15:41.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""perhaps either a tutorial series""" start="00:15:44.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or like a video series like this""" start="00:15:47.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""concretely showing and walking through""" start="00:15:50.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""how to like set up and configure these different aspects.""" start="00:15:54.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""There were so many other things that I wanted to show,""" start="00:15:57.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but didn't have the time""" start="00:16:00.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or couldn't squeeze it into""" start="00:16:04.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""the 15, 20 minute format for the conference.""" start="00:16:06.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah. I'm going to hang out here for a few more minutes.""" start="00:16:09.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Another comment, they would have liked""" start="00:16:28.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to see a quick demo of Gnus""" start="00:17:36.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""while it is fully configured and tweaked.""" start="00:17:38.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""That's kind of a teaser.""" start="00:17:41.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I can definitely do that sometime after the conference.""" start="00:17:43.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Truth be told, I don't customize the looks of it heavily.""" start="00:17:52.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I use the default layout""" start="00:17:59.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""for the summary and article buffers.""" start="00:18:01.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""With Gnus, you can even reconfigure that""" start="00:18:03.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to arrange these in your preferred location or layout.""" start="00:18:12.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I don't really do any of that.""" start="00:18:15.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""For the most part, my setup is pretty simple.""" start="00:18:18.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I can actually maybe show my init file here. Let's see.""" start="00:18:22.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, so this is, I guess, part of my Gnus configuration.""" start="00:18:27.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I configure a couple of mail servers,""" start="00:18:58.718" video="qanda-gnus" id="subtitle"]]
+[[!template text="""set up these expiry targets""" start="00:19:01.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""so that I can hit capital E on a message""" start="00:19:04.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and then have it be archived. You can have it be immediate.""" start="00:19:07.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I do that for work messages""" start="00:19:12.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or you can use the default seven day,""" start="00:19:15.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""where if a message is older than seven days,""" start="00:19:17.678" video="qanda-gnus" id="subtitle"]]
+[[!template text="""like once it reaches that age""" start="00:19:21.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and it's been marked as expired and it'll be moved into,""" start="00:19:23.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""like for example, this yearly archive directory,""" start="00:19:26.358" video="qanda-gnus" id="subtitle"]]
+[[!template text="""like archive. For example, 2025.""" start="00:19:29.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, you can do like mail splitting,""" start="00:19:31.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""automatically filing email.""" start="00:19:35.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""The fancy splitting is the more powerful variant.""" start="00:19:38.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can use like all kinds of regular expressions""" start="00:19:44.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and move email around depending on""" start="00:19:46.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""what field or what header""" start="00:19:48.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""matches what regular expression.""" start="00:19:50.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""What else? Gnus has things,""" start="00:19:52.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""has a facility like Gnus parameters""" start="00:20:00.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""for configuring individual groups or directories.""" start="00:20:03.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Like if you file all the mailing or the mails""" start="00:20:07.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""for a particular mailing list into a certain group.""" start="00:20:11.478" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And for example, if they add""" start="00:20:15.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""the name of the mailing list""" start="00:20:20.238" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to the, subject header.""" start="00:20:22.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""They prefix the subject header with the name of the list.""" start="00:20:26.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can set that here""" start="00:20:28.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and Gnus will automatically""" start="00:20:30.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""hide that for you. So, let's see.""" start="00:20:32.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""There's a news agent,""" start="00:20:39.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""which I won't even get into because it's a rabbit hole.""" start="00:20:54.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It's pretty cool. Definitely check it out.""" start="00:20:58.918" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can define what MIME parts should be buttonized""" start="00:21:01.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""so that you can like easily toggle them""" start="00:21:07.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""when displaying the article.""" start="00:21:09.278" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, you can customize the list""" start="00:21:11.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of the headers that are displayed and the order of them.""" start="00:21:14.838" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Like I showed in the sample init file that I provided.""" start="00:21:17.598" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Games can integrate with Dired.""" start="00:21:22.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can set like custom signatures like here.""" start="00:21:25.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I might define something""" start="00:21:35.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and then I use it later in the posting,""" start="00:21:37.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""in the posting, the news posting styles variable.""" start="00:21:44.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I set a signature to that. Yeah.""" start="00:21:48.518" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can write custom like functions to move email around.""" start="00:21:52.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So I have this like Gnus chunk article function""" start="00:22:09.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that I bind to VS,""" start="00:22:16.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""so V is the prefix came up that I defined,""" start="00:22:19.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and then S, so you can do things like that.""" start="00:22:22.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can customize the format of the topic lines,""" start="00:22:29.758" video="qanda-gnus" id="subtitle"]]
+[[!template text="""so if I actually launch Gnus with my own configuration,""" start="00:22:34.198" video="qanda-gnus" id="subtitle"]]
+[[!template text="""this is how it might look like, so.""" start="00:22:39.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can define archive decoders""" start="00:22:43.398" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to let you like automatically decode""" start="00:22:58.438" video="qanda-gnus" id="subtitle"]]
+[[!template text="""inside the Gnus article buffer,""" start="00:23:02.318" video="qanda-gnus" id="subtitle"]]
+[[!template text="""how to extract certain archive formats.""" start="00:23:04.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Like for example, I defined this one for Gzip.""" start="00:23:10.158" video="qanda-gnus" id="subtitle"]]
+[[!template text="""You can set like discouraged alternatives""" start="00:23:13.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to like, for example, hide HTML email by default,""" start="00:23:18.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""especially if there is a plain text version. I do that.""" start="00:23:22.078" video="qanda-gnus" id="subtitle"]]
+[[!template text="""GNU says machinery around like encrypting emails.""" start="00:23:26.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""It has a bunch of customizations.""" start="00:23:34.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that you can configure and have Dynos behave a certain way.""" start="00:23:36.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""For example, when replying to signed or encrypted emails.""" start="00:23:44.798" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And yeah. Anyway. That's about it.""" start="00:23:48.638" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So yeah, thanks again for hanging out with me, folks.""" start="00:24:01.958" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I appreciate all the kind words.""" start="00:24:04.558" video="qanda-gnus" id="subtitle"]]
+[[!template text="""comments and yeah, I'm also""" start="00:24:08.878" video="qanda-gnus" id="subtitle"]]
+[[!template text="""looking forward to trying and putting together""" start="00:24:13.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""more videos or articles about Gnus.""" start="00:24:17.038" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Definitely one about configuring Dovecot for local mail.""" start="00:24:21.998" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And yeah, take it from there. Thanks again.""" start="00:24:28.118" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Hope you enjoy the rest of the conference.""" start="00:24:31.158" video="qanda-gnus" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [bandali@gnu.org](mailto:bandali@gnu.org?subject=Comment%20for%20EmacsConf%202023%20gnus%3A%20Reading%20and%20writing%20emails%20in%20GNU%20Emacs%20with%20Gnus)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/gnus-before.md b/2025/info/gnus-before.md
new file mode 100644
index 00000000..fd780533
--- /dev/null
+++ b/2025/info/gnus-before.md
@@ -0,0 +1,37 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 22-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-gnus>
+Etherpad: <https://pad.emacsconf.org/2025-gnus>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-gnus"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--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="mainVideo-gnus" data="""
+00:02.620 Introduction
+01:25.240 Demo
+02:49.960 Don't panic
+03:58.560 Configuring servers
+05:46.240 .authinfo
+06:26.600 Configuration
+08:25.720 Starting Gnus
+09:40.080 Always showing groups
+10:19.900 Reading messages
+11:30.120 Debugging IMAP
+12:55.160 Topics
+14:25.560 Customizing message display
+15:24.320 Sending emails
+17:26.660 Plans
+19:27.960 Wrapping up
+20:12.760 nnimap
+
+"""]]<div></div>Duration: 21:37 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gnus">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.opus">Download --main.opus (19MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--main.webm">Download --main.webm (60MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.txt">Download --split.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--split.vtt">Download --split.vtt</a></li><li><a href="https://youtu.be/0Pu8oqdsSig">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-gnus"><source src="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 27:00 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-gnus">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.m4v">Download --answers.m4v (62MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.webm">Download --answers.webm (58MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/gnus-nav.md b/2025/info/gnus-nav.md
new file mode 100644
index 00000000..bc14240a
--- /dev/null
+++ b/2025/info/gnus-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/gmail">org-gmail: A deep integration of Gmail into your Org Mode</a>
+Next by track: <a href="/2025/talks/latex">LaTeX export in org-mode: the overhaul</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/graphics-after.md b/2025/info/graphics-after.md
new file mode 100644
index 00000000..526fa59d
--- /dev/null
+++ b/2025/info/graphics-after.md
@@ -0,0 +1,43 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="graphics-mainVideo-transcript"></a><h1>Transcript</h1>
+
+[[!template text="""[ This video has no narration. ]""" start="00:00:00.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""space box intro (elisp model matrix pipeline c dynamic module)""" start="00:00:05.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""space box intro (elisp model matrix pipeline c dynamic module)""" start="00:00:05.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""parallel (sdl/linux multicore pthreads)""" start="00:01:59.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""parallel (sdl/linux multicore pthreads)""" start="00:01:59.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""bad snake (oop eieio)""" start="00:02:04.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""bad snake (oop eieio)""" start="00:02:04.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""solar (ecs)""" start="00:03:30.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""solar (ecs)""" start="00:03:30.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""60 fps 1 (opengl cpu)""" start="00:04:32.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""60 fps 1 (opengl cpu)""" start="00:04:32.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""earth (grid ascii)""" start="00:05:36.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""earth (grid ascii)""" start="00:05:36.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""studio (image unicode)""" start="00:06:02.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""studio (image unicode)""" start="00:06:02.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""60 fps 2 (gpu)""" start="00:09:32.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""60 fps 2 (gpu)""" start="00:09:32.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""rgb triangle (glsl vertex/fragment shaders)""" start="00:11:57.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""rgb triangle (glsl vertex/fragment shaders)""" start="00:11:57.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""ansi cube (software functional shader)""" start="00:13:09.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""ansi cube (software functional shader)""" start="00:13:09.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""horizon (gradient)""" start="00:13:33.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""horizon (gradient)""" start="00:13:33.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""shell color table (zsh)""" start="00:15:16.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""shell color table (zsh)""" start="00:15:16.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""luki-lisp (macros)""" start="00:16:13.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""luki-lisp (macros)""" start="00:16:13.000" video="mainVideo-graphics" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""incal & rave dave outro (debug text triangles)""" start="00:18:25.000" video="mainVideo-graphics" id="subtitle"]]</div>[[!template text="""incal & rave dave outro (debug text triangles)""" start="00:18:25.000" video="mainVideo-graphics" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+Questions or comments? Please e-mail [incal@dataswamp.org](mailto:incal@dataswamp.org?subject=Comment%20for%20EmacsConf%202023%20graphics%3A%20Modern%20Emacs%2FElisp%20hardware%2Fsoftware%20accelerated%20graphics)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/graphics-before.md b/2025/info/graphics-before.md
new file mode 100644
index 00000000..52befd06
--- /dev/null
+++ b/2025/info/graphics-before.md
@@ -0,0 +1,29 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 23-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-graphics>
+Etherpad: <https://pad.emacsconf.org/2025-graphics>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-graphics"><source src="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--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="mainVideo-graphics" data="""
+00:05.000 space box intro (elisp model matrix pipeline c dynamic module)
+01:59.000 parallel (sdl/linux multicore pthreads)
+02:04.000 bad snake (oop eieio)
+03:30.000 solar (ecs)
+04:32.000 60 fps 1 (opengl cpu)
+05:36.000 earth (grid ascii)
+06:02.000 studio (image unicode)
+09:32.000 60 fps 2 (gpu)
+11:57.000 rgb triangle (glsl vertex/fragment shaders)
+13:09.000 ansi cube (software functional shader)
+13:33.000 horizon (gradient)
+15:16.000 shell color table (zsh)
+16:13.000 luki-lisp (macros)
+18:25.000 incal & rave dave outro (debug text triangles)
+
+"""]]<div></div>Duration: 22:15 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-graphics">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-graphics--modern-emacselisp-hardwaresoftware-accelerated-graphics--emanuel-berg--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/RVoGcLNalJw">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/graphics-nav.md b/2025/info/graphics-nav.md
new file mode 100644
index 00000000..51e5bd7b
--- /dev/null
+++ b/2025/info/graphics-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/commonlisp">Common Lisp images communicating like-a-human through shared Emacs slime and eev</a>
+Next by track: <a href="/2025/talks/sat-close">Saturday closing remarks / open session</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/greader-after.md b/2025/info/greader-after.md
new file mode 100644
index 00000000..ae172158
--- /dev/null
+++ b/2025/info/greader-after.md
@@ -0,0 +1,90 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="greader-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:01.460" video="mainVideo-greader" id="subtitle"]]</div>[[!template text="""Hi, I'm Yuval Langer.""" start="00:00:01.460" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Some may know me as cow_2001 on IRC.""" start="00:00:03.786" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""I'd like to tell you about greader mode,""" start="00:00:09.480" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""a versatile text-to-speech package""" start="00:00:12.120" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""written by Michelangelo Rodriguez.""" start="00:00:14.520" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Sometimes you want to read a bunch""" start="00:00:18.400" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""and cannot be bothered, right?""" start="00:00:20.400" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""You'd rather plop on your chair""" start="00:00:23.040" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""and let the words come to you.""" start="00:00:25.080" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""You can do it using greader Mode.""" start="00:00:27.520" video="mainVideo-greader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What is greader mode?""" start="00:00:31.158" video="mainVideo-greader" id="subtitle"]]</div>[[!template text="""What is greader mode?""" start="00:00:31.158" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Greader mode is a text-to-speech minor mode""" start="00:00:33.120" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""with which you can read any buffer using the point.""" start="00:00:36.320" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""You move your point""" start="00:00:40.400" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""right before the text you want to read""" start="00:00:41.603" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""and run greader-read command.""" start="00:00:43.560" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""You can then use the left and right arrow keys""" start="00:00:47.640" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""to jump to the previous sentence or the next sentence.""" start="00:00:50.840" video="mainVideo-greader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Installing Greader""" start="00:00:56.600" video="mainVideo-greader" id="subtitle"]]</div>[[!template text="""Installing GReader:""" start="00:00:56.600" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Greader is available on the GNU Emacs app store""" start="00:00:59.144" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""and its copyright assigned to""" start="00:01:05.440" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""the Free Software Foundation.""" start="00:01:07.286" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""To install Greader,""" start="00:01:10.960" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""you can run M-x list-packages RET.""" start="00:01:12.858" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""look it up with C-s greader,""" start="00:01:19.280" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""press i to mark it for installation,""" start="00:01:23.100" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""and then press x to execute the installation.""" start="00:01:26.680" video="mainVideo-greader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Basic usage""" start="00:01:31.760" video="mainVideo-greader" id="subtitle"]]</div>[[!template text="""Basic usage:""" start="00:01:31.760" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""We can now open a text file and start reading.""" start="00:01:33.212" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Let's open The Willows by Algernon Blackwood.""" start="00:01:37.560" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""I've never read the story,""" start="00:01:42.600" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""but HP Lovecraft said it was the best horror story""" start="00:01:44.480" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""he had ever read, so it is in my reading list.""" start="00:01:48.280" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Now load greader using M-x greader-mode.""" start="00:01:52.960" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""To start reading, press C-r SPC.""" start="00:02:01.520" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""The Project Gutenberg ebook of The willows.""" start="00:02:08.140" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""This will run the greader-read command.""" start="00:02:10.560" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""To stop, press the SPC key.""" start="00:02:14.080" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""This will run the greader-stop command.""" start="00:02:16.800" video="mainVideo-greader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Navigation""" start="00:02:20.820" video="mainVideo-greader" id="subtitle"]]</div>[[!template text="""Navigation:""" start="00:02:20.820" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""You can navigate like you normally do,""" start="00:02:22.360" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""but using the left or right arrow keys""" start="00:02:24.680" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""will move the point between sentences""" start="00:02:27.560" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""instead of characters.""" start="00:02:30.200" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""So... This ebook is...""" start="00:02:33.088" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""You may copy it, give it away,""" start="00:02:36.640" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""or reuse it if you are not.""" start="00:02:38.096" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Let's move to the start of the story.""" start="00:02:41.480" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""&quot;After leaving Vienna,""" start="00:02:57.040" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""and long before you come to Budapest,""" start="00:02:58.089" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""the Danube enters a region""" start="00:02:59.840" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""of singular loneliness and desolation,""" start="00:03:00.920" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""where its waters spread away on all sides,""" start="00:03:02.920" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""regardless of a main channel,""" start="00:03:04.880" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""and the country becomes a swamp for miles upon miles,""" start="00:03:06.200" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""covered by a vast sea of low willow bushes.&quot;""" start="00:03:08.800" video="mainVideo-greader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Reading rate""" start="00:03:12.380" video="mainVideo-greader" id="subtitle"]]</div>[[!template text="""Reading rate: this reading rate is rather slow.""" start="00:03:12.380" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Let's pick up the pace using the plus key.""" start="00:03:15.840" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""This will run the greader-inc-rate command.""" start="00:03:19.520" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""You must do that while greader is reading.""" start="00:03:23.520" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""Now it is too fast.""" start="00:03:37.885" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""We can slow down using the - key.""" start="00:03:39.780" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""This will run the greader-dec-rate command.""" start="00:03:44.680" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""&quot;In high flood this great acreage""" start="00:03:54.560" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""of sand, shingle-beds, and willow-grown islands""" start="00:03:59.385" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""is almost topped by the water,""" start="00:04:01.240" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""but in normal seasons the bushes""" start="00:04:02.440" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""bend and rustle in the free winds,""" start="00:04:03.610" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""showing their silver leaves to the sunshine""" start="00:04:04.920" video="mainVideo-greader" id="subtitle"]]
+[[!template text="""in an ever-moving plain of bewildering beauty.&quot;""" start="00:04:06.400" video="mainVideo-greader" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+Questions or comments? Please e-mail [yuval.langer@gmail.com](mailto:yuval.langer@gmail.com?subject=Comment%20for%20EmacsConf%202023%20greader%3A%20GNU%20Emacs%20Greader%20%28Gnam%C3%B9%20Reader%29%20mode%20is%20the%20best%20Emacs%20mode%20in%20existence)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/greader-before.md b/2025/info/greader-before.md
new file mode 100644
index 00000000..a62a4f3c
--- /dev/null
+++ b/2025/info/greader-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 5-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-greader>
+Etherpad: <https://pad.emacsconf.org/2025-greader>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-greader"><source src="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 04:08 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-greader">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.opus">Download --main.opus (3.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--main.webm">Download --main.webm (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-greader--gnu-emacs-greader-gnam-reader-mode-is-the-best-emacs-mode-in-existence--yuval-langer--split.txt">Download --split.txt</a></li><li><a href="https://youtu.be/q1gmFAKYWBk">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/greader-nav.md b/2025/info/greader-nav.md
new file mode 100644
index 00000000..90ccb361
--- /dev/null
+++ b/2025/info/greader-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/blee-lcnt">Blee-LCNT: An Emacs-centered content production and self-publication framework</a>
+Next by track: <a href="/2025/talks/open-mic">Open session</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/hyperboleqa-after.md b/2025/info/hyperboleqa-after.md
new file mode 100644
index 00000000..c40d2adb
--- /dev/null
+++ b/2025/info/hyperboleqa-after.md
@@ -0,0 +1,744 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="hyperboleqa-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""All right, you're good to go. Are people here?""" start="00:00:00.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me read the first question to you since I'm here.""" start="00:00:12.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""The first question here is,""" start="00:00:15.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I'm excited to know opinion and current state""" start="00:00:17.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""of using NCP and AI for PKMs and PIEs.""" start="00:00:20.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Since they do carry a lot of burden out of us, it means a lot of process.""" start="00:00:23.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""How does our pipeline stand with the coming days?""" start="00:00:28.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Thanks for the question.""" start="00:00:33.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""AI is obviously on everybody's mind.""" start="00:00:35.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We haven't done a lot of integration""" start="00:00:40.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with any of the popular AI engines,""" start="00:00:43.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but I think as you'll see through this Q&A session,""" start="00:00:47.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Hyperbole's function is really to interlink""" start="00:00:50.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""your information everywhere throughout Emacs.""" start="00:00:54.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And so, whether you're using a chatbot""" start="00:00:57.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""in a specific buffer,""" start="00:01:02.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you can use hyperbole implicit links, implicit buttons""" start="00:01:04.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to activate different actions there as well.""" start="00:01:11.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So sometimes it takes a bit of customization,""" start="00:01:17.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""a small amount of two to seven lines of code to do that.""" start="00:01:20.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""As we get to working with more of these engines,""" start="00:01:26.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""we'll build that into the core part of Hyperbole.""" start="00:01:30.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But right now, that's left as an extension""" start="00:01:34.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""for users who are heavily using MCP""" start="00:01:40.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or other protocols right now.""" start="00:01:43.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We have, for example, integrated""" start="00:01:45.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with LSPs, you know, for coding and have that interface through xref""" start="00:01:50.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and basically using the single key, the action key,""" start="00:01:57.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which is made a return.""" start="00:02:01.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can jump around to any of your source definitions""" start="00:02:02.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""from any reference in almost any language""" start="00:02:08.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that anybody uses today. So you can extrapolate from that""" start="00:02:11.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""how that might work with AI as well.""" start="00:02:14.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And I think you'll see later when we talk about HiWiki""" start="00:02:17.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that we're now enabling just just wiki words""" start="00:02:23.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to be buttons in hyperbole.""" start="00:02:26.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So those could be part of your chat with an AI""" start="00:02:30.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you just click on it and you jump right to all your references""" start="00:02:34.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""associated with that terminology. Thanks for the question.""" start="00:02:37.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Should I just go through the second question?""" start="00:02:49.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I thought people would be glad.""" start="00:02:51.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""As a normal user who codes and takes notes,""" start="00:02:54.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I really want to deep dive and learn Hyperbole,""" start="00:02:56.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but always end up winding back up to Embark""" start="00:02:58.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and Org Mode being the better system.""" start="00:03:02.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""For me, Hyperbole looks over engineering""" start="00:03:04.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or over the peer system,""" start="00:03:06.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which other individual packages do well.""" start="00:03:08.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And outside DMAC, there's no system supporting Hyperbole or any usability.""" start="00:03:10.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And I think you've cited answering""" start="00:03:15.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that already, so go ahead.""" start="00:03:17.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Right, hyperbole is large, but there's reasons behind that.""" start="00:03:21.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We're just trying to link all your information in Emacs.""" start="00:03:26.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I think you can see my screen here in Emacs.""" start="00:03:30.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So for example, you can take any Lisp expression,""" start="00:03:38.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""even a variable like here we have in hyperbole""" start="00:03:45.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Hyperbdur variable""" start="00:03:49.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and I just hit the action key made a return""" start="00:03:50.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and in my mini buffer I see the value of that variable,""" start="00:03:53.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but I could just as well take any other expression""" start="00:03:57.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and take the outer parens off""" start="00:04:01.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and change them to angle brackets""" start="00:04:03.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and now that's a live Hyper button""" start="00:04:05.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""could be in a comment in a programming buffer in this case.""" start="00:04:08.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It's in K outliner buffer,""" start="00:04:12.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which is a an auto-numbered outliner part of hyperbole.""" start="00:04:15.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So let's just try this and say made a return.""" start="00:04:19.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I pressed and it ran occur and found all the occurrences of buttons.""" start="00:04:23.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And similarly in here, I could just jump and go""" start="00:04:28.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to any of these lines directly""" start="00:04:31.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""by hitting made a return in that buffer as well.""" start="00:04:35.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So all your text, all your sort""" start="00:04:37.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""of what we call implicit links become live and hyperbole.""" start="00:04:39.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And you didn't have to learn much.""" start="00:04:44.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You just learn, you know, if you know a little Lisp""" start="00:04:46.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or how to type any expression,""" start="00:04:48.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""then you just change the outer brackets.""" start="00:04:50.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And all of a sudden, you have hyperbuttons.""" start="00:04:52.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So hyperbole, you can learn a little bit at a time.""" start="00:04:55.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And although it seems daunting at first""" start="00:05:01.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""because it has so much functionality,""" start="00:05:04.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""very large and rich architecture.""" start="00:05:06.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But what we do is teach people one piece at a time.""" start="00:05:09.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So just to continue on that a little bit,""" start="00:05:13.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""implicit buttons are buttons""" start="00:05:17.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that exist just from the text pattern in the buffer.""" start="00:05:19.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you saw an example of changing Lisp into implicit buttons right there.""" start="00:05:23.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I could do keystrokes.""" start="00:05:28.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can just type them out in my buffer""" start="00:05:30.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and surround them with braces.""" start="00:05:33.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So here's something, let's see,""" start="00:05:34.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""this is actually a command in the K Outliner""" start="00:05:37.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to jump to the cell numbered four. So let's just do that.""" start="00:05:41.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And it took me right there, right?""" start="00:05:45.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I'm just pressing made a return to activate these buttons.""" start="00:05:47.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Similarly, any sort of, this is a complex example,""" start="00:05:51.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but any path name I can surround with double quotes,""" start="00:05:56.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it's a live hyper button.""" start="00:05:59.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""In this case, I want to jump to a path name called readme.md,""" start="00:06:01.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but it's in a directory that's specified""" start="00:06:05.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""by an actual list variable. And then I want to go directly""" start="00:06:08.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to a headline within that file called hyperbole manual.""" start="00:06:13.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And within that headline, I wanna go""" start="00:06:17.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to the eighth line relative to that.""" start="00:06:19.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So all I have to do, made a return again,""" start="00:06:22.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and boom, I'm in that, I'm directly linked to that.""" start="00:06:24.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And Hyperbole has ways that you can just split your windows like this""" start="00:06:28.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and create that reference in the source buffer right there.""" start="00:06:33.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You just press a few keys and it'll embed that link.""" start="00:06:38.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We'll see that a little later.""" start="00:06:42.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Another example, so all of these buttons,""" start="00:06:43.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if I just show you here,""" start="00:06:47.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you can press Control-H, Capital-A anytime.""" start="00:06:49.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it will show you exactly""" start="00:06:52.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""what made a return will do in that context.""" start="00:06:54.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""In this case, it's an implicit button,""" start="00:06:56.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it shows you even where the button starts and ends,""" start="00:06:59.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""what type of action it will run,""" start="00:07:03.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it's a link to a file line,""" start="00:07:06.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then what arguments it takes.""" start="00:07:08.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So Hyperbole extracts all this meta information""" start="00:07:10.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""just from the text in your buffer""" start="00:07:14.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and displays it to you conveniently""" start="00:07:16.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so you can know before you ever touch a hyper button""" start="00:07:19.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if it will do something that you want it to do.""" start="00:07:22.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Here we have a fairly advanced button""" start="00:07:24.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that's very simple to do. You just specify a bug in Emacs""" start="00:07:28.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that you want to reference to.""" start="00:07:31.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Notice no delimiters, just bug pound, whatever, made a return.""" start="00:07:34.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And I'm in GNU's reading the conversation for that bug.""" start="00:07:40.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And I can just, you know, move""" start="00:07:45.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""through all the conversation.""" start="00:07:48.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can quit out of there and go back to where I was.""" start="00:07:50.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So very, very easy to use these implicit buttons""" start="00:07:56.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""because they're already there""" start="00:07:59.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""throughout your Emacs buffers.""" start="00:08:00.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I described the control HA, what that does.""" start="00:08:03.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And there's other types of buttons""" start="00:08:06.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that we can get into as questions go on,""" start="00:08:09.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but you can create your own explicit buttons""" start="00:08:11.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that have a little slightly different delimiter than you see""" start="00:08:14.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""in the implicit buttons.""" start="00:08:18.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And this one I just put in here to show you that""" start="00:08:19.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""If you use it and you go, this is the hyperbole to do list,""" start="00:08:24.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which is an org buffer.""" start="00:08:30.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But I wanted to show in here that similarly,""" start="00:08:31.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""we have implicit buttons for to do's in the work.""" start="00:08:35.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And when we hit made a return,""" start="00:08:37.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it just changes the state of that to do.""" start="00:08:39.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And I can cycle through those""" start="00:08:42.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but even better with the prefix argument""" start="00:08:44.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if I have multiple sequences of to do's""" start="00:08:47.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""because there's Bob and Matt's that maintain hyperbole""" start="00:08:50.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so I can shift to Bob's to do's""" start="00:08:53.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with control you made a return""" start="00:08:56.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then cycle through the states for me""" start="00:08:57.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So very very easy to use,""" start="00:09:00.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you know something that's a little bit more difficult to do""" start="00:09:05.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I think in org without it and So that's an explicit button""" start="00:09:08.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""where I had to actually say I want to create this button,""" start="00:09:16.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and I had to specify what type it is.""" start="00:09:19.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""If I show you the information there again,""" start="00:09:21.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you see it has a little different type""" start="00:09:23.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""called a keyboard key, which runs just the key sequence.""" start="00:09:25.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you're starting to see already""" start="00:09:29.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that explicit buttons have a type""" start="00:09:34.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that's connected to an action""" start="00:09:36.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that an implicit button can do as well.""" start="00:09:38.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So all of this ties back together.""" start="00:09:41.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And finally, there's a homepage that Hyperbole has,""" start="00:09:42.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""a personal homepage that you have.""" start="00:09:47.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You hit Control-H-H, which is our mini-buffer menu,""" start="00:09:49.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then you hit what is it, B for button file""" start="00:09:53.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then P for personal file.""" start="00:09:58.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And that just brings you to basically a set of links""" start="00:10:01.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that you can create buttons in any format you want.""" start="00:10:05.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's no structure that you see here.""" start="00:10:10.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But the nice thing is that all of these buttons that have these names, as we call them,""" start="00:10:12.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with the delimiters here,""" start="00:10:18.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""can be referenced now as what we call global buttons""" start="00:10:20.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""wherever you are in Emacs. So I'm in a separate buffer here""" start="00:10:23.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and say I want to jump to that to-do button""" start="00:10:28.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that's labeled TD on line 10 down there.""" start="00:10:30.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""No matter what I have on screen,""" start="00:10:33.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can hit control H, H, G for global button,""" start="00:10:35.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""A for activate, and then it gives me a list of those.""" start="00:10:39.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I know it's TD, I just put TD in.""" start="00:10:43.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Okay, that's a path link problem I have,""" start="00:10:47.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but when I fix the link, it would go to it.""" start="00:10:52.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you can create buttons""" start="00:10:56.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that you can access in any mode, anywhere,""" start="00:10:58.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and just give them quick names, and it's very easy.""" start="00:11:01.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So that kind of gives you an idea""" start="00:11:05.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""of how you can get very productive""" start="00:11:08.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with hyperbole with just a few simple techniques.""" start="00:11:11.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You still there Sacha? Yep, I'm still here.""" start="00:11:15.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I have too many tabs.""" start="00:11:30.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So the question is, I've been using activities.el""" start="00:11:37.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and bufferload to save dedicated workplaces,""" start="00:11:46.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""open buffers, and decisions in tabs and frames""" start="00:11:48.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""for tasks and projects across the next sessions.""" start="00:11:52.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Can I do something similar with Hyper-V? Yes, you can.""" start="00:11:54.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And activities is a nice package from alphapapa.""" start="00:12:00.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We've actually been working with it lately.""" start="00:12:03.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So we're probably in the next month or so""" start="00:12:07.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""we'll have a specific integration""" start="00:12:11.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to activities built into Hyperbole.""" start="00:12:13.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But right now, we don't. But of course, you can call""" start="00:12:16.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""any of its functions or key bindings""" start="00:12:21.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""using the techniques that I just showed you earlier.""" start="00:12:23.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But what we do have built in if you go to the menu again.""" start="00:12:26.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you see control HH,""" start="00:12:33.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then there's a W, Windows, WinConfig menu,""" start="00:12:35.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and there's two types of window configurations that you can save here.""" start="00:12:43.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""They are, right now, they're per Emacs session.""" start="00:12:48.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""They're not stored beyond that,""" start="00:12:52.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but we'll probably add that in as well,""" start="00:12:55.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or we'll use activities for that.""" start="00:12:58.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so the two types are you can either just save a window configuration in a frame""" start="00:12:59.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to actually it stores the frame configuration""" start="00:13:07.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to a ring just like the kill ring""" start="00:13:10.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so you have the three commands at the right""" start="00:13:13.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you can save with an s you can pop one off the ring with p""" start="00:13:16.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or you can just yank and keep cycling through with a y""" start="00:13:21.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it will restore the frame configuration that you saved.""" start="00:13:25.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Similarly you can just do it by name""" start="00:13:31.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you can say I want to add a name""" start="00:13:35.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then you know just give it a name again win win C and store it and it stores it there""" start="00:13:36.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then you can get back to it by name as well.""" start="00:13:45.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So fairly fairly easy to use as well""" start="00:13:48.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and again integrated in the same simple menu system.""" start="00:13:51.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So thanks for that question.""" start="00:13:55.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Should I just go to the next question?""" start="00:13:57.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""How well do hyperbole and org mode work together?""" start="00:14:07.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Is there any kind of integration?""" start="00:14:10.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Yes, in fact, that's really good.""" start="00:14:12.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I'll just mention something. Let me go back to my homepage.""" start="00:14:18.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I just stored that here. So we gave a talk at an earlier""" start="00:14:22.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Emacs conference right here on org""" start="00:14:26.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and hyperbole integration.""" start="00:14:31.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So that's a good one to go back to.""" start="00:14:33.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And I believe it's in this files""" start="00:14:35.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""included with hyperbole as well.""" start="00:14:39.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you can learn various techniques""" start="00:14:41.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""of how the action key helps you in org.""" start="00:14:45.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It does special things in tables.""" start="00:14:48.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And there's some nice support for, for example, working with code blocks.""" start="00:14:51.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me see where that is. Okay, so right back here.""" start="00:15:00.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you can run them with the action key.""" start="00:15:02.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can refresh the output and do things like that.""" start="00:15:09.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So again, if I just hit Control-H-A,""" start="00:15:15.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it'll tell me that it's in SmartOrg,""" start="00:15:17.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it'll give me all the different contexts that that operates within.""" start="00:15:20.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So there's a lot that it does in here.""" start="00:15:24.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And you can see it would point on the dir value of a code block definition""" start="00:15:26.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that will actually display a summary""" start="00:15:30.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and all sorts of functionality.""" start="00:15:33.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So the integration is quite tight.""" start="00:15:35.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And one of the things we do""" start="00:15:37.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""since made return is used in org,""" start="00:15:39.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""we have a customization setting, C even O.""" start="00:15:41.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And you have these three settings where you can say,""" start="00:15:44.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I want me to return to, I want hyperbole to control that""" start="00:15:48.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and everything that the action key does I want to happen.""" start="00:15:53.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Or I only want hyperbole to control""" start="00:15:57.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""when I'm over a hyperbole implicit explicit button.""" start="00:16:00.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Or I want org to control that key and never use hyperbole.""" start="00:16:03.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you just set that once,""" start="00:16:09.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it's persistent across sessions and you're good to go.""" start="00:16:10.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And again, it's built right into the menus.""" start="00:16:13.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So but even following that we've the latest addition to hyperbole is Something""" start="00:16:16.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and this is the first time""" start="00:16:23.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""we're really showing it publicly is the high wiki""" start="00:16:25.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Which is a new subsystem as we call it""" start="00:16:29.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and this is I think the best wiki capability in Emacs now what it does is it automatically highlights""" start="00:16:33.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""let me turn it on I have to turn on high wiki mode""" start="00:16:44.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you see those wiki words now got highlighted so any any wiki word""" start="00:16:48.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which is the capitalized alpha word you know""" start="00:16:54.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so you can have multiple capitals in there""" start="00:16:58.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and I'll get recognized can be used as a wiki word""" start="00:17:01.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so for example when I just type hi wiki here""" start="00:17:06.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it automatically recognizes it,""" start="00:17:09.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you see it turned it into a hyperlink button,""" start="00:17:11.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which again, Control-H-A will tell me exactly what it does there.""" start="00:17:14.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But I can just hit the action key, made a return,""" start="00:17:18.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it'll display my hiwiki.org file.""" start="00:17:23.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""All wiki pages are org files.""" start="00:17:26.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So we're using that for the wikis, and you have""" start="00:17:30.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can export an entire wiki""" start="00:17:35.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""using essentially the org export capability""" start="00:17:40.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""With a little extra set of features that we've added in""" start="00:17:43.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but let's say even better you see""" start="00:17:48.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I have this heading here so let me just change this""" start="00:17:51.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you go back here and I'll say go to heading""" start="00:17:54.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so you just put a pound on it""" start="00:17:59.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and now that whole thing is a reference to a specific org section.""" start="00:18:01.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Notice there's no org IDs here.""" start="00:18:05.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's nothing other than the text that you're seeing.""" start="00:18:08.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's not even a delimiter.""" start="00:18:11.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So we have automatic implicit hyper buttons""" start="00:18:13.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""being added in any buffer.""" start="00:18:17.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Could be a comment in a programming buffer with all you""" start="00:18:20.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You don't have to add anything.""" start="00:18:23.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I'll show you how to create a new page in a minute.""" start="00:18:26.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But you see I can link to any org section without any IDs.""" start="00:18:32.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And then I can also do like org-roam does,""" start="00:18:35.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but without the indexing or database that it requires.""" start="00:18:38.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can scan over all of my wiki files and headings.""" start="00:18:42.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""find a match really quickly.""" start="00:18:46.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So we can get into some of that a little later as well.""" start="00:18:48.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But, you know, very convenient.""" start="00:18:53.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's nothing that you change on org to do this.""" start="00:18:55.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So how do I create a wiki word?""" start="00:18:58.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Well, let's say I wanted, you know, wiki word for me.""" start="00:19:00.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So that's already, that was a wiki word,""" start="00:19:07.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but now this is a new one. So you see it doesn't highlight""" start="00:19:10.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""because I haven't created a wiki page yet.""" start="00:19:12.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So all I hit is the action key, and boom.""" start="00:19:16.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Now it created it as a new wiki word.""" start="00:19:20.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It created the .org file.""" start="00:19:23.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""If I don't edit this file, it won't save it,""" start="00:19:24.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it'll not become a word in case you made an accident.""" start="00:19:28.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But let's just say I want to say it.""" start="00:19:32.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, you know, heading. That's it. I'm just in org mode.""" start="00:19:34.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Now anytime that high wiki mode is active,""" start="00:19:39.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""in any buffer essentially,""" start="00:19:42.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can type that out and it'll recognize it.""" start="00:19:46.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Notice so that's not a wiki word.""" start="00:19:50.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So it's highlighting and it's unhighlighting""" start="00:19:53.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""right as I type.""" start="00:19:55.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, again, you can embed these as org links in org.""" start="00:19:56.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's a special format like this, HiWiki word""" start="00:20:03.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that you can make an org link""" start="00:20:09.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if I was in org mode, just like that.""" start="00:20:11.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So there's all sorts of compatibility,""" start="00:20:13.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but basically it's just words,""" start="00:20:16.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and HiWiki takes care of the rest for you.""" start="00:20:18.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So there's a directory where all these, it's HiWiki,""" start="00:20:21.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""hi wiki tilde slash""" start="00:20:26.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""hi wiki is the default place where all these would be found""" start="00:20:28.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and there's a menu now in hyperbole for hi wiki h""" start="00:20:32.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you can see it has a lot of capabilities""" start="00:20:36.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but i can say b go into the directory of all the files""" start="00:20:40.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""just pull them up and any of these you'll see""" start="00:20:44.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""let me give you one like this me okay so you can see the other wiki words being highlighted in here""" start="00:20:47.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so it's very fast to this there's almost no delay for anything""" start="00:20:59.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and yet very flexible and you have this ability you know where you could type emacs section dash 1 dash 2""" start="00:21:04.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and If you didn't have delimiters around it,""" start="00:21:14.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but you can put any delimiters""" start="00:21:16.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""like double quotes or parentheses,""" start="00:21:18.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then it'll match without you having to change the header at all""" start="00:21:20.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with the spaces included and all of those.""" start="00:21:25.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""know will get recognized.""" start="00:21:28.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I don't know if this if the section exists right there.""" start="00:21:31.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So anyway a lot of capability you can see that here where I did the high""" start="00:21:35.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it actually highlights as an org link""" start="00:21:41.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""because it is an org link""" start="00:21:45.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it'll operate just like any other org link""" start="00:21:46.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""even though it's a high wiki word link as well.""" start="00:21:50.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So very powerful stuff""" start="00:21:54.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and totally integrated with Org Mode throughout.""" start="00:21:55.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Great. There's another question.""" start="00:22:00.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Are there any talks from this year's Emacs Conf""" start="00:22:06.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that discuss things that would work well with Hyperbole?""" start="00:22:09.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""No. Unfortunately, I had to work yesterday, so I haven't...""" start="00:22:12.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""been following the conference as much as I do.""" start="00:22:19.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Maybe somebody else could comment on that.""" start="00:22:22.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But I think, you know, again,""" start="00:22:25.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it's like pick your favorite mode,""" start="00:22:29.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""pick your favorite type of information.""" start="00:22:31.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Can I hyperbole work with that?""" start="00:22:34.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You know, the answer is almost always yes.""" start="00:22:36.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, you know, if I show you just a little bit,""" start="00:22:40.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if I show you some of these implicit button types,""" start="00:22:44.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""just so you know the amount of code""" start="00:22:48.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""involved to create a type.""" start="00:22:53.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So here's like a male, recognizing""" start="00:22:56.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""an email address as a button.""" start="00:22:59.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It's a little long so that it creates a lot of things""" start="00:23:01.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but you know it's less than 15 lines of code for that.""" start="00:23:05.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Path names are complicated so that's a longer one""" start="00:23:09.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but let's look at so here's one recognizing a bibliography entry.""" start="00:23:12.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So it can be between two and 20 lines of code""" start="00:23:18.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to create an entirely new button type.""" start="00:23:24.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And you create it once, and you just add it to the set of types,""" start="00:23:27.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""just like at the fun, except it's done with this macro""" start="00:23:32.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""called def, implicit button type, and defib.""" start="00:23:35.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And it's part of your hyperlinking system forever then.""" start="00:23:39.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So say you got dumped with 5,000 documents""" start="00:23:45.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that were in this weird text format,""" start="00:23:49.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and they all had cross-references among them,""" start="00:23:51.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but it was, again, using a weird format.""" start="00:23:54.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You could just write your own little type for that,""" start="00:23:56.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then those 5,000 documents are hyperlinked for you""" start="00:23:59.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""every time you're browsing them in Emacs automatically.""" start="00:24:04.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So we do that all the time, create small things,""" start="00:24:08.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but all of these are built into Hyperbole.""" start="00:24:11.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Markdown links, tech info links, all of that's automatic.""" start="00:24:15.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I could even be in a shell mode, and I just say ls,""" start="00:24:20.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and these are hyperlinks that Hyperbole understands, right?""" start="00:24:26.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It just jumps right to the file.""" start="00:24:30.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So grep-n, You know, looking at any line numbers,""" start="00:24:31.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you don't have to remember""" start="00:24:37.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""all these different commands anymore.""" start="00:24:39.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You just hit made a return,""" start="00:24:41.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and Hyperbole does the right thing""" start="00:24:44.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""in all these different contexts,""" start="00:24:46.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""including following cross-references in code.""" start="00:24:48.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I would say that's your answer.""" start="00:24:52.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Most things that people are talking about,""" start="00:24:56.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""we've already probably integrated with Hyperbole""" start="00:24:58.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or with a little bit of custom coding.""" start="00:25:02.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can do it. I think that's the end of the etherpad questions for now,""" start="00:25:04.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but I see a number of people in the room,""" start="00:25:11.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so you can continue the conversation.""" start="00:25:12.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We'll be on the stream for another five minutes or so,""" start="00:25:15.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but yes, please go ahead. Great. Yeah.""" start="00:25:18.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I mean, people, does everybody have, can talk on the conference?""" start="00:25:22.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I was expecting to just talk with people here.""" start="00:25:27.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let's see. Yeah. Can anybody say anything here?""" start="00:25:31.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Hi, Bob. I can say something. Hey, Matt. Hi. Yeah.""" start="00:25:40.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Maybe you want to bring up a topic.""" start="00:25:52.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I think I... Yes. Sorry, Bob.""" start="00:25:55.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I think I saw a question here on IOC. It was like this.""" start="00:25:56.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Interesting, but the many different link formats""" start="00:26:05.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""makes reading and analyzing my notes""" start="00:26:08.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""much harder and less usable outside Emacs.""" start="00:26:11.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I don't know if you have some comment on that.""" start="00:26:14.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Well, I mean, the different formats that you're saying,""" start="00:26:18.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""like angle brackets or curly braces,""" start="00:26:22.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""are just so that you can utilize many different types.""" start="00:26:24.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""of buttons, but if you just want to use key sequences,""" start="00:26:31.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""there's only one markup format.""" start="00:26:35.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""With org, you've got the square brackets,""" start="00:26:37.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which are consistent, but in order to have different types,""" start="00:26:41.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you have to type a prefix name,""" start="00:26:44.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""like you see the HY for the High Wiki buttons in org mode.""" start="00:26:47.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I think the trade-off is pretty much the same,""" start="00:26:53.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but Hyperbole always, always works""" start="00:26:57.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to minimize the amount of markup.""" start="00:27:02.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Markdown is pretty simple. A lot of people like that.""" start="00:27:04.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But I think you'll find in hyperbole texts,""" start="00:27:07.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""they read just like regular language.""" start="00:27:10.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I mean, the delimiters are fairly invisible.""" start="00:27:15.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I'm not sure what the issue is there.""" start="00:27:19.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And again, you can choose your own.""" start="00:27:23.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can make your own types with your own delimiters.""" start="00:27:24.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's even a custom macro""" start="00:27:27.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that instead of using that defib""" start="00:27:31.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""where you have to type out list code,""" start="00:27:33.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you can use regular expressions.""" start="00:27:35.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And in one line, you can define your own type of button""" start="00:27:37.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with its own delimiters.""" start="00:27:41.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, you know, depending on what works well for your eyes,""" start="00:27:42.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you can make Hyperbole adapt quite well to that.""" start="00:27:47.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And again, if you start using the HiWiki,""" start="00:27:51.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""there's literally zero markup on that.""" start="00:27:54.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you're just reading text,""" start="00:27:57.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and when you want something hyperlinked,""" start="00:27:59.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it's like a glossary or a dictionary entry.""" start="00:28:01.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It's just there, and it's just highlighted in the text.""" start="00:28:04.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I don't see much barrier to using it with many different types of documents.""" start="00:28:09.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me go back to the Emacs here.""" start="00:28:17.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""If there are any other questions.""" start="00:28:23.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me see. Let me go back to that. This K outline here.""" start="00:28:27.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So we covered HiWiki.""" start="00:28:36.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We're in the, I'll just show you some things""" start="00:28:38.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that we wanted to highlight""" start="00:28:43.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if people didn't have specific questions.""" start="00:28:44.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But feel free to jump in anytime""" start="00:28:46.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if you want to ask something.""" start="00:28:48.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So what we're looking at here is a K Outliner document.""" start="00:28:51.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's, you know, hyperbole is pretty well documented.""" start="00:28:57.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's a large manual. There's interactive.""" start="00:29:00.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""demos of it and there are videos as well""" start="00:29:04.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but the K Outliner is unique in Emacs""" start="00:29:09.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""because it it can do like full legal auto numbering you""" start="00:29:12.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""just say I want to create a new headline""" start="00:29:17.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you can see or I could create four""" start="00:29:21.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I could say I want to create three more of these""" start="00:29:23.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and I can do it all at once with one key""" start="00:29:26.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can then just tab to make sublevels here""" start="00:29:29.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you see this is using a specific outline format that we have""" start="00:29:33.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but if we do dot in the view specs here""" start="00:29:40.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it changes to legal outlining so it's really that simple""" start="00:29:43.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and all of these numbers are automatically maintained""" start="00:29:48.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""as I move stuff around I can use like org mode alt arrow keys""" start="00:29:51.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to like move things up and down, right?""" start="00:29:56.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And just move them around.""" start="00:30:00.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And when I run out, you know, when it can't go any higher,""" start="00:30:00.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it gives me an error.""" start="00:30:04.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And then it's just free form typing here with auto-wrapping.""" start="00:30:06.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""The nice thing is that there's,""" start="00:30:11.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""there's actually these hidden,""" start="00:30:13.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""let's get, hidden what are called ID stamps.""" start="00:30:17.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So these are permanent hyperlink anchors""" start="00:30:22.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that are assigned to each cell.""" start="00:30:24.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So as this cell moves in the outline,""" start="00:30:26.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you notice that this 29 didn't change.""" start="00:30:29.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you can move and all those other auto numbers shift""" start="00:30:32.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to represent the actual outline structure.""" start="00:30:37.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But this ID stamp of 29 stays the same.""" start="00:30:40.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you can embed that in links and say,""" start="00:30:44.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I want to link to cell 29.""" start="00:30:47.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""If I go, let me just go to the K Outliner example.""" start="00:30:51.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And I'll show you one of those, which is really cool.""" start="00:30:56.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Because what you can do is say, I want to link""" start="00:30:59.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me find that. It's down here somewhere.""" start="00:31:02.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I think there's 3A. Where was it? Yeah, okay.""" start="00:31:07.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So see right here, this is an internal link""" start="00:31:12.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with just the pound and then the relative ID, as we call it, 3B.""" start="00:31:16.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But of course, somebody may have moved 3B in the outline.""" start="00:31:21.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So when Hyperbole inserts a link,""" start="00:31:25.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it puts this equal with the ID stamp in it automatically.""" start="00:31:27.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So if what'll happen is when I reference this,""" start="00:31:32.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""okay, it's still the same.""" start="00:31:35.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But if it had changed, it would update this link""" start="00:31:37.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and would change the 3B to say it was 3D now""" start="00:31:40.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""based on this permalink, the 08 that's hidden away in here.""" start="00:31:44.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you don't have to do anything.""" start="00:31:50.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It's just that you have these automatic hyperlink anchors""" start="00:31:52.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that are embedded in your outlines again.""" start="00:31:56.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""sort of like org IDs, but you have to manually place those in org.""" start="00:31:58.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And it just makes linking much simpler.""" start="00:32:04.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And you can reference this.""" start="00:32:09.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can reference the file and the cell number.""" start="00:32:10.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And again, you don't put this hyperbole.""" start="00:32:13.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You don't put this in.""" start="00:32:16.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And then you can even have these view specs, which say,""" start="00:32:17.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I want to clip the display to one line,""" start="00:32:20.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and I want to delete. ellipses.""" start="00:32:25.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So here we see a view over the same outline""" start="00:32:27.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that's all in one mode. So it's just incredibly capable.""" start="00:32:31.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So here we've said, you know,""" start="00:32:37.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""there's no blank lines between cells.""" start="00:32:40.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""now I change the view spec and put a blank line in there""" start="00:32:42.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it's all changed so lots of consistency that you get""" start="00:32:46.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""when you when you change a node in the outline""" start="00:32:51.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""the whole tree shifts and all of this is maintained""" start="00:32:55.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""all of the structure is maintained automatically by hyperbole""" start="00:32:58.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you can embed or Tables in here as well.""" start="00:33:02.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So if I just press made a return action key again on this or Disabled.""" start="00:33:09.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Okay. So now I enabled org mode here""" start="00:33:17.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and where you see like tab here shifts a cell when I'm inside a The table tab just operates like normal org tables.""" start="00:33:21.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I can do all of the things""" start="00:33:31.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that I can do in org table mode as well within this k-outline.""" start="00:33:33.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So it seems pretty useful to me,""" start="00:33:40.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but of course, I helped write it.""" start="00:33:43.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But I think you see some of the benefits""" start="00:33:48.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that can accrue by using that format.""" start="00:33:51.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But this is just this is just one piece of hyperbole,""" start="00:33:53.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""a major mode that you can choose to use or ignore entirely,""" start="00:33:57.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you know, dependent on your needs.""" start="00:34:01.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""If you're writing requirements, documents,""" start="00:34:04.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or anything that needs structure,""" start="00:34:06.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I think that's where this is really ideal.""" start="00:34:08.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can write a legal document,""" start="00:34:12.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you've got auto-numbering,""" start="00:34:14.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which is always, if you've ever used Word""" start="00:34:16.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or any of those word processors,""" start="00:34:18.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it's really a pain to maintain those hierarchies in those compared to here.""" start="00:34:21.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Okay, so that was just showing you the KL liner.""" start="00:34:26.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Does anybody have any questions""" start="00:34:32.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or I'll just continue down a bit?""" start="00:34:35.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Okay, so some other capabilities""" start="00:34:43.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that we've fairly recently put in.""" start="00:34:48.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Well, this has been here for a long time.""" start="00:34:49.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can, I think the binding I use is Control-C-M.""" start="00:34:52.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I forget what it is.""" start="00:34:58.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""No, sorry, that's Control-C, Control-M.""" start="00:35:00.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Now let's CTRL C, forward slash.""" start="00:35:07.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Okay, so what I wanted to show you here is that the action key""" start="00:35:14.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""on any double quote, single quote, usually,""" start="00:35:21.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or paired delimiters will select that whole thing.""" start="00:35:26.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There is this capability, and I probably just select bigger""" start="00:35:30.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and bigger chunks of text,""" start="00:35:33.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but this is really nice that you can just go anywhere""" start="00:35:35.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""in pretty much any mode and hit made a return.""" start="00:35:39.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And so in Lisp, you can be on the trailing paren""" start="00:35:42.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it will select the whole expression or the opening""" start="00:35:46.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and it'll select just that piece""" start="00:35:50.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but even better when you're copying pasting""" start="00:35:52.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can now if there's no region selected control W made a W""" start="00:35:56.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""will act on the structured entity""" start="00:36:02.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that you're at the beginning or ending delimiter for""" start="00:36:05.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""without you having to highlight the region""" start="00:36:09.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So if I hit made a return, it would highlight it,""" start="00:36:12.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but let's just do made a W to cut that and then I'll yank it here.""" start="00:36:14.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And you see it grabbed the whole expression""" start="00:36:19.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and just let you yank it.""" start="00:36:23.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So it's a nice add on to the basic Emacs commands""" start="00:36:25.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that just let you operate a lot more efficiently.""" start="00:36:29.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can do something similar in C mode.""" start="00:36:33.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You know, on the braces, you can select the whole function""" start="00:36:35.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with one key press,""" start="00:36:39.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""made a return, and then copy it somewhere.""" start="00:36:40.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And Hyperbole integrates with Ace Window if you use that.""" start="00:36:43.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So let me split this a few ways. And let's do it over here.""" start="00:36:50.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""We'll just go to scratch. Okay. And then I can go,""" start="00:36:56.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it's sort of interesting,""" start="00:37:06.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it works with the, with Dired as well.""" start="00:37:08.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I can go here and say, I want to So if I do Meta O,""" start="00:37:11.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""ACE window will show me the labels to use, A, D, or S, to do something.""" start="00:37:16.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Like I can move to any of those windows.""" start="00:37:22.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But what Hyperbole lets you do""" start="00:37:24.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""is say I want to throw with T,""" start="00:37:27.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""like this glass.org file over to the bottom window.""" start="00:37:30.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I go MetaO to invoke it. I say I want a T to throw it.""" start="00:37:36.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""then where do I want to throw it to s the window and""" start="00:37:42.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Then you see it's now displaying glass org""" start="00:37:46.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so I can do that with files I can do it with regions of text you can""" start="00:37:49.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Replace things in a buffer""" start="00:37:56.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or throw the whole thing to the window""" start="00:37:58.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""so a couple extra commands""" start="00:38:01.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that it extends ace window with you""" start="00:38:02.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""can even I think, well, we also have this command,""" start="00:38:06.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I think it's Control-C, yeah.""" start="00:38:12.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So what it did there was it just selected the files""" start="00:38:16.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that I had marked in Dura,""" start="00:38:21.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it selected and created a window grid out of all of them.""" start="00:38:22.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you know, so I hit like three keystrokes.""" start="00:38:26.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""That's kind of convenient if you want to see""" start="00:38:29.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""a lot of information all at once.""" start="00:38:35.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And so we covered all that. I won't go into it too much,""" start="00:38:38.160" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but there's a whole nother window and frame control system""" start="00:38:42.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""under the screen menu here if you type control HHS.""" start="00:38:46.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""then you can select either controlling windows or frames.""" start="00:38:50.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let's do windows.""" start="00:38:54.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And it has this menu where it's just sort of showing you.""" start="00:38:56.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can like split my windows vertically or horizontally.""" start="00:39:00.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can widen by a pixel or I can say, or character.""" start="00:39:07.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I can say, use my prefix argument to change that to 10.""" start="00:39:13.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And then when I shrink it, shrinks it up by 10""" start="00:39:18.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or it narrows it width by 10 or it widens it by 10.""" start="00:39:22.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So it has this concept of prefix arguments that persist""" start="00:39:27.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you just type in the number""" start="00:39:33.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then you can issue any number of the commands.""" start="00:39:35.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So you could move windows or frames""" start="00:39:38.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or create them, delete them, cycle through them,""" start="00:39:41.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""all sorts of things, including relative to movement,""" start="00:39:44.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""relative to the edges of your screens.""" start="00:39:48.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So if you have multiple screens""" start="00:39:50.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and many frames that you use,""" start="00:39:52.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""it just makes management very convenient.""" start="00:39:54.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And then you just cue to quit out of there""" start="00:39:59.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you're back wherever you were.""" start="00:40:02.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, Finally, we have a lot of documentation.""" start="00:40:04.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""This is just a link to the videos,""" start="00:40:10.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which is in the readme and in the manuals.""" start="00:40:12.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""There's two demos or tutorials. One to get you started.""" start="00:40:16.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Notice I'm using these implicit buttons, so keystrokes,""" start="00:40:21.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and I can just made a return on that.""" start="00:40:24.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And that takes me to, here's all the videos.""" start="00:40:26.880" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And you can get started with that""" start="00:40:30.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""or just interact with this demo that we have.""" start="00:40:34.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And there's one for the K Outliner as well.""" start="00:40:38.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""One of the things that If you're into videos""" start="00:40:41.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and you need to link to them,""" start="00:40:45.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""notice what you're seeing here. This is a hyperbole feature""" start="00:40:46.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""which is very difficult to achieve any other way that I've seen""" start="00:40:50.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""where you want a specific start and stop time""" start="00:40:54.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""in a video that you want to play.""" start="00:40:59.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Hyperbole has a built-in link type for that.""" start="00:41:01.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""as you see here. So this is the name of the link""" start="00:41:05.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that you can reference it by,""" start="00:41:08.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and then this is the actual link expression.""" start="00:41:10.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So I could just go and play a video right here,""" start="00:41:14.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and this is from one long intro to hyperbole that we did.""" start="00:41:17.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So it's just linking to the specific sections.""" start="00:41:22.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But that's something, again,""" start="00:41:25.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""this could be embedded anywhere.""" start="00:41:27.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""in any file and it would start to play.""" start="00:41:29.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Uh, I guess I could try YouTube.""" start="00:41:33.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Well, I don't want to. Yeah. Okay. It's on my other screen.""" start="00:41:36.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, but it did, it did, uh, link to it.""" start="00:41:43.240" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, um, yeah, just, you know, tremendous capability""" start="00:41:48.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to interlink your information that way.""" start="00:41:53.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And, uh, You know, again, you learn it bit by bit.""" start="00:41:56.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""You can study one particular section right here.""" start="00:42:00.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Just jump directly to that if you want to know about it.""" start="00:42:04.280" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""The manual is interlinked, has an extensive glossary,""" start="00:42:09.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""cross-references of sections.""" start="00:42:13.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And if you go in there, this is the hyperlinked manual.""" start="00:42:16.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So this is the structure of it""" start="00:42:23.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with all the subsystems documented.""" start="00:42:25.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""But one of the sections we've added""" start="00:42:27.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""is developing with hyperbole.""" start="00:42:31.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So if you are or you want to create your own button types,""" start="00:42:33.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""this explains how to do it.""" start="00:42:37.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Creating types, you can create your own action""" start="00:42:38.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and implicit button types.""" start="00:42:42.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And if you look in here, there are three ways""" start="00:42:45.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""to create implicit button types from simpler to harder.""" start="00:42:48.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So like, here's an example""" start="00:42:55.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""where the do pressing control X after this expression""" start="00:42:59.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""defines a new action button link type called pilot.""" start="00:43:03.680" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So let's say, I don't know if I have this set up, but we can try it.""" start="00:43:07.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Yeah, I don't have the variable setup,""" start="00:43:13.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""but basically, you know, it can get you.""" start="00:43:22.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""This is a one line definition of a new action type.""" start="00:43:25.760" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""that can get you to a Python file""" start="00:43:31.360" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""based on whatever your Python path is set to""" start="00:43:36.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""with this simple syntax right here.""" start="00:43:39.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And here we're going to the file.""" start="00:43:42.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So we have no idea where this is on the file system.""" start="00:43:45.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And the same way like if you use man path, Python path,""" start="00:43:48.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""you can embed buttons. Let's just go to scratch buffer.""" start="00:43:54.960" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""My first read-only. It doesn't want me to go.""" start="00:44:08.600" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It must be kind of strange.""" start="00:44:17.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Something with this key window that I have over here.""" start="00:44:25.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me just move off there. Look at that.""" start="00:44:34.800" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Maybe it's just activating that.""" start="00:44:41.040" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Yeah, it keeps jumping back there.""" start="00:44:46.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I don't know. I have to get this straight.""" start="00:44:53.320" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Yeah, it's not letting me type the buttons.""" start="00:44:55.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me see if I can turn off the key casting.""" start="00:45:02.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Yeah, maybe that'll help. just gonna exit out of here.""" start="00:45:15.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Does anybody have any questions they want to cover?""" start="00:45:23.520" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I was just gonna show you yeah a little more on type definitions""" start="00:45:33.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""if there was any interest OK, there's nobody piping up.""" start="00:45:39.080" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Let me see if there's any other questions.""" start="00:45:53.120" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Hi, Bob. I haven't seen any more questions.""" start="00:45:57.000" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Yeah, so maybe it's you, me, and someone called Max is here in the channel.""" start="00:46:04.440" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""OK. Okay, so if Max doesn't have any questions""" start="00:46:10.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""and there aren't other people, we can just end it there.""" start="00:46:19.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""I don't want to have an audience of zero or talk to that.""" start="00:46:24.840" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So, but I think that was a good overview, Max, right?""" start="00:46:34.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""Yes, definitely covered a lot in a short time.""" start="00:46:37.920" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And hopefully, you know, just try it out.""" start="00:46:45.480" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""At the top here, it shows you how to install it.""" start="00:46:48.640" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""It's pretty simple, basic package and installation.""" start="00:46:52.400" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And we're happy to help anybody get started if they need to.""" start="00:46:56.560" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""So thanks, everyone.""" start="00:47:02.720" video="mainVideo-hyperboleqa" id="subtitle"]]
+[[!template text="""And we'll answer any further questions on the Etherpad after this.""" start="00:47:05.200" video="mainVideo-hyperboleqa" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [rsw@gnu.org](mailto:rsw@gnu.org?subject=Comment%20for%20EmacsConf%202023%20hyperboleqa%3A%20Questions%20and%20answers%20to%20help%20you%20fly%20with%20Hyperbole)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/hyperboleqa-before.md b/2025/info/hyperboleqa-before.md
new file mode 100644
index 00000000..84d636d3
--- /dev/null
+++ b/2025/info/hyperboleqa-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 50-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-hyperboleqa>
+Etherpad: <https://pad.emacsconf.org/2025-hyperboleqa>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-hyperboleqa"><source src="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-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: 49:02 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-hyperboleqa">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.json">Download --main.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.m4v">Download --main.m4v (108MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.tsv">Download --main.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-hyperboleqa--questions-and-answers-to-help-you-fly-with-hyperbole--bob-weiner--original.m4v">Download --original.m4v (111MB)</a></li><li><a href="https://youtu.be/oGFyHe8SpE4">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/hyperboleqa-nav.md b/2025/info/hyperboleqa-nav.md
new file mode 100644
index 00000000..2e396846
--- /dev/null
+++ b/2025/info/hyperboleqa-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/zettelkasten">Zettelkasten for regular Emacs hackers</a>
+Next by track: <a href="/2025/talks/gardening">Gardening in Emacs: A Windows user's tale of tending, tweaking, and triumph</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/juicemacs-after.md b/2025/info/juicemacs-after.md
new file mode 100644
index 00000000..ca649a57
--- /dev/null
+++ b/2025/info/juicemacs-after.md
@@ -0,0 +1,422 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="juicemacs-mainVideo-transcript"></a><h1>Transcript</h1>
+
+[[!template text="""Hello! This is Kana!""" start="00:00:01.200" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And today I'll be talking about""" start="00:00:02.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""<b>J</b>ust-<b>I</b>n-<b>T</b>ime compilation, or JIT,""" start="00:00:04.368" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""for Emacs Lisp,""" start="00:00:06.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""based on my work-in-progress Emacs clone, Juicemacs.""" start="00:00:07.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Juicemacs aims to explore a few things""" start="00:00:11.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that I've been wondering about for a while.""" start="00:00:13.534" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For exmaple, what if we had better or even""" start="00:00:15.943" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""transparent concurrency in ELisp?""" start="00:00:18.568" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Or, can we have a concurrent GUI?""" start="00:00:21.323" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""One that does not block, or is blocked by Lisp code?""" start="00:00:23.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And finally what can JIT compilation do for ELisp?""" start="00:00:26.883" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Will it provide better performance?""" start="00:00:31.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""However, a main problem with explorations""" start="00:00:34.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in Emacs clones is that,""" start="00:00:37.401" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Emacs is a whole universe.""" start="00:00:38.723" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And that means, to make these explorations""" start="00:00:40.963" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""meaningful for Emacs users,""" start="00:00:43.601" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we need to cover a lot of Emacs features,""" start="00:00:45.483" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""before we can ever begin.""" start="00:00:47.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For example, one of the features of Emacs is that,""" start="00:00:50.643" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it supports a lot of encodings.""" start="00:00:54.023" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Let's look at this string: it can be encoded""" start="00:00:56.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in both Unicode and Shift-JIS, a Japanese encoding system.""" start="00:00:59.268" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But currently, Unicode does not have""" start="00:01:03.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""an official mapping for this &quot;ki&quot; (﨑) character.""" start="00:01:07.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So when we map from Shift-JIS to Unicode,""" start="00:01:09.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in most programming languages,""" start="00:01:12.768" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""you end up with something like this:""" start="00:01:14.523" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it's a replacement character.""" start="00:01:16.534" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But in Emacs, it actually extends""" start="00:01:19.243" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the Unicode range by threefold,""" start="00:01:22.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and uses the extra range to losslessly""" start="00:01:23.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""support characters like this.""" start="00:01:26.834" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So if you want to support this feature,""" start="00:01:29.583" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that basically rules out all string""" start="00:01:32.023" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""libraries with Unicode assumptions.""" start="00:01:34.034" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For another, you need to support""" start="00:01:37.843" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the regular expressions in Emacs,""" start="00:01:40.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which are, really irregular.""" start="00:01:41.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For example, it supports asserting""" start="00:01:45.123" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""about the user cursor position.""" start="00:01:46.901" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And it also uses some character tables,""" start="00:01:49.503" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that can be modified from Lisp code,""" start="00:01:52.034" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to determine to case mappings.""" start="00:01:53.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And all that makes it really hard, or even""" start="00:01:56.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""impossible to use any existing regexp libraries.""" start="00:01:59.568" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Also, you need a functional garbage collector.""" start="00:02:05.223" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""You need threading primitives, because""" start="00:02:07.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Emacs has already had some threading support.""" start="00:02:09.868" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And you might want the performance of your clone""" start="00:02:12.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to match Emacs, even with its native compilation enabled.""" start="00:02:14.534" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Not to mention you also need a GUI for an editor.""" start="00:02:19.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And so on.""" start="00:02:21.501" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For Juicemacs, building on Java and""" start="00:02:23.643" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""a compiler framework called Truffle,""" start="00:02:25.634" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""helps in getting better performance;""" start="00:02:27.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and by choosing a language with a good GC,""" start="00:02:30.603" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we can actually focus more on the challenges above.""" start="00:02:32.934" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Currently, Juicemacs has implemented three out of,""" start="00:02:38.163" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""at least four of the interpreters in Emacs.""" start="00:02:41.434" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""One for lisp code, one for bytecode,""" start="00:02:44.083" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and one for regular expressions,""" start="00:02:46.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""all of them JIT-capable.""" start="00:02:48.568" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Other than these, Emacs also has around""" start="00:02:51.003" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""two thousand built-in functions in C code.""" start="00:02:53.668" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And Juicemacs has around""" start="00:02:56.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""four hundred of them implemented.""" start="00:02:57.334" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""It's not that many, but it is surprisingly enough""" start="00:02:59.863" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to bootstrap Emacs and run""" start="00:03:03.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the portable dumper, or pdump, in short.""" start="00:03:05.201" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Let's have a try.""" start="00:03:08.583" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""""" start="00:03:11.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So this is the binary produced by Java native image.""" start="00:03:11.803" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And it's loading all the files""" start="00:03:15.023" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""needed for bootstrapping.""" start="00:03:17.168" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Then it dumps the memory to a file to""" start="00:03:18.863" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""be loaded later, giving us fast startup.""" start="00:03:22.234" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""As we can see here, it throws some frame errors""" start="00:03:25.023" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""because Juicemacs doesn't have an editor UI""" start="00:03:28.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or functional frames yet.""" start="00:03:31.401" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But otherwise, it can already run""" start="00:03:33.383" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""quite some lisp code.""" start="00:03:35.368" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For example, this code uses the benchmark library""" start="00:03:36.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to measure the performance of this Fibonacci function.""" start="00:03:40.401" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And we can see here, the JIT engine is""" start="00:03:44.503" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""already kicking in and makes the execution faster.""" start="00:03:47.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""In addition to that, with a bit of workaround,""" start="00:03:51.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Juicemacs can also run some of the ERT,""" start="00:03:53.583" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or, <b>E</b>macs <b>R</b>egression <b>T</b>est suite, that comes with Emacs.""" start="00:03:56.468" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So... Yes, there are a bunch of test failures,""" start="00:04:01.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which means we are not that compatible""" start="00:04:05.923" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""with Emacs and need more work.""" start="00:04:07.934" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But the whole testing procedure runs fine,""" start="00:04:09.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and it has proper stack traces,""" start="00:04:12.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which is quite useful for debugging Juicemacs.""" start="00:04:14.768" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So with that, a rather functional JIT runtime,""" start="00:04:17.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""let's now try look into today's topic, JIT compilation for ELisp.""" start="00:04:21.034" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, you probably know that Emacs has supported""" start="00:04:26.083" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""native-compilation, or nativecomp in short, for some time now.""" start="00:04:28.534" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""It mainly uses GCC to compile Lisp code""" start="00:04:32.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""into native code, ahead of time.""" start="00:04:35.034" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And during runtime, Emacs loads those compiled files,""" start="00:04:37.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and gets the performance of native code.""" start="00:04:41.434" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""However, for example, for installed packages,""" start="00:04:44.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we might want to compile them when we""" start="00:04:47.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""actually use them instead of ahead of time.""" start="00:04:49.060" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And Emacs supports this through""" start="00:04:51.923" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""this <i>native-comp-jit-compilation</i> flag.""" start="00:04:53.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""What it does is, during runtime, Emacs sends""" start="00:04:55.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""loaded files to external Emacs worker processes,""" start="00:04:59.768" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which will then compile those files asynchronously.""" start="00:05:03.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And when the compilation is done,""" start="00:05:07.003" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the current Emacs session will load the compiled code back""" start="00:05:09.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and improves its performance, on the fly.""" start="00:05:11.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""When you look at this procedure, however, it is,""" start="00:05:16.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""ahead-of-time compilation, done at runtime.""" start="00:05:18.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And it is what current Emacs calls JIT compilation.""" start="00:05:21.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But if you look at some other JIT engines,""" start="00:05:25.223" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""you'll see much more complex architectures.""" start="00:05:27.868" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, take luaJIT for an example,""" start="00:05:31.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in addition to this red line here,""" start="00:05:34.234" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which leads us from an interpreted state""" start="00:05:36.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to a compiled native state,""" start="00:05:38.768" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which is also what Emacs does,""" start="00:05:40.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""LuaJIT also supports going from""" start="00:05:42.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""a compiled state back to its interpreter.""" start="00:05:44.334" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And this process is called &quot;deoptimization&quot;.""" start="00:05:47.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""In contrast to its name, deoptimization here actually""" start="00:05:51.583" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""enables a huge category of JIT optimizations.""" start="00:05:55.301" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""They are called speculation.""" start="00:05:58.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Basically, with speculation, the compiler""" start="00:06:01.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""can use runtime statistics to speculate,""" start="00:06:04.601" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to make bolder assumptions in the compiled code.""" start="00:06:07.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And when the assumptions are invalidated,""" start="00:06:11.543" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the runtime deoptimizes the code, updates statistics,""" start="00:06:14.083" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and then recompile the code based on new assumptions,""" start="00:06:18.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and that will make the code more performant.""" start="00:06:21.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Let's look at an example.""" start="00:06:24.543" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, here is a really simple function,""" start="00:06:28.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that adds one to the input number.""" start="00:06:30.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But in Emacs, it is not that simple,""" start="00:06:33.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""because Emacs has three categories of numbers,""" start="00:06:36.168" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that is, fix numbers, or machine-word-sized integers,""" start="00:06:38.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""floating numbers, and big integers.""" start="00:06:42.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And when we compile this, we need""" start="00:06:45.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to handle all three cases.""" start="00:06:47.601" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And if we analyze the code produced by Emacs,""" start="00:06:49.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""as is shown by this gray graph here,""" start="00:06:52.601" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we can see that it has, two paths:""" start="00:06:54.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""One fast path, that does fast fix number addition;""" start="00:06:58.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and one for slow paths, that calls out""" start="00:07:01.503" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to an external plus-one function,""" start="00:07:03.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to handle floating number and big integers.""" start="00:07:06.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Now, if we pass integers into this function,""" start="00:07:09.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it's pretty fast because it's on the fast path.""" start="00:07:13.168" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""However, if we pass in a floating number,""" start="00:07:16.383" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""then it has to go through the slow path,""" start="00:07:19.768" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""doing an extra function call, which is slow.""" start="00:07:21.943" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""What speculation might help here is that,""" start="00:07:25.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it can have flexible fast paths.""" start="00:07:28.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""When we pass a floating number into this function,""" start="00:07:31.543" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which currently has only fixnumbers on the fast path,""" start="00:07:34.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it also has to go through the slow path.""" start="00:07:37.401" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But the difference is that, a speculative runtime can""" start="00:07:40.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""deoptimize and recompile the code to adapt to this.""" start="00:07:44.568" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And when it recompiles, it might add""" start="00:07:47.863" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""floating number onto the fast path,""" start="00:07:50.368" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and now floating number operations are also fast.""" start="00:07:52.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And this kind of speculation is why""" start="00:07:55.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""speculative runtime can be really fast.""" start="00:07:58.568" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Let's take a look at some benchmarks.""" start="00:08:03.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""They're obtained with the <i>elisp-benchmarks</i> library on ELPA.""" start="00:08:05.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""The blue line here is for nativecomp,""" start="00:08:09.523" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and these blue areas mean that nativecomp is slower.""" start="00:08:12.601" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And, likewise, green areas mean that""" start="00:08:16.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Juicemacs is slower.""" start="00:08:19.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""At a glance, the two (or four)""" start="00:08:20.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""actually seems somehow on par, to me.""" start="00:08:22.868" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But, let's take a closer look at some of them.""" start="00:08:25.243" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, the first few benchmarks are the classic,""" start="00:08:30.483" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Fibonacci benchmarks.""" start="00:08:32.668" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""We know that, the series is formed by""" start="00:08:34.083" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""adding the previous two numbers in the series.""" start="00:08:36.934" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And looking at this expression here,""" start="00:08:39.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Fibonacci benchmarks are quite intensive""" start="00:08:41.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in number additions, subtractions,""" start="00:08:44.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and function calls, if you use recursions.""" start="00:08:46.801" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And it is exactly why""" start="00:08:49.203" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Fibonacci series is a good benchmark.""" start="00:08:51.001" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And looking at the results here... wow.""" start="00:08:54.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Emacs nativecomp executes instantaneously.""" start="00:08:57.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""It's a total defeat for Juicemacs, seemingly.""" start="00:08:59.943" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Now, if you're into benchmarks, you know something is wrong here:""" start="00:09:04.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we are comparing the different things.""" start="00:09:08.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So let's look under the hood""" start="00:09:11.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and disassemble the function""" start="00:09:14.201" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""with this convenient Emacs command""" start="00:09:15.583" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""called <i>disassemble</i>...""" start="00:09:17.568" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And these two lines of code is what we got.""" start="00:09:19.163" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, we already can see""" start="00:09:23.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""what's going on here:""" start="00:09:24.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""GCC sees Fibonacci is a pure function,""" start="00:09:26.223" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""because it returns the same value""" start="00:09:30.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""for the same arguments,""" start="00:09:31.868" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""so GCC chooses to do the computation""" start="00:09:33.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""at compile time""" start="00:09:35.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and inserts the final number directly""" start="00:09:36.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""into the compiled code.""" start="00:09:39.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""It is actually great!""" start="00:09:41.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Because it shows that nativecomp""" start="00:09:43.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""knows about pure functions,""" start="00:09:45.401" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and can do all kinds of things""" start="00:09:47.383" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""like removing or constant-folding them.""" start="00:09:48.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And Juicemacs just does not do that.""" start="00:09:51.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""However, we are also concerned about""" start="00:09:54.503" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the things we mentioned earlier:""" start="00:09:57.368" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the performance of number additions,""" start="00:09:59.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or function calls.""" start="00:10:00.901" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, in order to let the benchmarks""" start="00:10:03.083" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""show some extra things,""" start="00:10:05.634" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we need to modify it a bit...""" start="00:10:06.963" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""by simply making things non-constant.""" start="00:10:08.368" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""With that, Emacs gets much slower now.""" start="00:10:11.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And again, let's look what's""" start="00:10:15.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""happening behind these numbers.""" start="00:10:17.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Similarly, with the <i>disassemble</i> command,""" start="00:10:21.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we can look into the assembly.""" start="00:10:23.501" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And again, we can already see""" start="00:10:25.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""what's happening here.""" start="00:10:28.020" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, Juicemacs, due to its speculation nature,""" start="00:10:29.403" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""supports fast paths for all three kind of numbers.""" start="00:10:32.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""However, currently, Emacs nativecomp""" start="00:10:35.543" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""does not have any fast path""" start="00:10:39.234" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""for the operations here like additions,""" start="00:10:41.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or subtractions, or comparisons,""" start="00:10:43.434" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which is exactly what""" start="00:10:45.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Fibonacci benchmarks are measuring.""" start="00:10:48.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Emacs, at this time, has to call some generic,""" start="00:10:51.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""external functions for them, and this is slow.""" start="00:10:53.801" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But is nativecomp really that slow?""" start="00:11:00.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, I also ran the same benchmark""" start="00:11:03.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in Common Lisp, with SBCL.""" start="00:11:04.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And nativecomp is already fast,""" start="00:11:07.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""compared to untyped SBCL.""" start="00:11:09.001" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""It's because SBCL also emits call instructions""" start="00:11:11.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""when it comes to no type info.""" start="00:11:15.501" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""However, once we declare the types,""" start="00:11:18.583" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""SBCL is able to compile a fast path for fix numbers,""" start="00:11:21.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which makes its performance on par""" start="00:11:25.383" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""with speculative JIT engines (that is, Juicemacs),""" start="00:11:27.468" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""because, now both of us are now on fast paths.""" start="00:11:30.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Additionally, if we are bold enough""" start="00:11:36.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to pass this safety zero flag to SBCL,""" start="00:11:38.401" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it will remove all the slow paths""" start="00:11:41.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and type checks,""" start="00:11:43.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and its performance is close""" start="00:11:45.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to what you get with C.""" start="00:11:46.368" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Well, probably we don't want safety zero""" start="00:11:48.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""most of the time.""" start="00:11:51.300" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But even then, if nativecomp were to""" start="00:11:52.163" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""get fast paths for more constructs,""" start="00:11:55.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""there certainly is quite""" start="00:11:57.863" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""some room for performance improvement.""" start="00:11:59.868" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Let's look at some more benchmarks.""" start="00:12:04.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For example, for this inclist,""" start="00:12:06.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or increment-list, benchmark,""" start="00:12:08.934" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Juicemacs is really slow here. Partly,""" start="00:12:11.023" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it comes from the cost of Java boxing integers.""" start="00:12:14.334" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""On the other hand, for Emacs nativecomp,""" start="00:12:17.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""for this particular benchmark,""" start="00:12:20.301" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it actually has fast paths""" start="00:12:22.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""for all of the operations.""" start="00:12:23.668" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And that's why it can be so fast,""" start="00:12:25.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and that also proves the nativecomp""" start="00:12:27.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""has a lot potential for improvement.""" start="00:12:30.668" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""There is another benchmark here""" start="00:12:33.943" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that use advices.""" start="00:12:35.834" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So Emacs Lisp supports using""" start="00:12:38.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""advices to override functions""" start="00:12:40.501" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""by wrapping the original function, and an advice""" start="00:12:42.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""function, two of them, inside a glue function.""" start="00:12:44.834" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And in this benchmark, we advice the Fibonacci function""" start="00:12:47.543" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to cache the first ten entries to speed up computation,""" start="00:12:51.468" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""as can be seen in the speed-up in the Juicemacs results.""" start="00:12:54.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""However, it seems that nativecomp does not yet""" start="00:13:00.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""compile glue functions, and that makes advices slower.""" start="00:13:02.901" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""With these benchmarks, let's discuss this big question:""" start="00:13:08.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Should GNU Emacs adopt speculative JIT compilation?""" start="00:13:12.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Well, the hidden question is actually,""" start="00:13:16.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""is it worth it?""" start="00:13:18.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And, my personal answer is, maybe not.""" start="00:13:21.323" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""The first reason is that, slow paths, like, floating numbers,""" start="00:13:24.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""are actually not that frequent in Emacs.""" start="00:13:28.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And optimizing for fast paths like fix numbers""" start="00:13:31.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""can already get us very good performance already.""" start="00:13:34.101" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And the second or main reason is that,""" start="00:13:38.083" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""speculative JIT is very hard.""" start="00:13:40.334" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""LuaJIT, for example, took a genius to build.""" start="00:13:43.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Even with the help of GCC, we need to hand-write""" start="00:13:46.943" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""all those fast path or slow path or switching logic.""" start="00:13:50.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""We need to find a way to deoptimize, which requires""" start="00:13:54.383" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""mapping machine registers back to interpreter stack.""" start="00:13:58.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And also, speculation needs runtime info,""" start="00:14:01.903" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which also costs us extra memory.""" start="00:14:04.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Moreover, as is shown by some benchmarks above,""" start="00:14:07.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""there's some low-hanging fruits in nativecomp that""" start="00:14:10.863" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""might get us better performance with relatively lower effort.""" start="00:14:13.334" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Compared to this, a JIT engine is a huge, huge undertaking.""" start="00:14:17.443" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But, for Juicemacs, the JIT engine comes a lot cheaper,""" start="00:14:22.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""because, we are cheating by building on""" start="00:14:26.223" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""an existing compiler framework called Truffle.""" start="00:14:29.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Truffle is a meta-compiler framework,""" start="00:14:33.543" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which means that it lets you write""" start="00:14:35.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""an interpreter, add required annotations,""" start="00:14:37.634" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and it will automatically turn the""" start="00:14:40.203" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""interpreter into a JIT runtime.""" start="00:14:42.501" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So for example, here is a typical bytecode interpreter.""" start="00:14:45.743" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""After you add the required annotations,""" start="00:14:49.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Truffle will know that,""" start="00:14:51.234" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the bytecode here is constant, and it should""" start="00:14:52.623" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""unroll this loop here, to inline all those bytecode.""" start="00:14:55.534" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And then, when Truffle""" start="00:14:59.223" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""compiles the code, it knows that:""" start="00:15:00.468" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""the first loop here does: x plus one,""" start="00:15:02.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and the second does: return.""" start="00:15:05.234" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And then it will compile all that into,""" start="00:15:07.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""return x plus 1,""" start="00:15:09.534" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which is exactly what we would expect""" start="00:15:11.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""when compiling this pseudo code.""" start="00:15:14.068" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Building on that, we can also easily implement speculation,""" start="00:15:17.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""by using this <i>transferToInterpreterAndInvalidate</i> function""" start="00:15:21.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""provided by Truffle.""" start="00:15:24.868" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And Truffle will automatically turn that""" start="00:15:26.223" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""into deoptimization.""" start="00:15:28.534" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Now, for example, when this add function""" start="00:15:30.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""is supplied with, two floating numbers.""" start="00:15:32.701" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""It will go through the slow path here,""" start="00:15:35.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which might lead to a compiled slow path,""" start="00:15:38.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or deoptimization.""" start="00:15:40.961" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And going this deoptimization way,""" start="00:15:43.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""it can then update the runtime stats.""" start="00:15:45.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And now, when the code is compiled again,""" start="00:15:48.323" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Truffle will know,""" start="00:15:50.401" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that these compilation stats, suggests that,""" start="00:15:51.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""we have floating numbers.""" start="00:15:54.101" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And this floating point addition branch will""" start="00:15:55.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""then be incorporated into the fast path.""" start="00:15:58.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""To put it into Java code...""" start="00:16:02.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Most operations are just as simple as this.""" start="00:16:06.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And it supports fast paths for integers,""" start="00:16:08.823" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""floating numbers, and big integers.""" start="00:16:11.034" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And the simplicity of this not only saves us work,""" start="00:16:14.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""but also enables Juicemacs to explore more things more rapidly.""" start="00:16:17.134" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And actually, I have done some silly explorations.""" start="00:16:22.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For example, I tried to constant-fold more things.""" start="00:16:26.583" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Many of us have an Emacs config that stays""" start="00:16:30.303" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""largely unchanged, at least during one Emacs session.""" start="00:16:32.768" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And that means many of the global variables""" start="00:16:36.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in ELisp are constant.""" start="00:16:39.668" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And with speculation, we can""" start="00:16:42.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""speculate about the stable ones,""" start="00:16:44.601" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and try to inline them as constants.""" start="00:16:46.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And this might improve performance,""" start="00:16:49.663" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or maybe not?""" start="00:16:51.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Because, we will need a full editor""" start="00:16:53.183" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to get real world data.""" start="00:16:55.368" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""I also tried changing cons lists to be backed""" start="00:16:58.223" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""by some arrays, because, maybe arrays are faster, I guess?""" start="00:17:01.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But in the end, <i>setcdr</i> requires some kind of indirection,""" start="00:17:05.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and that actually makes the performance worse.""" start="00:17:09.034" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And for regular expressions,""" start="00:17:12.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""I also tried borrowing techniques from PCRE JIT,""" start="00:17:14.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""which is quite fast in itself, but it is""" start="00:17:18.023" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""unfortunately unsupported by Java Truffle runtime.""" start="00:17:20.668" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""So, looking at these, well,""" start="00:17:24.263" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""explorations can fail, certainly.""" start="00:17:27.334" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But, with Truffle and Java, these,""" start="00:17:30.343" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""for now, are not that hard to implement,""" start="00:17:32.801" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and also very often, they teach us something""" start="00:17:34.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""in return, whether or not they fail.""" start="00:17:37.668" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Finally, let's talk about some explorations""" start="00:17:42.463" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""that we might get into in the future.""" start="00:17:45.334" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For the JIT engine, for example,""" start="00:17:47.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""currently I'm looking into the implementation of""" start="00:17:49.783" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""nativecomp to maybe reuse some of its optimizations.""" start="00:17:52.634" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""For the GUI, I'm very very slowly working on one.""" start="00:17:56.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""If it ever completes, I have one thing""" start="00:18:01.423" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""I'm really looking forward to implementing.""" start="00:18:03.734" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""That is, inlining widgets, or even""" start="00:18:06.703" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""other buffers, directly into a buffer.""" start="00:18:08.901" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Well, it's because, people sometimes complain""" start="00:18:11.863" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""about Emacs's GUI capabilities,""" start="00:18:13.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But I personally think that supporting inlining,""" start="00:18:16.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""like a whole buffer inside another buffer as a rectangle,""" start="00:18:19.768" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""could get us very far in layout abilities.""" start="00:18:23.143" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And this approach should also""" start="00:18:26.983" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""be compatible with terminals.""" start="00:18:28.568" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And I really want to see how this idea""" start="00:18:30.943" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""plays out with Juicemacs.""" start="00:18:32.934" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And of course, there's Lisp concurrency.""" start="00:18:36.103" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And currently i'm thinking of a JavaScript-like,""" start="00:18:39.063" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""transparent, single-thread model, using Java's virtual threads.""" start="00:18:42.168" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""But anyway, if you are interested in JIT compilation,""" start="00:18:46.383" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Truffle, or anything above,""" start="00:18:49.968" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""or maybe you have your own ideas,""" start="00:18:51.763" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""you are very welcome to reach out!""" start="00:18:53.868" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Juicemacs does need to implement many more built-in functions,""" start="00:18:56.383" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""and any help would be very appreciated.""" start="00:19:00.034" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""And I promise, it can be a very fun playground""" start="00:19:03.163" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""to learn about Emacs and do crazy things.""" start="00:19:05.801" video="mainVideo-juicemacs" id="subtitle"]]
+[[!template text="""Thank you!""" start="00:19:08.443" video="mainVideo-juicemacs" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [kana@iroiro.party](mailto:kana@iroiro.party?subject=Comment%20for%20EmacsConf%202023%20juicemacs%3A%20Juicemacs%3A%20exploring%20speculative%20JIT%20compilation%20for%20ELisp%20in%20Java)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/juicemacs-before.md b/2025/info/juicemacs-before.md
new file mode 100644
index 00000000..fe7d0d79
--- /dev/null
+++ b/2025/info/juicemacs-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-min talk ; Q&A: Etherpad
+Etherpad: <https://pad.emacsconf.org/2025-juicemacs>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-juicemacs"><source src="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 19:10 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-juicemacs">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-juicemacs--juicemacs-exploring-speculative-jit-compilation-for-elisp-in-java--kana--main.webm">Download --main.webm (38MB)</a></li><li><a href="https://youtu.be/Lm-a7eZO5jk">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/juicemacs-nav.md b/2025/info/juicemacs-nav.md
new file mode 100644
index 00000000..d3c4fa92
--- /dev/null
+++ b/2025/info/juicemacs-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/schemacs">One year progress update Schemacs (formerly Gypsum)</a>
+Next by track: <a href="/2025/talks/swanky">Swanky Python: Interactive development for Python</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/languages-after.md b/2025/info/languages-after.md
new file mode 100644
index 00000000..950f78ba
--- /dev/null
+++ b/2025/info/languages-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [nospam.keram@gmail.com](mailto:nospam.keram@gmail.com?subject=Comment%20for%20EmacsConf%202023%20languages%3A%20Studying%20foreign%20languages%20with%20Emacs%2C%20Org%20Mode%20and%20gptel)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/languages-before.md b/2025/info/languages-before.md
new file mode 100644
index 00000000..a24ee5fd
--- /dev/null
+++ b/2025/info/languages-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 10-min talk cancelled
+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/2025/info/languages-nav.md b/2025/info/languages-nav.md
new file mode 100644
index 00000000..35ed938a
--- /dev/null
+++ b/2025/info/languages-nav.md
@@ -0,0 +1,4 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+</div> \ No newline at end of file
diff --git a/2025/info/latex-after.md b/2025/info/latex-after.md
new file mode 100644
index 00000000..2950bbcb
--- /dev/null
+++ b/2025/info/latex-after.md
@@ -0,0 +1,477 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="latex-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""Okay. Good afternoon, morning or evening,""" start="00:00:00.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""whatever it is in your airtime zone.""" start="00:00:04.457" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm Pedro Aranda and I'm going to be talking about""" start="00:00:06.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""what I've been doing""" start="00:00:10.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with the latest backend in Org Mode""" start="00:00:12.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and the different Sorry, and the way it treats fonts.""" start="00:00:17.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Just a couple of words before""" start="00:00:24.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I am going to go through motivation,""" start="00:00:28.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the evolution and get you an idea of what you can get""" start="00:00:30.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""from the feature branch that I have started""" start="00:00:35.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and give a couple of demos.""" start="00:00:38.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""actually my motivation is I was using ox-latex currently""" start="00:00:41.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and b and ox-beamer for as a foundation for my activities""" start="00:00:47.780" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""mainly for lecture notes and lecture slides""" start="00:00:51.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so i came from pure latex and beamers""" start="00:00:54.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and for me the real cool use case""" start="00:01:01.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or I would say this was""" start="00:01:04.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the killer use case for me was""" start="00:01:05.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have a programming lecture""" start="00:01:07.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is sort of a Python 101""" start="00:01:09.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and when I'm live in the lecture""" start="00:01:12.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I can go and if the pupils ask me I can modify code,""" start="00:01:14.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""show modified code and results on the fly""" start="00:01:18.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and that's something that really impresses the kids""" start="00:01:21.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and makes them understand what we are talking about.""" start="00:01:25.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""From my pro-subjective point of view, in some,""" start="00:01:30.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""mainly in ox-beamer, some of the things that I was missing""" start="00:01:34.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is that emojis would really break the monotony""" start="00:01:38.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I missed the support for emojis and stock Beamer themes.""" start="00:01:41.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And some fonts I also found were suboptimal""" start="00:01:47.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or difficult to adapt in case they need an adaptation.""" start="00:01:52.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, for example, people who need special fonts""" start="00:01:56.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because of their special capabilities,""" start="00:02:01.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""it's difficult to get those fonts from the stock themes""" start="00:02:05.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and from the stock font implementations you have there.""" start="00:02:11.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, requirements on mice""" start="00:02:17.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""from the Emacs site to do this is none,""" start="00:02:19.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because basically, okay, the only thing I want""" start="00:02:21.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is to work on a vanilla Emacs,""" start="00:02:25.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is more or less recent,""" start="00:02:27.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because yes, I'm a bit of a freak""" start="00:02:28.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I compile it every two, three,""" start="00:02:30.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I get it from master and compile it every two, three days.""" start="00:02:32.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And Yahoo, I had to change to Neumark,""" start="00:02:36.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I'm able now to get my vanilla Neumarks within four.""" start="00:02:40.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So that was a big accomplishment in these last days.""" start="00:02:47.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""What is the evolution?""" start="00:02:53.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I mean my personal evolution and my take of xLatex""" start="00:02:55.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""was I put everything in a in a latex file""" start="00:03:00.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I input it through the latex shader and that's it.""" start="00:03:05.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""But that was not very beginner friendly""" start="00:03:09.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and once I had some people interested in this,""" start="00:03:12.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""oh wow I can modify the code on the fly""" start="00:03:15.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and see the results on the fly,""" start="00:03:19.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""it was more difficult for them to give it a go.""" start="00:03:21.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So I just, because they,""" start="00:03:26.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""there are people who have not that big,""" start="00:03:32.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that much experience with LaTeX""" start="00:03:36.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and It can even be a bridge to introduce people into latex.""" start="00:03:41.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, in any case, it was not very beginner-friendly""" start="00:03:44.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I had complaints on that.""" start="00:03:48.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, what I think was, we can do better.""" start="00:03:52.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""My first attempt was something that was completely neutral""" start="00:03:57.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to Babel or Polyglosia.""" start="00:04:00.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and it was made basically for font Lattesch""" start="00:04:02.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""although some of the things can for rural Lattesch""" start="00:04:06.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and some of the things can also be used with the latest.""" start="00:04:08.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So overriding template fonts""" start="00:04:14.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and taking into account pullback fonts""" start="00:04:16.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""was something that I learned uh uh""" start="00:04:21.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""when we started this conversation""" start="00:04:23.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and the only problem with this""" start="00:04:27.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is that fallback fonts only work for latex""" start="00:04:29.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and because uh because it doesn't support them""" start="00:04:34.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""actually for fallback points is a lua feature""" start="00:04:40.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""There was already something in the list""" start="00:04:42.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""regarding script detection which helped me a lot.""" start="00:04:45.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So big recognition to Romano Lafias for that""" start="00:04:48.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and for his publishing the algorithm or the script""" start="00:04:52.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and the in the org mode mailing list.""" start="00:04:57.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And then came my sort of little nightmare,""" start="00:05:04.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which was when we started talking""" start="00:05:11.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""about internationalization or localization.""" start="00:05:13.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Looking back, I have a very strange feeling""" start="00:05:17.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""about a blurring target there.""" start="00:05:21.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Because the reality being very, very frank, did I need it?""" start="00:05:22.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Really no, because I just needed""" start="00:05:29.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to add Spanish with Babel and that was it.""" start="00:05:34.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Well actually for me it still is""" start="00:05:40.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you can put the British, German or Italian""" start="00:05:43.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""it continues to be true for me""" start="00:05:46.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so I had personally I had little interest in doing that""" start="00:05:48.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but I took it as a challenge""" start="00:05:51.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which has shown to be really tough.""" start="00:05:55.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""What do you get from the feature branch? The feature branch""" start="00:06:02.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""adds font management for font spec,""" start="00:06:05.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is not strictly needed""" start="00:06:09.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""when you are on Latin, Cyrillic, and Greek scripts""" start="00:06:10.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""as long as the fonts in your template support them.""" start="00:06:16.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""But again, it's a nice way to get better support here.""" start="00:06:20.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""You don't need it if you're happy with the fonts you get""" start="00:06:28.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""from the templates that you use both for Beamer""" start="00:06:33.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and the document classes in LaTeX.""" start="00:06:38.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""If you don't want to use alternative fonts,""" start="00:06:40.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you don't need it, but you would need it.""" start="00:06:43.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Of course, if you don't want things like,""" start="00:06:48.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for example, emojis or need emojis,""" start="00:06:50.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you really don't need forward fonts.""" start="00:06:55.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So my idea is that the next thing that you can add""" start="00:06:59.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is Babel and Polyglos here""" start="00:07:03.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for enhanced localization and multilingual documents there.""" start="00:07:07.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And at the end, my vision was that the keywords involved""" start="00:07:13.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""would be language, the main language.""" start="00:07:17.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And then a nice idea from Ihor""" start="00:07:19.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""was to put all the secondary languages there too.""" start="00:07:23.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Then specify the LaTeX compiler""" start="00:07:27.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and then what I've added is a keyword""" start="00:07:30.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is LaTeX Montylang""" start="00:07:32.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which can be fontspec or babel or polyglossia""" start="00:07:34.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for localized documents.""" start="00:07:37.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""By default, this thing is nil and when it is nil,""" start="00:07:40.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you get the behavior from OrgBug""" start="00:07:45.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you already are used to if you don't want to switch.""" start="00:07:51.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I was there and I was really""" start="00:07:56.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""was chirped into the conversation""" start="00:08:00.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I'm really helpful and a big thanks to him""" start="00:08:03.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because he also had a an easy idea""" start="00:08:06.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to support Chinese and Japanese documents""" start="00:08:09.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so that the only thing that you need is to add the language""" start="00:08:13.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you're going to write your document in""" start="00:08:17.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""very very big thank you for that""" start="00:08:19.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because that was really a challenge""" start="00:08:23.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""not being able to decipher""" start="00:08:25.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""what I was what I was coding there""" start="00:08:29.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in terms of I have a document""" start="00:08:32.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I copy and paste it from some place""" start="00:08:34.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and from there I get my answer I get my my pdf""" start="00:08:37.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I compare whether it is correct or not""" start="00:08:40.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So what is behind the scenes?""" start="00:08:47.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I've always suggested that in order""" start="00:08:50.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to use the feature branch efficiently""" start="00:08:52.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you create a file with the default values""" start="00:08:55.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you need for your variables""" start="00:08:59.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and that's the this famous.locals.el files.""" start="00:09:02.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""What I do is I have a generic one""" start="00:09:06.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in my home documents directory""" start="00:09:10.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and this is used for all the org documents""" start="00:09:12.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that are in subdirectories from there.""" start="00:09:16.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Why? Because normally you will not be""" start="00:09:20.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""changing your fonts that often.""" start="00:09:24.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and if you need you can always go""" start="00:09:26.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and have your configuration locally.""" start="00:09:29.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So it's this point where I'm collecting""" start="00:09:33.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""my phone configuration and""" start="00:09:38.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""For me, this gives me a very, very nice quick start""" start="00:09:40.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for new documents and presentations.""" start="00:09:47.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And there you can even configure a lot of compiler""" start="00:09:49.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and font language management too,""" start="00:09:54.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so you have everything in a file.""" start="00:09:57.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And the other nice thing for that""" start="00:10:00.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is that you can also include that in a subdirectory.""" start="00:10:04.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And if this subdirectory is something that you're sharing""" start="00:10:08.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in a project with other people,""" start="00:10:13.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you are already configuring the, say,""" start="00:10:14.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""quote, unquote, corporate look and feel for your documents""" start="00:10:17.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in that project for everyone""" start="00:10:23.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and no one else has to care about""" start="00:10:26.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""how this document has to be configured.""" start="00:10:28.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""One of the things that I really like in this approach""" start="00:10:35.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is that it is a grow-as-you-go.""" start="00:10:38.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, for example, you can start with something like that,""" start="00:10:40.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is I have my fonts, my basic fonts for main,""" start="00:10:44.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is the Serif font, for sans,""" start="00:10:48.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is the Sans Serif font, for maths,""" start="00:10:51.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and for the mono, with some features like to make them scale.""" start="00:10:54.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""This is something that is uh provided by you""" start="00:10:58.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""through the font spec package""" start="00:11:02.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you're happy with it and you work with it""" start="00:11:05.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and given a in a given moment""" start="00:11:08.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you go and you have your own problems""" start="00:11:11.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and or your own challenge""" start="00:11:14.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you need to have for example emojis for one of the fonts""" start="00:11:16.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and what you do is in this case you just add the emojis""" start="00:11:20.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""as a fallback font in in the font that where you want to replace this""" start="00:11:24.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is this is what i'm doing right now for this presentation and you will see""" start="00:11:31.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""You can always, as I've said,""" start="00:11:36.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you can always have your dear locals""" start="00:11:39.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you can copy that into a working directory""" start="00:11:42.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which needs special adaptations or has special needs""" start="00:11:46.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and from there you have that directory""" start="00:11:49.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with your modified or customized their local study l file""" start="00:11:54.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so font spec is normally enough""" start="00:11:59.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but sometimes you can't control all the fonts""" start="00:12:05.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with font spec only so and there you have a polyglot here""" start="00:12:10.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and babel coming to your help""" start="00:12:15.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""this may also be the case""" start="00:12:19.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you are working in an intended language""" start="00:12:21.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""i don't know which but an intended language and you found""" start="00:12:25.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you wanted to see how that was configured""" start="00:12:28.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you found the latest example""" start="00:12:31.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that used Babel or Polyglossia.""" start="00:12:35.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The exporter provides you three variables""" start="00:12:38.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to configure both font spec, Polyglossia and Babel.""" start="00:12:42.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So just as an example of how I picture this is,""" start="00:12:48.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""uh, you find it in the internet,""" start="00:12:56.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""something like that, uh, something like this,""" start="00:12:59.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because you have your document and you need tie.""" start="00:13:01.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, and I found an example in the internet""" start="00:13:05.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that tells me that I'm going to be using""" start="00:13:10.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Babel main is going to be English.""" start="00:13:12.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And I'm also going to have a tie.""" start="00:13:15.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and then they tell me that for english""" start="00:13:17.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""i'm going to be using noto serif for the main""" start="00:13:22.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for the main of the serif font noto sans for the sans font""" start="00:13:26.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and then when i'm writing things in thai""" start="00:13:31.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""i'm going to be using noto serif thai and noto sans thai""" start="00:13:35.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's what I see in the internet.""" start="00:13:40.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So what you can always do, what you would do in this case,""" start="00:13:42.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is I'm going to get and map the font configurations""" start="00:13:47.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""from the latest into this variable.""" start="00:13:54.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Things that you have to take into account here""" start="00:13:59.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is, for example, the language.""" start="00:14:03.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The language here is Thai. You have the language""" start="00:14:05.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you're intending this font for is Thai.""" start="00:14:11.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So this appears here. In case you don't have any language,""" start="00:14:16.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""like in the first two lines,""" start="00:14:21.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you just say that the language is nil,""" start="00:14:24.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is the language for the default language.""" start="00:14:27.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The other thing is in my example,""" start="00:14:31.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in this example that I found in the internet,""" start="00:14:34.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have my properties for the fonts in this part in Latex""" start="00:14:40.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I put them as properties here.""" start="00:14:46.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's the whole idea behind the feature branch.""" start="00:14:52.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The Babel provide part is also integrated""" start="00:14:55.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""from the Org header, mainly from the language line.""" start="00:15:03.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""We have a variable in case you need to tweak it,""" start="00:15:10.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but normally the defaults provided by Org are good enough.""" start="00:15:14.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So what is the rationale behind my take at Latex Fonts Management?""" start="00:15:21.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And that's something that might be something very personal.""" start="00:15:27.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""When am I using FontSpec?""" start="00:15:31.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm using FontSpec when I'm with Lua or Zlatex""" start="00:15:33.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I want fonts that are different""" start="00:15:37.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""from those specified in the Latex class.""" start="00:15:40.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's point number one. I will also go for font spec""" start="00:15:42.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""when I need to support scripts,""" start="00:15:49.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but I'm missing in the fonts I use,""" start="00:15:52.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I can use fallback fonts for that. I have two.""" start="00:15:54.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The only limitation I have here is the following.""" start="00:15:59.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""All languages must be left to right.""" start="00:16:05.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And if you don't say anything at all,""" start="00:16:09.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the LATIC backend assumes that you want the dates,""" start="00:16:12.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""standard names for the abstract and so on""" start="00:16:16.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in American English. if you're using them.""" start="00:16:19.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""In many cases, you're not using any sort of""" start="00:16:21.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""abstract table of contents and so on""" start="00:16:25.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you don't need that.""" start="00:16:32.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The important thing is maybe date management.""" start="00:16:37.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""If you need dates, headings""" start="00:16:44.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or anything in any other language or locale,""" start="00:16:50.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""then yes, then you need to use Babel or Polyglosia.""" start="00:16:56.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Choice, Depends. Can use poly loss here,""" start="00:17:06.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or you can use Babel, whatever you want.""" start="00:17:12.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Also, in some cases, it will depend""" start="00:17:15.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""if you've been researching a bit""" start="00:17:20.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""of how this is done with pure latest,""" start="00:17:21.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""it will be also depending on, uh,""" start="00:17:24.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""on the examples that you get.""" start="00:17:26.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, what can you, when you are using""" start="00:17:28.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Babel or Polygross here, what do you have?""" start="00:17:35.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""You have your dates, your headings, and so on.""" start="00:17:41.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""You might need to control the text""" start="00:17:46.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in the sense that what passage""" start="00:17:48.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is written in what language.""" start="00:17:51.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""For example, for things like hyphenation""" start="00:17:53.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and some ways of writing the hyphens in a""" start="00:17:58.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and direct speech and things like that.""" start="00:18:01.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And the other place where you need""" start="00:18:12.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""other Babel or polyglots here,""" start="00:18:17.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you will see that because all examples""" start="00:18:19.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you can get for later in this case""" start="00:18:24.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is when you have a language""" start="00:18:26.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that uses right to left alignment""" start="00:18:30.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""like Arabic, Hebrew and others.""" start="00:18:38.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So One note of, I would say, care is you always use the,""" start="00:18:40.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""if you use Unicode fonts""" start="00:18:45.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that includes the scripts as you need,""" start="00:18:46.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you will have done, that will be a great leap for you""" start="00:18:49.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because that simplifies the configuration a lot.""" start="00:18:51.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Now a couple of demos.""" start="00:18:53.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I don't know if you've noticed""" start="00:18:55.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""first demo is that I'm using.""" start="00:19:01.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""fonts but are not the official fonts""" start="00:19:03.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in this Beamer template""" start="00:19:05.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is by the way Boadilla.""" start="00:19:06.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""This would be the first thing""" start="00:19:07.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so I've been using other fonts""" start="00:19:10.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and they are at least from what I get in class""" start="00:19:14.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""they are more readable than the official""" start="00:19:17.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""than the default fonts in Poliglossi""" start="00:19:20.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you get in Babel for the Boadilla theme.""" start="00:19:22.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Another thing is what I've told you,""" start="00:19:24.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have my own things like emojis.""" start="00:19:25.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Now, if you allow me for a second,""" start="00:19:27.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm going to switch to the Emacs""" start="00:19:29.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is running behind the scenes to show you what.""" start="00:19:38.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Okay, fine. So, this is the presentation.""" start="00:19:40.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that I have here, and as you see,""" start="00:19:45.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm using Lua Latex and just one spec.""" start="00:19:47.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""given I don't know why I would I would need this""" start="00:19:50.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""this is an English presentation""" start="00:19:59.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but just to show you what you can do""" start="00:20:01.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""if I go back here and I go to the beginning of the presentation""" start="00:20:03.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and now what I don't think you're showing anything oh thank you""" start="00:20:09.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Okay, this is the presentation, right?""" start="00:20:13.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So what I'm going to do is I'm going to go back""" start="00:20:21.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I'm going to show the full screen.""" start="00:20:33.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And in this full screen,""" start="00:20:35.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you see the presentation on one side""" start="00:20:37.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you see Emacs on the other side. Oh, still nothing.""" start="00:20:41.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Yeah, we're not seeing your screen at the moment, sorry.""" start="00:20:46.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Oh, thank you. Thank you for that.""" start="00:20:50.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Now it's starting to come. Okay. Yay! Fine.""" start="00:20:54.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So this presentation, I've done it with Lua Latex,""" start="00:20:59.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and what I add here is font spec and English language.""" start="00:21:03.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Just to show you, but with the same configuration,""" start="00:21:05.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with the same font spec configuration,""" start="00:21:10.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but adding Polyglossia.""" start="00:21:14.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I just have enough with adding polygons here""" start="00:21:15.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with the Spanish language to get my dates correctly""" start="00:21:23.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and this is something I'm going to see the date in English""" start="00:21:28.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and if I now go and recompile it in a couple of seconds""" start="00:21:32.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you will see that the data is in Spanish.""" start="00:21:46.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""We are using the same Which I can show by the way.""" start="00:21:49.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I see just by adding polyglyphs here.""" start="00:21:53.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I can get my dates in Spanish.""" start="00:21:58.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""What I have included the the locals in the.""" start="00:21:59.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""In this in this lines, but just to discuss it a bit more.""" start="00:22:09.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have it for all the presentations.""" start="00:22:15.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I think it was here. No. For the demo.""" start="00:22:19.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""For the presentations I use for MX conferences.""" start="00:22:24.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have it and it's something like this.""" start="00:22:27.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""actually you don't need a fallback""" start="00:22:31.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for for the main font here""" start="00:22:37.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because the presentations are done with the sans font""" start="00:22:39.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so the only thing that I would really need""" start="00:22:44.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""would be something like this""" start="00:22:46.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""this can be commented and the same happens here""" start="00:22:48.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with the model this can be also commented""" start="00:22:53.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and the only thing where I would really need""" start="00:22:56.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""a full back font is here""" start="00:23:00.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and what this is telling me is that""" start="00:23:02.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you have a full back for the emoji""" start="00:23:04.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for the emoji script""" start="00:23:07.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you need to use the apple color emoji font with A modifier""" start="00:23:09.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which in this case is that you need""" start="00:23:15.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to have the half-word renderer.""" start="00:23:18.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's the only thing that you really need.""" start="00:23:21.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Where do I get all these things from?""" start="00:23:24.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""All these things I get from the different parts""" start="00:23:26.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and from different scripts in the Internet.""" start="00:23:29.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I also have a couple of other things to show.""" start="00:23:32.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""For example, first of all, I do not need this.""" start="00:23:38.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""This is a letter that I've been writing this morning""" start="00:23:42.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I'm not using the full feature branches at all""" start="00:23:44.750" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because I just needed a sans font""" start="00:23:55.641" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and it's going to be a letter that I'm writing in.""" start="00:23:58.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with the sans font and the only thing I need""" start="00:24:02.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""was Spanish for the date anyhow""" start="00:24:06.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""how did what was my first thing that I did""" start="00:24:09.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with the back end back in I think it was April""" start="00:24:14.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""we had a this comes from the mailing list""" start="00:24:19.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""we had someone who had this who had this problem right""" start="00:24:23.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and he wanted to add emojis""" start="00:24:26.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and he had problems with the verbatim font""" start="00:24:29.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And that's how everything got started.""" start="00:24:33.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""If you now go and I get my period""" start="00:24:35.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""of latex for that running.""" start="00:24:42.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Well, I actually, all my latex is supported for that.""" start="00:24:44.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And this was what I showed in one of the Emacs, Org Mode meetups.""" start="00:24:50.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And there you see that We have the emojis.""" start="00:24:58.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""We had the fonts for the different things. We had maps.""" start="00:25:00.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And you could even go and add scripts""" start="00:25:06.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and little passages and different scripts.""" start="00:25:13.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And this was done with the same principles that I want.""" start="00:25:16.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have my main font. I have the emojis.""" start="00:25:22.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I want, I have my son's phone and I have the emojis,""" start="00:25:25.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the Han for Japanese and the Kana for Japanese,""" start="00:25:30.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so that these characters here,""" start="00:25:32.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""both in the sons and in the serif passages""" start="00:25:36.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""are included correctly in the PDF.""" start="00:25:40.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And a third thing of what you can do""" start="00:25:44.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I've also shown this so this is more""" start="00:25:50.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for people who have not seen it""" start="00:25:53.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""this is a side-by-side package a passage of""" start="00:25:55.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""well actually the beginning of the analysis by Xenophon""" start="00:26:01.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""both in in Greek and in German with some comments""" start="00:26:04.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and if I go this is this is done with Polyglossia""" start="00:26:12.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so if I go once again and produce""" start="00:26:18.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the PDF for this just a second""" start="00:26:25.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Come on. There you are. You get this.""" start="00:26:32.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And there you see different fonts.""" start="00:26:41.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Which fonts am I using for this?""" start="00:26:46.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm using for the main font for me is Swissere.""" start="00:26:48.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""This listing is produced with Deja Vu Sansponor.""" start="00:26:51.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And using Polyglos here, I'm able to go and define""" start="00:27:01.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the Greek polytone for the variant,""" start="00:27:13.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for the Serif variant with the Noto Serif font,""" start="00:27:15.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""just to differentiate it from the German text.""" start="00:27:18.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And nice thing is that both in the German text""" start="00:27:26.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""You see for example here and with the Greek text""" start="00:27:30.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""everything is scaled to match""" start="00:27:37.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the lower case of the main font which is free serif.""" start="00:27:40.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So that everything looks""" start="00:27:44.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""extremely uniform and nice to read.""" start="00:27:45.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So that's what you want to do.""" start="00:27:49.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's what you can do with this.""" start="00:27:53.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Just a couple of final words on this.""" start="00:27:56.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I want to thank once again Juan Manuel Garcia and Jim Crump""" start="00:28:00.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for what they have shared.""" start="00:28:17.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And I also want to thank everybody""" start="00:28:19.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for productive contributions to the discussion.""" start="00:28:24.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm saying this because I think I need a longer rest""" start="00:28:26.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I'm going to be leaving""" start="00:28:32.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the feature fund untouched for a couple of months""" start="00:28:34.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so that people can take the feature branch""" start="00:28:38.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""untouched for a couple of months.""" start="00:28:41.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to see if people want to use it and how they want to use it""" start="00:28:43.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and then maybe in the future we can discuss""" start="00:28:47.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""if we want to integrate it or not""" start="00:28:49.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or if people need it and all that. Now questions, comments?""" start="00:28:52.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I think there was one question on. Beautiful for.""" start="00:28:58.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I think that goes beyond fonts right.""" start="00:29:41.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Someone is asking what about how is about video""" start="00:29:47.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""mainly MP4 support on ox-latex.""" start="00:29:52.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I started the presentations with many videos.""" start="00:29:56.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""This is something that really pushed me back using ox-latex.""" start="00:29:58.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""What I would say to this is I mean this goes beyond""" start="00:30:07.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""what we're discussing here with fonts.""" start="00:30:18.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I would advise you to go and get the same""" start="00:30:24.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or have the same thing that I did""" start="00:30:29.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which was first of all try to write it in latex""" start="00:30:35.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and then Once you have the minimal working examples,""" start="00:30:39.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you can get the latest parts""" start="00:30:49.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""integrated into your own presentation.""" start="00:30:53.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's what I've been doing.""" start="00:30:58.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""By the way, I still do it, for example, not in this,""" start="00:31:01.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but for my lectures,""" start="00:31:04.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have a lot of I'm using a lot of ticks""" start="00:31:06.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to do graphs and animated graphs.""" start="00:31:09.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And that's begin export later and export later.""" start="00:31:12.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's what I'm doing.""" start="00:31:18.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Videos are generally a bit tricky because you cannot""" start="00:31:20.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So I think there is something called PDF-PC that can,""" start="00:31:29.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""this provides a lot of cloud package""" start="00:31:35.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""where you can include videos""" start="00:31:37.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and then they can be played through that specific program.""" start="00:31:39.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And JavaScript embedding,""" start="00:31:44.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that can only be done through Acrobat Reader,""" start="00:31:46.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is like also finicky. Sure, yes.""" start="00:31:50.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""As you said there are many things that need to be changed.""" start="00:31:54.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""But I mean it's always a thing of taking it""" start="00:32:04.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and trying to see what you can do""" start="00:32:07.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and what the specifics are.""" start="00:32:11.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Maybe this can be done with Acrobat""" start="00:32:13.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and with a couple of extra packages and who knows.""" start="00:32:17.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And you can always keep it as as late""" start="00:32:23.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""as fragments inside Org, I think. Any other questions?""" start="00:32:26.360" video="mainVideo-latex" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [paaguti@gmail.com](mailto:paaguti@gmail.com?subject=Comment%20for%20EmacsConf%202023%20latex%3A%20LaTeX%20export%20in%20org-mode%3A%20the%20overhaul)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/latex-before.md b/2025/info/latex-before.md
new file mode 100644
index 00000000..e54abc41
--- /dev/null
+++ b/2025/info/latex-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 34-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-latex>
+Etherpad: <https://pad.emacsconf.org/2025-latex>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-latex"><source src="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--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:53 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-latex">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--main.webm">Download --main.webm (65MB)</a></li><li><a href="https://youtu.be/4nkFEd73UOE">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/latex-nav.md b/2025/info/latex-nav.md
new file mode 100644
index 00000000..6bd2357a
--- /dev/null
+++ b/2025/info/latex-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/gnus">Reading and writing emails in GNU Emacs with Gnus</a>
+Next by track: <a href="/2025/talks/calc">Basic Calc functionality for engineering or electronics</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/life-after.md b/2025/info/life-after.md
new file mode 100644
index 00000000..d94ed0da
--- /dev/null
+++ b/2025/info/life-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [adougher9@gmail.com](mailto:adougher9@gmail.com?subject=Comment%20for%20EmacsConf%202023%20life%3A%20From%20FRDCSA%20to%20FLP2%3A%20Building%20AI-Powered%20Life%20Planning%20Systems%20in%20Emacs%20-%20A%20Journey%20from%20Research%20to%20Real-World%20Impact)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/life-before.md b/2025/info/life-before.md
new file mode 100644
index 00000000..d9c35617
--- /dev/null
+++ b/2025/info/life-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-min talk cancelled
+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/2025/info/life-nav.md b/2025/info/life-nav.md
new file mode 100644
index 00000000..35ed938a
--- /dev/null
+++ b/2025/info/life-nav.md
@@ -0,0 +1,4 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+</div> \ No newline at end of file
diff --git a/2025/info/llm-after.md b/2025/info/llm-after.md
new file mode 100644
index 00000000..4305f6de
--- /dev/null
+++ b/2025/info/llm-after.md
@@ -0,0 +1,906 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="llm-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:01.040" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Hi, I'm Andrew Hyatt.""" start="00:00:01.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to talk to you today about Emacs and AI,""" start="00:00:03.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and where things are right now""" start="00:00:09.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the world of Emacs and AI,""" start="00:00:10.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""via large language models,""" start="00:00:12.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and where things might be going,""" start="00:00:14.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and what it means for the future of Emacs.""" start="00:00:17.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think what we're seeing with Emacs is interesting.""" start="00:00:22.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We've seen a lot of different things""" start="00:00:27.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""come around in the past year,""" start="00:00:29.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the past several years.""" start="00:00:31.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's lots of different solutions.""" start="00:00:33.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But in the past year, things have been very interesting.""" start="00:00:35.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think there's new and interesting questions""" start="00:00:36.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""about what does it mean to use Emacs?""" start="00:00:39.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What does it mean to use any editor?""" start="00:00:43.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to be talking about Emacs,""" start="00:00:45.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I'm going to show you various Emacs packages""" start="00:00:47.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as demonstrations of these ideas.""" start="00:00:50.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But there's the general question of""" start="00:00:53.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what does it mean to use any editor, not just Emacs?""" start="00:00:59.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What does it mean to do work?""" start="00:01:03.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think the industry in general is facing these challenges""" start="00:01:06.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of we don't really know where things are going to end up,""" start="00:01:10.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but we do know the direction they're going.""" start="00:01:13.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs is a reflection of that.""" start="00:01:16.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think the answer for Emacs might be""" start="00:01:20.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a little bit different than everything else,""" start="00:01:23.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but I do want to show you what's out there""" start="00:01:25.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so we can explore what are the possibilities""" start="00:01:28.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of Emacs, AI, and generally how we get things done.""" start="00:01:33.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Thanks. Let's dive right into it.""" start="00:01:41.120" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Copilot""" start="00:01:44.720" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""We're going to start by showing you""" start="00:01:44.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""some things that are pretty well integrated,""" start="00:01:48.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that look a lot like what you see in Emacs""" start="00:01:51.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and fit in with the kinds of editing""" start="00:01:55.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that you normally do in Emacs.""" start="00:01:58.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is just kind of like, it's well integrated.""" start="00:02:02.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we're going to talk about Copilot and Semext.""" start="00:02:06.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Copilot is by Microsoft via GitHub,""" start="00:02:08.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and Semext is just my personal demo,""" start="00:02:12.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but they're both showing you, you know,""" start="00:02:14.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this kind of thing. Let's start with Copilot.""" start="00:02:18.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's try out Copilot on just a standard bit of Elisp.""" start="00:02:24.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to write a Fibonacci function.""" start="00:02:31.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's try out Emacs on a standard bit of Elisp.""" start="00:02:38.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to write a Fibonacci function.""" start="00:02:43.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you can see like as soon as we even start typing it,""" start="00:02:49.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we get everything as a completion.""" start="00:02:53.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you can just press Tab here,""" start="00:02:56.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you've just completed""" start="00:02:59.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a significant bunch of Emacs Lisp code.""" start="00:03:02.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It will do this no matter where you are.""" start="00:03:06.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, pretty useful. It will just keep suggesting things.""" start="00:03:09.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Do you want to do this?""" start="00:03:14.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm not sure.""" start="00:03:16.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it usually is offering pretty reasonable things.""" start="00:03:17.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you could do this with code,""" start="00:03:22.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of course, any code.""" start="00:03:29.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't really even have to have a mode for it, right?""" start="00:03:32.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's kind of the beauty of AI is that""" start="00:03:33.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you don't need any Emacs functionality for this,""" start="00:03:36.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""except for Copilot.""" start="00:03:38.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't need to know the structure of your code.""" start="00:03:39.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't need anything except for the text itself""" start="00:03:41.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and whatever AI integration that this is.""" start="00:03:45.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We can look at, you can do the same thing with Org-mode.""" start="00:03:51.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we could say create, no,""" start="00:03:53.740" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""how about let's, let's do, you know, spring cleaning.""" start="00:03:58.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's actually the fall, but still we'll say spring cleaning.""" start="00:04:02.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it'll start suggesting things that, you know,""" start="00:04:10.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""maybe at first, it doesn't really know what to do to""" start="00:04:12.768" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""clean up all code.""" start="00:04:15.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It thinks I need to clean up code, but no,""" start="00:04:16.434" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this is going to be actual, you know,""" start="00:04:18.401" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""clean hood over range. Clean out pantry.""" start="00:04:21.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are all really reasonable suggestions.""" start="00:04:31.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just keep going here.""" start="00:04:33.880" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Semext""" start="00:04:38.320" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""I'm going to demonstrate Semext,""" start="00:04:38.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is a package I have on GNU Elpa,""" start="00:04:40.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is designed to integrate AI in a very Emacs-like way.""" start="00:04:43.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And so what you could do is you could do a""" start="00:04:48.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""semext-search-forward.""" start="00:04:51.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""The UI looks just like other Emacs commands,""" start="00:04:54.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you can search for anything.""" start="00:04:58.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's really no way to express what I'm about to,""" start="00:05:02.380" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what I'm trying to demonstrate""" start="00:05:06.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in Emacs's normal search commands.""" start="00:05:08.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could really ask for anything.""" start="00:05:12.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it takes a little while, which is not Emacs-like,""" start="00:05:15.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but everything else is sort of like""" start="00:05:18.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's designed to be like Emacs,""" start="00:05:20.034" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""except way more powerful.""" start="00:05:21.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't need any mode to be active for this.""" start="00:05:23.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just need the library""" start="00:05:27.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and an AI provider of some sort, either locally""" start="00:05:32.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or, you know, your favorite cloud provider.""" start="00:05:34.760" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Integrated AI experiences: gptel, ellama, chatgpt-shell, etc.""" start="00:05:41.200" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Now we're going to move on to a different way""" start="00:05:41.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of interacting with AI and Emacs.""" start="00:05:43.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This way is less like the normal editing experience.""" start="00:05:46.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you lose some familiarity. However, in exchange,""" start="00:05:52.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it is a lot more powerful.""" start="00:05:57.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And there's a whole suite of these tools.""" start="00:05:58.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to demonstrate gptel,""" start="00:06:00.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is the most popular one.""" start="00:06:02.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But there are many.""" start="00:06:05.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think different people have""" start="00:06:06.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""their own preferences of what they like to use.""" start="00:06:08.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to try now something""" start="00:06:11.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is a step away from just editing.""" start="00:06:13.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And we're going to, I'm actually using gptel.""" start="00:06:15.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There are several packages that are going to be""" start="00:06:19.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""doing the same sort of thing as I'm going to show you.""" start="00:06:22.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""gptel has sort of become the most popular one.""" start="00:06:25.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So that's why I'm showing that to you.""" start="00:06:30.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But let's just highlight everything and say gptel rewrite.""" start="00:06:32.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And gptel basically just has a few things.""" start="00:06:39.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's different ways of thinking about this.""" start="00:06:42.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""With just a few very configurable menus,""" start="00:06:45.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can do a large variety of things.""" start="00:06:50.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So let's give rewrite instructions.""" start="00:06:53.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""&quot;Turn this into an iterative program""" start="00:06:59.820" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""instead of a recursive program.&quot;""" start="00:07:06.601" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In Elisp, you really should not be using recursion.""" start="00:07:12.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we could say &quot;return to be ready&quot;.""" start="00:07:17.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Do we accept it?""" start="00:07:20.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Yes, we accept it. Or we could iterate and say, no, no,""" start="00:07:21.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's not what we meant. We meant something else.""" start="00:07:24.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Or you did something a little something wrong.""" start="00:07:26.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Please fix it.""" start="00:07:29.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is all very powerful.""" start="00:07:29.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Is this editing?""" start="00:07:31.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Well, it's in the editor.""" start="00:07:33.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could do this while editing, while deleting,""" start="00:07:40.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could be doing some sort of traditional editing.""" start="00:07:42.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then this, which is editing""" start="00:07:44.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the sense that it's in your editor,""" start="00:07:47.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you might have to highlight""" start="00:07:48.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""some parts of the file and do things,""" start="00:07:51.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but generally you don't even need to,""" start="00:07:52.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or you go to a spot and you say, put code at this spot.""" start="00:07:54.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's kind of like editing.""" start="00:07:59.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I would say it's not exactly editing,""" start="00:08:01.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's at least something that must happen in an editor""" start="00:08:05.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it's well integrated into Emacs.""" start="00:08:10.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""As you can tell, it used very sort of""" start="00:08:12.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""modern standard Emacs UI paradigms""" start="00:08:14.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it's all written in Elisp.""" start="00:08:18.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Everything is happening in Elisp here.""" start="00:08:20.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is just very much an Emacs experience.""" start="00:08:23.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's just not exactly editing""" start="00:08:25.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because the thing doing the editing""" start="00:08:27.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is the AI and not you.""" start="00:08:29.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You're just kind of telling it what to do.""" start="00:08:32.520" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Outside the editor""" start="00:08:36.040" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Now we're going to go and look at a way of interaction""" start="00:08:36.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's even more powerful""" start="00:08:41.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and even more disconnected from the normal editing experience.""" start="00:08:43.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In fact, it's so disconnected""" start="00:08:46.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that most people are using this without an editor.""" start="00:08:47.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are things like Claude Code""" start="00:08:52.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or the sort of open source equivalent, Aider.""" start="00:08:57.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's a few other things that follow this pattern as well.""" start="00:09:01.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it's very interesting in the sense""" start="00:09:05.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that while you can integrate these with the editors,""" start="00:09:07.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I'm going to show you an Emacs integration,""" start="00:09:09.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you don't need to.""" start="00:09:12.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that's not the way most people are using them.""" start="00:09:13.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I find it very interesting that sort of""" start="00:09:16.940" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we're going back kind of full circle where, you know,""" start="00:09:19.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the 1960s or 70s, we were using Ed from the terminal""" start="00:09:23.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to edit files, but then we created editors,""" start="00:09:31.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and that was a really good idea.""" start="00:09:35.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It is a lot easier to edit files""" start="00:09:37.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when you have an actual UI.""" start="00:09:40.168" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But now it's 2025, and we're back in the terminal,""" start="00:09:42.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and we're editing files through the terminal,""" start="00:09:46.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you know what, it's great,""" start="00:09:50.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but I think it's even better with Emacs.""" start="00:09:53.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""On the other hand, it comes with some trade-offs,""" start="00:09:56.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as you can see, as we will see.""" start="00:10:00.280" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Outside Experiences: claude-code.el, aidermacs, eca""" start="00:10:04.734" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Okay, we're going to look at""" start="00:10:04.734" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""[audio glitch] Claude Code IDE, aidermacs, ECA.""" start="00:10:07.468" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Last time, I didn't show you all the variants.""" start="00:10:20.321" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I do want to show you eca, which points to,""" start="00:10:22.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it is a very similar tool in what it does,""" start="00:10:26.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but does have a different""" start="00:10:29.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I think better type of Emacs integration.""" start="00:10:32.740" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""All right, we're going to demonstrate Claude Code IDE,""" start="00:10:37.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is one of three Claude Code packages.""" start="00:10:42.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's a bit confusing.""" start="00:10:46.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""One of them will be demoed by another presenter""" start="00:10:47.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""at the Emacs conference, so stay tuned for that.""" start="00:10:52.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Here I'm just going to give you a little taste""" start="00:10:54.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of what these packages look like.""" start="00:10:56.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So if we say Claude Code IDE,""" start="00:10:58.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it presents us with basically""" start="00:11:03.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""almost exactly what you would get""" start="00:11:06.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when you're running this in the terminal.""" start="00:11:09.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And essentially there's a terminal interface.""" start="00:11:11.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can see that there's a vterm.""" start="00:11:13.934" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But here we're going to say, &quot;In scratch.el&quot;...""" start="00:11:16.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""let's say what we want to happen.""" start="00:11:20.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""[In scratch.el, there is a fibonacci function.""" start="00:11:23.401" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Can you add all normal elisp headers""" start="00:11:32.134" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and footers to this file?]""" start="00:11:39.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, we just say what's going to happen,""" start="00:11:43.860" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and this is going to do things in the background.""" start="00:11:45.841" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not going to do things through Emacs.""" start="00:11:48.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That said, there is an integration with Emacs,""" start="00:11:50.980" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so that it can do things like show you these nice ediffs.""" start="00:11:54.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""My screen is not really wide enough""" start="00:12:00.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to show you a really great ediff here,""" start="00:12:03.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you can kind of see what it's doing,""" start="00:12:04.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you can see, yeah, that looks good,""" start="00:12:06.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so you could say yes, yes, accept the changes,""" start="00:12:09.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and if we... Just need to revert the buffer.""" start="00:12:14.121" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We can quit the printout of this.""" start="00:12:25.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We see that it just did everything I asked it to.""" start="00:12:28.460" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Is everything exactly right?""" start="00:12:33.020" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Probably not. It's reasonable for a start though.""" start="00:12:36.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But you could ask it to do anything.""" start="00:12:39.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say, write unit tests for this, and it will.""" start="00:12:40.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say, write me a suite of functions""" start="00:12:45.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""like Fibonacci, and it'll probably do something reasonable.""" start="00:12:49.020" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But you can see this is not editing.""" start="00:12:52.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's nothing editing-like about this.""" start="00:12:54.901" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That said, there is something that is editing.""" start="00:12:58.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You need to give it instructions.""" start="00:13:07.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You need to tell it what to do.""" start="00:13:08.600" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Org files""" start="00:13:10.960" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""And what you could do is... You could have a project.org,""" start="00:13:10.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and what you could do is you could have functions.""" start="00:13:19.620" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""The way I've done things often is ....""" start="00:13:23.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say something like,""" start="00:13:26.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""unit tests for Fibonacci. How do you spell Fibonacci?""" start="00:13:28.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't remember. But then you could say that this is,""" start="00:13:36.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could clock it, basically. org-clock.""" start="00:13:40.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What I've done is...""" start="00:13:47.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could add custom commands to Claude Code,""" start="00:13:48.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you could just say, look, here's my Org file,""" start="00:13:50.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""read it and do the thing that I'm clocked in as.""" start="00:13:53.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then you can write a bunch of instructions here, like,""" start="00:13:57.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I like to use ert for tests. Tests should, like, whatever.""" start="00:14:01.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You should just say... everything""" start="00:14:07.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you need to kind of specify.""" start="00:14:08.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""As you get to more complicated tasks,""" start="00:14:11.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's harder and harder to give it all the context""" start="00:14:13.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it needs for a task,""" start="00:14:16.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and Org Mode is actually a pretty good way to do this.""" start="00:14:17.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I find that this works pretty well,""" start="00:14:22.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you can even have it instruct Claude""" start="00:14:24.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to just mark things done in your Org file""" start="00:14:26.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when they're done.""" start="00:14:29.334" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it knows how to do this, of course.""" start="00:14:30.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, let's just clock out.""" start="00:14:32.868" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's one way to do things.""" start="00:14:37.960" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""ECA""" start="00:14:45.240" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""So one other thing I'd like to show you is eca,""" start="00:14:45.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which, compared to Claude Code, ECA is open source.""" start="00:14:49.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's very nice in that respect.""" start="00:14:52.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't have to use Anthropic's models.""" start="00:14:54.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can use local models,""" start="00:14:57.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it has the advantage of integrating very well with Emacs.""" start="00:15:00.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm not going to demonstrate it,""" start="00:15:07.620" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because it works essentially the same thing you could do""" start="00:15:08.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""approximately the same kinds of things""" start="00:15:11.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could do with Claude Code.""" start="00:15:14.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just write what you want to happen""" start="00:15:15.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it will make it happen.""" start="00:15:17.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It again does not do this through Emacs,""" start="00:15:18.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but what it does do is""" start="00:15:21.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it gives you a much better Emacs interface""" start="00:15:23.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's not terminal-based,""" start="00:15:25.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because you're not using it through the terminal,""" start="00:15:26.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or not even through comint,""" start="00:15:29.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you are using it through a backend""" start="00:15:31.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is exchanging structured information""" start="00:15:35.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""with this process that is doing all the work.""" start="00:15:37.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But other than that,""" start="00:15:41.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's the same model as Claude Code""" start="00:15:41.901" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and projects of that nature.""" start="00:15:44.520" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Editing""" start="00:15:52.060" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""We've seen in the demos that I gave""" start="00:15:52.060" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that there are AI experiences""" start="00:15:56.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that are very natural in the world of editing.""" start="00:15:58.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because they, like Copilot, just offers completion,""" start="00:16:01.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it fits very well with what we all do in Emacs.""" start="00:16:05.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it's truly, yes, it's kind of a cheat in a sense""" start="00:16:09.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""for editing experiences,""" start="00:16:14.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because it can do so much, but it's just editing.""" start="00:16:15.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Whereas things like gptel and those kinds of tools,""" start="00:16:20.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they are clearly in an editor and using editor,""" start="00:16:25.260" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they're using Emacs, but they represent sort of like, well,""" start="00:16:29.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can edit for a while, then you could use these tools""" start="00:16:35.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to do something that is not editing,""" start="00:16:37.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this AI just changing the buffer for you. And that's fine.""" start="00:16:39.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's still... It may not be editing,""" start="00:16:45.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's still clearly something that""" start="00:16:48.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is useful to do in Emacs""" start="00:16:52.034" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and belongs in Emacs.""" start="00:16:55.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But the new tools like Claude Code and things like that""" start="00:16:57.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""are kind of different.""" start="00:17:01.860" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Yes, they will get better integrated with Emacs,""" start="00:17:02.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's not clear that they really need to.""" start="00:17:06.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They can do a lot of things without editing.""" start="00:17:11.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In a sense, editing is obsolete in some sense.""" start="00:17:15.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""For as many tasks, you don't need to edit anymore.""" start="00:17:19.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that's a nice thing.""" start="00:17:23.460" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""No one really knows when all this will end,""" start="00:17:26.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""how far things will go. It could be that in a decade or so,""" start="00:17:30.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""no one's really editing for work anymore.""" start="00:17:36.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Maybe you're just writing instructions.""" start="00:17:41.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could do that with anything.""" start="00:17:43.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't need Emacs or any special editor.""" start="00:17:44.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We could all be using Notepad. That would be bad.""" start="00:17:47.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But... I think it could go that far,""" start="00:17:50.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it could be that, well, for many specialized things,""" start="00:17:58.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""people are still using editing for certain tasks,""" start="00:18:01.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but most tasks are getting fed to just...""" start="00:18:04.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""AI is just doing those things.""" start="00:18:07.001" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In any case, I think it's clear that editing is diminishing,""" start="00:18:08.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the need for editing itself is diminishing.""" start="00:18:15.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And in such a world, It's interesting to think""" start="00:18:17.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""where Emacs is headed, especially in relation to""" start="00:18:21.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""all the other editors.""" start="00:18:24.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think people will use Emacs less.""" start="00:18:26.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But I think other editors, like VS Code,""" start="00:18:28.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""may simply disappear or be a relatively fringe tool.""" start="00:18:31.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And Emacs is going to follow its own path.""" start="00:18:38.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's very extensible. It could do anything.""" start="00:18:42.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""If there's one thing Emacs can do, it's adapt.""" start="00:18:44.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs has been around for a long time.""" start="00:18:47.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's pretty clear that Emacs will be around for a long time.""" start="00:18:51.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It might be that in the future,""" start="00:18:54.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""editing is some sort of like an artisanal activity that we do.""" start="00:18:58.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's kind of weird to think about it.""" start="00:19:04.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not like baking bread.""" start="00:19:05.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it is the sense that AI might be""" start="00:19:07.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""churning out code in the way, you know,""" start="00:19:10.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the factories are turning out bread,""" start="00:19:12.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but if you really want the good stuff,""" start="00:19:14.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you'll have to do it yourself.""" start="00:19:17.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't know if it'll be exactly like that,""" start="00:19:21.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it could be that Emacs survives and thrives""" start="00:19:23.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in a very kind of specialized ecosystem of people""" start="00:19:29.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""who contribute and use it in the way""" start="00:19:33.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it has survived and thrive right now.""" start="00:19:35.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think that's a really nice way for all this to end up.""" start="00:19:39.540" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's the whole sense of how society will end up""" start="00:19:46.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""if all this happens. I don't know,""" start="00:19:48.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but Emacs will be there for us when whatever happens.""" start="00:19:50.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So thank you, and let's help make Emacs the best it can be""" start="00:19:54.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to survive and thrive in the next decade.""" start="00:20:00.080" video="mainVideo-llm" id="subtitle"]]
+
+</div>
+
+Captioner: amitav
+
+<div class="transcript transcript-qanda"><a name="llm-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""So let's, I'm just going to answer""" start="00:00:00.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""the questions as I see them on the pad.""" start="00:00:01.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""So yeah, this first question is really good.""" start="00:00:04.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think it's actually this great thing""" start="00:00:07.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""that I did not mention is that like,""" start="00:00:09.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""if you have unsaved buffers,""" start="00:00:12.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""which is, you know, when you're actually doing editing,""" start="00:00:14.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""most buffers are unsaved.""" start="00:00:17.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""really you need something tightly integrated with Emacs""" start="00:00:22.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""to deal with that.""" start="00:00:25.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""So things like, you know,""" start="00:00:27.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""I demonstrated Copilot,""" start="00:00:29.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""I demonstrated Gptel,""" start="00:00:30.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""things like those things, things like Ellama,""" start="00:00:32.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""these things will all work with unsaved buffers""" start="00:00:35.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""because they work via, you know, the input is the buffer.""" start="00:00:38.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""as opposed to a file.""" start="00:00:43.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""Things like Claude Code, Gemini Code, et cetera,""" start="00:00:45.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""those are working with files.""" start="00:00:48.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""They have no idea what is going on with your buffers.""" start="00:00:49.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it could be that you can solve this problem""" start="00:00:51.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""by using this thing called MCP,""" start="00:00:55.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""which kind of gives the coding agent""" start="00:00:56.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""a way to see anything in particular.""" start="00:01:02.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""In this case, it would be Emacs""" start="00:01:05.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""and the state of your buffers.""" start="00:01:06.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""But I think that's not a particularly great solution""" start="00:01:07.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""if that's how you want to work.""" start="00:01:11.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""But I think that's kind of like""" start="00:01:13.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""if you're in the Claude Code""" start="00:01:15.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""that kind of world where you know things are happening,""" start="00:01:17.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""basically through a terminal.""" start="00:01:19.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's okay, like you typically""" start="00:01:24.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""would not be doing a mix of things.""" start="00:01:26.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""You would just be doing things either""" start="00:01:28.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""in one place or the other place.""" start="00:01:30.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""You know, it could be that you switch off""" start="00:01:32.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""from one place to another,""" start="00:01:33.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""but you wouldn't be doing both at the same time.""" start="00:01:34.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it's kind of a, you tend to just fall into one,""" start="00:01:36.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know,""" start="00:01:40.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""editing outside the editor or editing inside the editor.""" start="00:01:41.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I find myself switching between the two""" start="00:01:44.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""when I use those kinds of tools.""" start="00:01:47.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""So David, let me interrupt you for just one moment.""" start="00:01:48.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""I want to just take care to read out""" start="00:01:51.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""the question that we're answering.""" start="00:01:53.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""The question was, my biggest question with AI code editors""" start="00:01:55.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""trying to integrate with Emacs is,""" start="00:01:59.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""are the AI code editors able to read unsaved buffers""" start="00:02:01.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""and not just saved files?""" start="00:02:04.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""Sorry. Yes. Yeah. Thank you for reminding me to.""" start="00:02:06.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I will read the questions from now on.""" start="00:02:11.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""But yes, that's what I think about.""" start="00:02:13.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""that interesting questions about unsaved buffers.""" start="00:02:16.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""The next question is,""" start="00:02:20.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't agree with the comment you made""" start="00:02:22.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""about VS code usage dying out""" start="00:02:23.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""because I see companies and products""" start="00:02:25.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""pushing for tightly integrated agent""" start="00:02:26.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""and products like Windsurf.""" start="00:02:28.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""So thoughts on that?""" start="00:02:31.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""Yeah, I mean, it's really hard""" start="00:02:33.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""to be certain of anything,""" start="00:02:35.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""like things are changing very fast""" start="00:02:37.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""and it's very hard to predict the future.""" start="00:02:38.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""But the trend I see is that um,""" start="00:02:40.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""the sort of outside editing experience""" start="00:02:47.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""where you just kind of instruct a model,""" start="00:02:50.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""what to do is getting better.""" start="00:02:53.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""And as long as that keeps getting better,""" start="00:02:56.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think that's going to lessen the demand""" start="00:02:58.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""for these tightly integrated editing experiences.""" start="00:03:00.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""So it could be that, um, a lot of people,""" start="00:03:04.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""especially in, you know, corporate environments""" start="00:03:10.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""just start using,""" start="00:03:12.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""they're going to use whatever is""" start="00:03:14.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""going to make the most productive.""" start="00:03:15.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think right now, it's not clear that that will be,""" start="00:03:17.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, the very agent-based, you know,""" start="00:03:22.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""command line-centric way of doing things.""" start="00:03:25.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""But it certainly, the trend is, if that continues,""" start="00:03:27.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think it probably will be like that.""" start="00:03:31.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think we'll have to see.""" start="00:03:33.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I don't think your opinion is unreasonable.""" start="00:03:35.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""I guess I'm kind of cautiously saying""" start="00:03:37.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think it's gonna be the opposite, but I guess we'll see.""" start="00:03:40.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like, let's reconvene in a year and see what happens.""" start="00:03:43.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""Uh, the 3rd question answer,""" start="00:03:47.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""do you have any thoughts about the environmental costs""" start="00:03:49.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""of using either the training""" start="00:03:55.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""of the models are we can download or use locally""" start="00:03:57.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""or the larger commercial models used from the cloud.""" start="00:03:59.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""Um, I think. The, you know, I'm on social media,""" start="00:04:02.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""probably a little bit more than I should be.""" start="00:04:09.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I do see a lot of discussion there""" start="00:04:13.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""and a lot of concern about the environmental costs of using LLMs.""" start="00:04:15.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""I've looked into this as I'm also concerned""" start="00:04:18.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""about keeping my environmental footprint personally down.""" start="00:04:22.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I do this in many ways,""" start="00:04:27.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I certainly don't want to kind of like blow that all the water""" start="00:04:29.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""because I'm using LLMs so much.""" start="00:04:31.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think that the concerns are mostly overblown.""" start="00:04:35.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""There's a concern that, well, it uses a lot of energy.""" start="00:04:38.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""In aggregate, the total amount of energy""" start="00:04:41.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""used by the data centers in the US is a few percent.""" start="00:04:46.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""And this is a fraction. I think this is like LM's account""" start="00:04:50.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""for something like 20% now""" start="00:04:53.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""of all data center usage, which is a lot.""" start="00:04:56.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""But Those data centers are doing lots of things.""" start="00:05:02.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""They all need to be water cooled.""" start="00:05:03.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""Um, if you like per LLM prompt,""" start="00:05:05.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""the costs are relatively small""" start="00:05:08.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""and by relatively small, I mean,""" start="00:05:11.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, people have said online,""" start="00:05:13.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""well, it's like a few bottles of water per prompt.""" start="00:05:15.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""That, that is not true. It is much, much less than that.""" start="00:05:17.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's a fraction of that.""" start="00:05:20.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""So, uh, I don't think the answer is nothing,""" start="00:05:21.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I would say it's, I would say you probably,""" start="00:05:25.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""if you want the most bang for your environmental buck,""" start="00:05:28.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""probably the best thing for you to do""" start="00:05:30.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""is take less flights and things like that.""" start="00:05:32.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like, yes, you can cut down on this,""" start="00:05:35.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I think it's pretty marginal at the moment.""" start="00:05:37.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""We do probably need to think about the total costs""" start="00:05:40.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""like of humanity using all of this.""" start="00:05:43.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like a lot of stuff you'll see""" start="00:05:44.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""corporations are using a lot of these things.""" start="00:05:46.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so like, just like if you look""" start="00:05:48.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""at water usage or energy uses in total,""" start="00:05:52.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's like really corporations that are using this.""" start="00:05:54.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""So there might, there's a lot of leverage there""" start="00:05:56.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""to make things more efficient as opposed to personal use.""" start="00:05:58.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think it's wise to be cautious,""" start="00:06:01.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I think it's okay, I think, at least for personal use.""" start="00:06:06.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""The next question is another,""" start="00:06:09.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""yeah, this is also disagreeing with me about VS Code,""" start="00:06:13.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""but it says, I must say I liked your conclusion,""" start="00:06:20.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I differ insofar as you said that VS Code differs from Emacs""" start="00:06:23.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""because the former is not as easy to adapt as the latter.""" start="00:06:26.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""But why should Microsoft not adapt VS Code""" start="00:06:30.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""as we adapt Emacs for the new era of coding?""" start="00:06:33.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""And why would VS Code be harder hit?""" start="00:06:35.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""Could you please elaborate on this point? Yeah, thanks.""" start="00:06:38.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""This is a good question.""" start="00:06:43.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think maybe I wasn't as sharp on my point as I could be.""" start="00:06:46.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""Because I think the core""" start="00:06:50.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""of what I'm saying is like, there is a going to be a trend.""" start="00:06:51.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""I believe there will be a trend away from editing.""" start="00:06:56.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""And if we are going to be editing less,""" start="00:06:58.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think VS Code, like people will be in editors less.""" start="00:07:01.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""And that means people will be in VS Code less,""" start="00:07:04.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""people will probably be in Emacs less.""" start="00:07:06.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""And yes, I think you can, VS Code""" start="00:07:09.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""is to some degree extensible.""" start="00:07:13.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I think there's less of a community, or that is,""" start="00:07:15.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think the people using Emacs""" start="00:07:21.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""have used Emacs for a long time.""" start="00:07:23.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""They're going to continue to use Emacs.""" start="00:07:25.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I speak for myself, but I know""" start="00:07:27.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""a lot of people here are kind of like this,""" start="00:07:28.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""and they're going to just, like,""" start="00:07:30.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""we have a lot of momentum to keep doing things in Emacs,""" start="00:07:33.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""and especially because we have a lot of things""" start="00:07:37.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""that we already do in Emacs.""" start="00:07:41.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""We do to-do lists and, you know, with org mode""" start="00:07:42.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""and some people read email""" start="00:07:45.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""and some people are using""" start="00:07:47.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""shells in Emacs and all these things,""" start="00:07:49.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think will make Emacs""" start="00:07:50.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""kind of a better environment""" start="00:07:53.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""if you want to do various editing like things in Emacs.""" start="00:07:55.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""In, you know, in an editing environment,""" start="00:07:59.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""because I think just emails can edit""" start="00:08:05.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""more types of things I think will naturally""" start="00:08:07.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""be a bit more useful than VS code,""" start="00:08:09.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""which people are really just using to edit code""" start="00:08:10.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""and if people find it less useful to edit code.""" start="00:08:14.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think it's VS code will be harder hit than emails""" start="00:08:16.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""because that's its whole like that's in the name""" start="00:08:20.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""like the whole reason for it""" start="00:08:24.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""to be doing things as to edit code.""" start="00:08:25.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think that it's it's vulnerable""" start="00:08:27.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""in a way that Emacs isn't""" start="00:08:30.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""just because emacs is so very...""" start="00:08:31.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, it's, it could do so many things""" start="00:08:34.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""and and people use it for so many different kinds of things""" start="00:08:40.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""that it's I think it's going to be""" start="00:08:42.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""a little bit more resilient.""" start="00:08:46.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""But as I said with the present.""" start="00:08:47.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""For those of us that are using Emacs,""" start="00:08:48.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's everywhere for us.""" start="00:08:52.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""Not necessarily everyone is an I live in Emacs person,""" start="00:08:55.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""but whatever you're using Emacs for,""" start="00:08:58.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""it is the thing you reach for to do that thing.""" start="00:09:00.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""Is that touching on the point?""" start="00:09:03.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""Yeah, that's a great way to say it.""" start="00:09:06.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""Thank you. Thank you, Colin. Yeah.""" start="00:09:09.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""Thank you. Thank you for that question.""" start="00:09:12.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""Do you think we're falling behind in productivity as Emacs users""" start="00:09:14.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""compared to all these VS code forks""" start="00:09:18.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""that have a thousand button and text boxes everywhere,""" start="00:09:19.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""which are basically much richer UIs,""" start="00:09:21.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""which are basically web pages?""" start="00:09:24.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I do think Emacs is falling behind in some ways.""" start="00:09:25.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""I mean, it's definitely showing its age a little bit,""" start="00:09:28.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""especially you mentioned richer UIs""" start="00:09:32.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""that are basically web pages.""" start="00:09:35.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""I mean, this I think is one of the big problems Emacs has""" start="00:09:36.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""is that it uses a very, you know, a much more ancient way""" start="00:09:41.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""of kind of doing UIs that is not particularly flexible""" start="00:09:46.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""and not particularly comfortable for any modern UI coder.""" start="00:09:49.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think if you look at the Emacs stuff out there,""" start="00:09:55.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, yes, you can do a few things with UIs.""" start="00:09:58.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""You can have some amount of UI richness,""" start="00:10:01.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""but it's pretty limited.""" start="00:10:04.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I kind of, if there's one thing""" start="00:10:06.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""I could wish for in Emacs,""" start="00:10:07.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's sort of like, I kind of wish Emacs could be on a,""" start="00:10:09.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""could be built on top of basically like Atom or something like that,""" start="00:10:12.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""where it's like a web framework""" start="00:10:18.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""that allows us to write actual rich pages,""" start="00:10:20.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""rich UIs in a modern style using things like CSS""" start="00:10:24.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""instead of the kinds of things Emacs lets you do.""" start="00:10:29.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""But that said, that is an advantage""" start="00:10:33.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""of VS Code and other editors like that.""" start="00:10:37.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think that Emacs does a good job""" start="00:10:38.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""of eventually catching up""" start="00:10:45.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""to all sorts of things people are doing in other editors.""" start="00:10:46.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's often that other editors get there first,""" start="00:10:49.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""but there's a lot of momentum""" start="00:10:52.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""to kind of keep Emacs fresh, keep it modern.""" start="00:10:55.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it's pretty easy to- I love that.""" start="00:10:57.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""I forgot about the lag. We do have a little bit of lag,""" start="00:11:00.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I just, I find that very captivating.""" start="00:11:05.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""We have with technologies""" start="00:11:08.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""like Apache Cassandra in the database world,""" start="00:11:10.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""we have this idea of eventual concurrency.""" start="00:11:12.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""And you make me think with Emacs,""" start="00:11:14.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""we have this idea of eventual feature parity, right?""" start="00:11:17.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""If a feature stays desirable long enough,""" start="00:11:21.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""Emacs will eventually grow it.""" start="00:11:23.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think that's a very contagious idea. Yeah, yeah, thanks.""" start="00:11:25.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""I hope that idea makes sense. And I hope it's correct,""" start="00:11:32.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""because I think that I do want Emacs to continue to succeed.""" start="00:11:35.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I personally, using Emacs,""" start="00:11:39.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""do not feel myself falling behind in productivity.""" start="00:11:43.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""That said, there's a lot of ways that Emacs can improve""" start="00:11:46.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""and should improve on this front.""" start="00:11:51.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""And a lot of these ways are pretty fundamental.""" start="00:11:53.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I kind of hope people pay a lot of attention""" start="00:11:56.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""to some of these more fundamental lower-level Emacs things""" start="00:11:59.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""that really allows the packages""" start="00:12:02.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""to do more richer and better things.""" start="00:12:04.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""Sorry, you have a ton of questions.""" start="00:12:07.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""I shouldn't be doing so much active listening.""" start="00:12:10.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""No, no, I appreciate your input.""" start="00:12:12.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""OK, next is I've been using Claude Code extensively.""" start="00:12:17.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""I recently switched to Agent Shell with Claude Code.""" start="00:12:23.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""Have you tried it? And what are your thoughts?""" start="00:12:25.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""I actually have tried Agent Shell.""" start="00:12:28.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""And currently, I recorded this video like three months ago.""" start="00:12:30.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""So Agent Shell did not exist then.""" start="00:12:34.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""If Agent Shell did exist,""" start="00:12:38.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""I probably would have demoed it as well.""" start="00:12:39.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""Agent Hell is great in the sense of it's""" start="00:12:41.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""It does use comment, which is the way that I think all Emacs users""" start="00:12:45.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""would prefer to interact with something like Claude Code,""" start="00:12:53.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""or any of those types of tools, which is like, I don't.""" start="00:12:57.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""Um, the other,""" start="00:13:00.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""but it's a trade-off it uses like on the back""" start="00:13:02.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""and it's, it has a common buffer.""" start="00:13:05.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""And then on the back end, it's using a protocol""" start="00:13:06.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""to talk to agent, uh, to Claude Code and other things.""" start="00:13:08.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""The problem is this has a lot of problems.""" start="00:13:11.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""For example, like you don't have""" start="00:13:15.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""completion of slash commands.""" start="00:13:16.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""You don't have, um, if you ask to see the, in Claude Code,""" start="00:13:18.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""you can get a visual representation of. the context window.""" start="00:13:22.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""But you can't do this. I mean, last time I tried,""" start="00:13:24.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I couldn't do this in agent shell.""" start="00:13:30.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's progressing rapidly.""" start="00:13:31.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""But it's not as rich in functionality""" start="00:13:33.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""as using quad code directly.""" start="00:13:37.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""On the other hand, because it's letting Emacs be Emacs""" start="00:13:40.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""and using comment, it's a much better experience""" start="00:13:44.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""to actually give instructions.""" start="00:13:49.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think the maximum power, though, is, to me,""" start="00:13:50.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""the best way is still like, you know,""" start="00:13:56.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""do your editing in org mode,""" start="00:13:58.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""and then just tell, you could have,""" start="00:13:59.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, the richer experience of using""" start="00:14:02.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""of using Claude Code in, in it's more like shell like form""" start="00:14:06.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""where everything is, it's much, you know,""" start="00:14:13.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""designed to be used in the terminal,""" start="00:14:15.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""but you don't have to type in that much""" start="00:14:17.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""because you're really doing your typing""" start="00:14:18.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""in order to me, I think there's""" start="00:14:20.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""kind of the sweet spot that I like.""" start="00:14:21.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""Um, but HHL is a great step forward""" start="00:14:23.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""and I think it's, uh, it's quite good to use.""" start="00:14:26.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I, I personally use it a lot.""" start="00:14:29.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""Um, OK, so in terms of, next question,""" start="00:14:32.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""in terms of agent selection,""" start="00:14:40.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""what has been your experience with different agents?""" start="00:14:41.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""And have you had any success with hosting your own models""" start="00:14:44.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""and using open weights?""" start="00:14:48.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think there's, you know, many people""" start="00:14:49.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""have many different opinions on this.""" start="00:14:54.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think Claude Code is, most people I know""" start="00:14:56.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""would say Claude Code is probably,""" start="00:15:00.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""sorry, Cloud is probably the best for coding right now.""" start="00:15:03.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""Gemini can be very hit and miss even with 3.0,""" start="00:15:07.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""but Claude is quite good.""" start="00:15:09.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""4.5 Opus is actually relatively cheap""" start="00:15:12.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""compared to the previous version of 4.1 Opus.""" start="00:15:16.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""There's other models out there,""" start="00:15:21.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I think most people just stick with Claude""" start="00:15:24.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""because it's very reliable, it's very good,""" start="00:15:29.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""and nothing is obviously better than that.""" start="00:15:34.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""And as far as DeepSeek is pretty good as well,""" start="00:15:36.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""and then much cheaper.""" start="00:15:41.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""I've had some good luck using that locally,""" start="00:15:42.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""but actually the problem is for my day-to-day machine,""" start="00:15:46.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""like my personal machine,""" start="00:15:50.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's not powerful enough to run anything locally.""" start="00:15:53.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""And my work machine, it is powerful enough,""" start="00:15:55.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I can spend my company's money at will""" start="00:15:58.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""on more powerful models.""" start="00:16:02.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""So there's really not a lot of incentive""" start="00:16:03.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""for me to run locally.""" start="00:16:05.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think, as far as I know, I haven't heard""" start="00:16:06.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""of local models being incredible,""" start="00:16:12.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I think you can get reasonable quality with them.""" start="00:16:14.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""That is, especially if you're doing""" start="00:16:16.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""relatively simple things,""" start="00:16:19.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think it's pretty reasonable to be using those.""" start="00:16:20.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""Also, they tend to be slower""" start="00:16:25.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""than the models that are elsewhere""" start="00:16:29.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""just because they just have more horsepower,""" start="00:16:33.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""they can churn through those tokens a little quicker.""" start="00:16:36.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""So, I'll just break in here to say,""" start="00:16:38.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""we've got about 7 minutes left""" start="00:16:44.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""before we're cutting over this great discussion so far.""" start="00:16:46.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm very happy to keep going.""" start="00:16:49.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""There's no time limit, but at a certain point,""" start="00:16:50.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""I may have to leave""" start="00:16:55.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""to jump in and prep with the next speaker,""" start="00:16:56.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""but you'll be able to keep going""" start="00:16:58.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""as long as you have the steam for it.""" start="00:17:00.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""Yeah, I think we have 3 questions. Yeah, thanks.""" start="00:17:02.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think we have 3 questions.""" start="00:17:06.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""Let's see if we can get through them""" start="00:17:08.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""all in that time period. OK, this one is interesting talk.""" start="00:17:09.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'll start by asking it for everything, but is it editing?""" start="00:17:17.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think there's more of a comment than a question.""" start="00:17:20.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""So yes, let us all ask, but is it editing?""" start="00:17:23.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""All right. I can move on to the comment area.""" start="00:17:29.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm reading angst in your thinking about AI editing.""" start="00:17:33.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think that's true.""" start="00:17:40.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""It says, and the question continues with,""" start="00:17:41.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""what are you excited about?""" start="00:17:44.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""Wow, that's an interesting question.""" start="00:17:45.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""I mean, I think there are possibilities.""" start="00:17:48.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like, yes, people are going in sort of a relatively obvious direction""" start="00:17:53.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""with LLMs right now.""" start="00:17:58.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think there's lots of opportunities,""" start="00:18:01.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""clever opportunities to do things""" start="00:18:04.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""we couldn't have thought of Things that are useful,""" start="00:18:07.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""but in ways that are not super obvious to us,""" start="00:18:11.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""and I think I'm still excited""" start="00:18:14.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""about the possibilities of using them in ways that are super helpful""" start="00:18:18.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""and different than. normal. I'll give you an example.""" start="00:18:23.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""This is something that I intend to, I think,""" start="00:18:29.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""post on Reddit in a few days,""" start="00:18:33.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I have a extension to eshell""" start="00:18:36.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""where you can prefix a command with at,""" start="00:18:39.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""and then just tell it what you want to do,""" start="00:18:43.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""and it will substitute the command""" start="00:18:45.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""that you are thinking of. Because often, I do not remember.""" start="00:18:46.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""I never remember, like, how do you find a file in a directory tree,""" start="00:18:51.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""you know, recursing? Who can remember how to do that?""" start="00:18:56.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's like a find, and there's like a dash print there somewhere.""" start="00:19:00.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""Yes. There are some smart people who remember this""" start="00:19:04.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I am not one of them.""" start="00:19:10.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so I think like something like this is like you just type out,""" start="00:19:11.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""find me this file, and it will substitute""" start="00:19:13.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""the correct command.""" start="00:19:17.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think this is, there's a lot of little,""" start="00:19:18.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""little tweaks you could do like, you know, if you want the AI,""" start="00:19:21.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""it could be there for you. And it will help you.""" start="00:19:24.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""And if you don't want it,""" start="00:19:26.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's not going to get in your way.""" start="00:19:27.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think this is where eMath can really shine.""" start="00:19:28.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""It can really take advantage of LLMs,""" start="00:19:30.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""but still remain true to its kind of editing experience,""" start="00:19:33.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""because it's not forcing you to use LLMs all the time.""" start="00:19:35.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""So thank you for that great question.""" start="00:19:39.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""And then the final question. Yep.""" start="00:19:43.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""This final question is, why does it matter to have a richer UI?""" start="00:19:47.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""All this left is basically running and getting the results.""" start="00:19:50.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think maybe this is a response to me complaining""" start="00:19:53.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""about Emacs not having a richer UI before,""" start="00:19:56.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I think it does matter a lot for all sorts of things.""" start="00:19:58.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's hard to kind of explain succinctly""" start="00:20:03.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""because I'm talking about UI""" start="00:20:07.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""and I'd have to show you things.""" start="00:20:08.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""But it should be just something like oh I have an error""" start="00:20:09.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""and I'm using flymake and I'm,""" start="00:20:14.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm using the you know I have options""" start="00:20:15.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""where it'll show me the error in line""" start="00:20:17.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""by like underlining things and having a little message,""" start="00:20:19.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""but like, you know what that message""" start="00:20:22.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""doesn't appear quite right, a lot of the times,""" start="00:20:24.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""or here's another one like. I program in Python a lot.""" start="00:20:26.400" video="qanda-llm" id="subtitle"]]
+[[!template text="""And Python, it's super hard to program in""" start="00:20:30.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""unless you have these little vertical lines""" start="00:20:33.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""that shows you what the indents are. At least I find it.""" start="00:20:35.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""There are two packages that do that.""" start="00:20:37.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""None of them do it particularly well,""" start="00:20:40.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""just because Emacs at its base""" start="00:20:43.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""does not allow you to do this.""" start="00:20:44.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""And so you kind of have to hack it in.""" start="00:20:45.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""And there's lots of ways to mess it up.""" start="00:20:47.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""And when editing, you'll find yourself messing this thing up.""" start="00:20:49.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""regularly. So it doesn't look quite clean.""" start="00:20:52.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""And like, there's little artifacts,""" start="00:20:57.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""or, you know, there's little ways that it,""" start="00:20:59.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""it kind of gets things wrong,""" start="00:21:01.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""or you can, you can get things wrong with it.""" start="00:21:02.360" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think that, like,""" start="00:21:06.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""there's a lot of issues with that sort of thing.""" start="00:21:10.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""And, and also, like, you know,""" start="00:21:11.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""what if you want to do something like play a video inline,""" start="00:21:15.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""like, I don't know, you might should be able to do that,""" start="00:21:17.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""you might should be able to do anything.""" start="00:21:19.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""But right now it just can't and I think""" start="00:21:20.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""a lot of the reason as well""" start="00:21:23.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""we you know we wanted to be compatible""" start="00:21:25.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""with you know TRS 80 machines or something like that""" start="00:21:26.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""and it's this is important this really is important,""" start="00:21:29.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""but I hope there's some way""" start="00:21:33.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""that we can kind of eventually figure out""" start="00:21:34.720" video="qanda-llm" id="subtitle"]]
+[[!template text="""how to get the best of you know both compatibility and.""" start="00:21:36.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""more modern UIs. So, you know, we can have more modern UIs""" start="00:21:39.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""for people that have modern machines and other people""" start="00:21:44.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""either do without that functionality""" start="00:21:49.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""or sort of fall back to some reasonable default.""" start="00:21:51.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""So we have about 30 seconds or a minute.""" start="00:21:54.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I know there's one more question.""" start="00:21:59.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'd love for you to get to it.""" start="00:22:00.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""I just want to make sure that""" start="00:22:01.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""while we're still live on stream,""" start="00:22:02.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""you get a chance to share""" start="00:22:04.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""any closing remarks you might have.""" start="00:22:05.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""Thank you for that. Um, yes.""" start="00:22:06.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""So first of all, I want to thank everyone involved for listening.""" start="00:22:10.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I want to thank the core when I think thanks for moderating this.""" start="00:22:14.520" video="qanda-llm" id="subtitle"]]
+[[!template text="""And Sacha, thank you for putting that together.""" start="00:22:18.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I know there's more people""" start="00:22:21.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""that are working behind the scenes.""" start="00:22:21.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""So thank you all for putting this together.""" start="00:22:23.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm so happy that we all are here. We care about Emacs.""" start="00:22:25.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""We're pushing Emacs forward.""" start="00:22:29.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""We are I think Emacs remains""" start="00:22:31.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""this really remarkable achievement.""" start="00:22:35.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like it's amazing that it exists. It continues to exist.""" start="00:22:37.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""It hasn't got, it's hard.""" start="00:22:41.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's like, really, there's a lot of work to go into it.""" start="00:22:43.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think let's all just appreciate everyone who,""" start="00:22:45.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""who like contributes and makes all of this possible.""" start="00:22:47.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""Cause it's, if you ever read""" start="00:22:50.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""the Emacs Develop mailing list,""" start="00:22:52.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's a lot of work, a lot of deep thinking,""" start="00:22:53.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""a lot of careful thinking.""" start="00:22:55.480" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think this is really important.""" start="00:22:56.680" video="qanda-llm" id="subtitle"]]
+[[!template text="""So thank you, especially to the maintainers of Emacs""" start="00:22:58.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""and everyone who's contributing to the core experience,""" start="00:23:02.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""all the libraries, all the LLM stuff we mentioned before.""" start="00:23:04.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""You're all doing such a fantastic job.""" start="00:23:07.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's exciting to be here. Thank you for your talk, Andrew.""" start="00:23:09.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""It's been just fascinating.""" start="00:23:13.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""If you don't mind, I'd love to jump""" start="00:23:16.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""right over to the last question. OK, let's do that.""" start="00:23:19.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""It says, I have 45 plus years editing programming.""" start="00:23:23.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""I'm not sure I can think about things""" start="00:23:27.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""without thinking of buffers, editors, et cetera.""" start="00:23:29.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""Is this the handicap?""" start="00:23:31.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""Should we have people with no experience""" start="00:23:31.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""with code learning to prompt?""" start="00:23:34.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""Well, this is something I do have a strong opinion about.""" start="00:23:35.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""I feel like I do not want to see people that have no experience""" start="00:23:38.800" video="qanda-llm" id="subtitle"]]
+[[!template text="""with code learning to prompt. I think it's very limited""" start="00:23:42.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""what you could do right now with that.""" start="00:23:44.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""Like you could do, if you could sort of one-shot it,""" start="00:23:46.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""that is like, I have something that's relatively easy,""" start="00:23:48.440" video="qanda-llm" id="subtitle"]]
+[[!template text="""And it could do it, and I'm going to tell it to do it,""" start="00:23:52.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""and then I'm going to give feedback.""" start="00:23:54.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""OK, as long as this is for relatively short-lived things,""" start="00:23:56.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think that works well. But for people who really care""" start="00:24:00.040" video="qanda-llm" id="subtitle"]]
+[[!template text="""about the longevity of their code,""" start="00:24:02.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""really care about software engineering,""" start="00:24:04.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""which is software engineering is very different than just writing code.""" start="00:24:06.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""Software engineering is about maintainability.""" start="00:24:09.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""Software engineering is making sure everything is scalable""" start="00:24:11.880" video="qanda-llm" id="subtitle"]]
+[[!template text="""and all sorts of things that it's unlikely,""" start="00:24:15.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""I think, that an LM is going to get right.""" start="00:24:19.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I've seen a lot of bad cases""" start="00:24:21.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""where people who don't understand code""" start="00:24:25.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""are doing things and it's not working well""" start="00:24:27.200" video="qanda-llm" id="subtitle"]]
+[[!template text="""because they don't understand""" start="00:24:31.160" video="qanda-llm" id="subtitle"]]
+[[!template text="""some of the some of the complexities""" start="00:24:33.240" video="qanda-llm" id="subtitle"]]
+[[!template text="""or some of the concerns that that you might have""" start="00:24:35.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""in maintaining a piece of code.""" start="00:24:36.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think those people who have lots of experience""" start="00:24:43.280" video="qanda-llm" id="subtitle"]]
+[[!template text="""are the best people to use this.""" start="00:24:45.760" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think that's what we're seeing""" start="00:24:46.960" video="qanda-llm" id="subtitle"]]
+[[!template text="""in the industry as well,""" start="00:24:48.120" video="qanda-llm" id="subtitle"]]
+[[!template text="""where more senior people are doing quite well""" start="00:24:49.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""because they're able to use LLMs""" start="00:24:51.640" video="qanda-llm" id="subtitle"]]
+[[!template text="""more effectively than junior people.""" start="00:24:54.600" video="qanda-llm" id="subtitle"]]
+[[!template text="""That may all even out because LLMs get even better,""" start="00:24:56.560" video="qanda-llm" id="subtitle"]]
+[[!template text="""but for now hasn't happened.""" start="00:25:01.000" video="qanda-llm" id="subtitle"]]
+[[!template text="""So I think, you know, I also have a ton of experience,""" start="00:25:03.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""not 45 years, but a lot. And, and I think that it's those,""" start="00:25:06.320" video="qanda-llm" id="subtitle"]]
+[[!template text="""those years of experience will only help you.""" start="00:25:13.080" video="qanda-llm" id="subtitle"]]
+[[!template text="""And I think it's, it's, it's a great,""" start="00:25:14.840" video="qanda-llm" id="subtitle"]]
+[[!template text="""it's great to kind of dip your toes in the water""" start="00:25:16.920" video="qanda-llm" id="subtitle"]]
+[[!template text="""and see what you can do.""" start="00:25:19.640" video="qanda-llm" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [ahyatt@gmail.com](mailto:ahyatt@gmail.com?subject=Comment%20for%20EmacsConf%202023%20llm%3A%20Emacs%2C%20editors%2C%20and%20LLM%20driven%20workflows)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/llm-before.md b/2025/info/llm-before.md
new file mode 100644
index 00000000..23cd880a
--- /dev/null
+++ b/2025/info/llm-before.md
@@ -0,0 +1,19 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 21-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-llm>
+Etherpad: <https://pad.emacsconf.org/2025-llm>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-llm"><source src="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-llm">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm">Download --main.webm (45MB)</a></li><li><a href="https://youtu.be/U3kbEabBJ_s">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-llm"><source src="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 27:34 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-llm">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.m4v">Download --answers.m4v (94MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--answers.webm">Download --answers.webm (91MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/llm-nav.md b/2025/info/llm-nav.md
new file mode 100644
index 00000000..ef42733a
--- /dev/null
+++ b/2025/info/llm-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/python">Interactive Python programming in Emacs</a>
+Next by track: <a href="/2025/talks/private-ai">Emacs and private AI: a great match</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/modern-after.md b/2025/info/modern-after.md
new file mode 100644
index 00000000..4518aec2
--- /dev/null
+++ b/2025/info/modern-after.md
@@ -0,0 +1,251 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="modern-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""""" start="00:00:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Hi! My name is Eduardo Ochs. I'm the""" start="00:00:55.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""author of an Emacs package called eev and""" start="00:00:57.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the title of this video is""" start="00:01:00.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""&quot;Some problems of modernizing Emacs&quot;.""" start="00:01:03.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Here is a summary of the main themes""" start="00:01:05.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""of this video. I'm going to talk mainly""" start="00:01:08.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""about these four things here. The first""" start="00:01:10.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""one is that Emacs has changed a lot in its""" start="00:01:12.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""recent versions, and now it has lots of""" start="00:01:15.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""types... so if we want to look under the""" start="00:01:18.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""hood and to understand what Emacs""" start="00:01:21.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""really does we are going to stumble on""" start="00:01:24.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""lots of types... and the""" start="00:01:27.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""current tree of classes and types""" start="00:01:30.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""looks like this... that is,""" start="00:01:34.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""is quite big.""" start="00:01:37.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""The second theme is that people used""" start="00:01:46.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""to say things like &quot;Anyone can learn Lisp""" start="00:01:49.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""in one day&quot;... I'm going to explain""" start="00:01:53.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this quote, and I'm also going to show""" start="00:01:56.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that now this is gone... anyway. This is a""" start="00:02:01.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""very short summary... details soon.""" start="00:02:04.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""I will also show how to display""" start="00:02:08.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""better &quot;inner views&quot; of Emacs objects...""" start="00:02:10.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""I'm going to Define what is an inner view,""" start="00:02:13.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""of course.""" start="00:02:16.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""The main trick is that we are going""" start="00:02:18.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""to use one of the ways of displaying""" start="00:02:20.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""internal objects, that is the `cl-print'""" start="00:02:24.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""family of functions, for example,""" start="00:02:29.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""`cl-prin1-to-string', and here are some""" start="00:02:32.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""examples of the kind of output that we""" start="00:02:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""are going to see...""" start="00:02:37.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""for example, if we run these two lines""" start="00:02:38.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""here the first line defines a function `foo'""" start="00:02:44.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and the second line sets `o' to the""" start="00:02:47.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""internal view of the definition of `foo'.""" start="00:02:52.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""In older Emacses `o' would be just a""" start="00:02:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""list that looks... that would look very""" start="00:02:59.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""similar to this line here... but in newer""" start="00:03:02.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Emacses the result of this - I mean, the""" start="00:03:05.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the contents of `o' is this thing here,""" start="00:03:09.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that looks quite different""" start="00:03:12.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""from this definition.""" start="00:03:15.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""So, in older Emacses""" start="00:03:18.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the contents of the""" start="00:03:21.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""function cell of `o'...""" start="00:03:25.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""sorry, of the function cell of `foo',""" start="00:03:28.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""would be an &quot;old-style lambda&quot;,""" start="00:03:30.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that would be just a list like this...""" start="00:03:32.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and in newer Emacses uh the contents of O would""" start="00:03:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""be a &quot;vector-like lambda&quot;... look for the""" start="00:03:39.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""square brackets here - this is a""" start="00:03:42.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""vector, but it is preceded by a hash sign.""" start="00:03:44.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""So this is what we call""" start="00:03:47.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""a &quot;vector-like lambda&quot;,""" start="00:03:49.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and vector-like lambas do not""" start="00:03:51.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""have a canonical printed representation -""" start="00:03:53.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""they have at least two semicanonical""" start="00:03:55.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""printed representations...""" start="00:03:57.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""The first semicanonical""" start="00:03:59.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""printed representation is this one, that is""" start="00:04:01.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""generated by a family of functions with""" start="00:04:04.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""names like `prin1'...""" start="00:04:07.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and the second semicanonical printed""" start="00:04:09.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""representation is like this -""" start="00:04:13.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""it looks like a list...""" start="00:04:17.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""it looks somewhat like this definition""" start="00:04:20.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""of `foo' here, but it has this""" start="00:04:23.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""`:dynbind' symbol here...""" start="00:04:27.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and it turns out that when we use""" start="00:04:29.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the `cl-print' family of functions we can""" start="00:04:32.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""reconfigure how things are printed...""" start="00:04:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and I'm going to show several interesting""" start="00:04:37.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""ways of reconfiguring how lambdas are printed,""" start="00:04:40.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and one of the ways is going to""" start="00:04:47.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""be like this.""" start="00:04:49.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""We can also use the `cl-print'""" start="00:04:52.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""functions with my indentation tricks to""" start="00:04:56.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""to display how types, or classes, are""" start="00:04:59.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""viewed internally by Emacs, and this is a""" start="00:05:04.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""big example...""" start="00:05:07.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""This is what Emacs considers as being""" start="00:05:10.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the definition of the type""" start="00:05:14.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""`cl-structure-class',""" start="00:05:16.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""class and it is this big thing here.""" start="00:05:18.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""I edited it very lightly...""" start="00:05:21.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""I just uh deleted some line breaks here.""" start="00:05:24.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""And another thing that I want to to""" start="00:05:30.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""explain is that Emacs""" start="00:05:33.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""has some help functions that""" start="00:05:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""I have never liked...""" start="00:05:37.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""for most people they are good enough,""" start="00:05:39.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""but for me they aren't... they...""" start="00:05:41.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""uh, well - I'm going to say""" start="00:05:44.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""more about this later...""" start="00:05:48.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and, for example,""" start="00:05:50.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""if we want a description of what is""" start="00:05:52.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this type here, that we just saw in""" start="00:05:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""its internal view here...""" start="00:05:58.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""we can run either `describe-type'""" start="00:06:00.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""or my variant of `describe-type',""" start="00:06:02.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and we get a help buffer""" start="00:06:04.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that looks like this, in which""" start="00:06:07.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""these blue things that are underlined""" start="00:06:10.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""are &quot;buttons&quot;, in the classical sense...""" start="00:06:13.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""you can click on these buttons, or type""" start="00:06:15.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""RET on these buttons, and you will be""" start="00:06:17.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""taken to another help page, that is""" start="00:06:19.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""generated dynamically...""" start="00:06:22.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and you can navigate back and forth...""" start="00:06:24.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and well, whatever...""" start="00:06:28.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and I'm going to explain my""" start="00:06:30.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""problems with these kinds of help buffers""" start="00:06:33.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and what I'm trying to do to""" start="00:06:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""overcome these problems...""" start="00:06:37.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""One of my slogans in this video""" start="00:06:41.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""is going to be this one:""" start="00:06:43.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""&quot;Anyone can learn Lisp in one day&quot;.""" start="00:06:43.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this is a part of a bigger quote""" start="00:06:45.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that I took from a keynote presentation""" start="00:06:49.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""by Abelson and Sussman, who""" start="00:06:51.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""are two dinosaurs of Computer Science...""" start="00:06:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Here is the full quote:""" start="00:06:58.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""&quot;Anyone can learn Lisp in one day -""" start="00:07:00.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""except that if they already know Fortran""" start="00:07:04.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""then it would take three days.&quot;""" start="00:07:06.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""This is a frame of the video...""" start="00:07:11.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""By the way I am going to to add""" start="00:07:24.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this... &quot;and if the person is starting""" start="00:07:28.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""with Doom Emacs then it would take 5 years.&quot;""" start="00:07:32.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""why? I'm going to explain why.""" start="00:07:34.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""This is how Emacs used to be.""" start="00:07:39.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""If we execute these two expressions here""" start="00:07:43.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the first one... sorry, each symbol can""" start="00:07:46.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""have two &quot;values&quot;,""" start="00:07:51.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""one is its &quot;value as a variable&quot;""" start="00:07:53.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and another one is its &quot;value as a function&quot;...""" start="00:07:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and if we run this we store 42""" start="00:07:58.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""in the &quot;value cell&quot; of the symbol `foo', and""" start="00:08:02.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""if we run this defun here it stores a""" start="00:08:07.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""certain anonymous function in the""" start="00:08:11.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""&quot;function cell&quot; of the symbol `foo'...""" start="00:08:14.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and in Emacs, until some time ago""" start="00:08:18.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""if we did that and and if we ran""" start="00:08:22.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this expression here the result""" start="00:08:27.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""would be 42,""" start="00:08:30.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""because of this line here, and if we""" start="00:08:31.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""ran this line here the result would be""" start="00:08:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the anonymous function corresponding to""" start="00:08:37.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this defun here...""" start="00:08:40.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""but now this has changed...""" start="00:08:41.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the result of this thing here is this""" start="00:08:45.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""vector-like lambda here - but that doesn't""" start="00:08:48.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""matter much now...""" start="00:08:51.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""So, until some time ago""" start="00:08:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""if we did that and if we ran""" start="00:08:56.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this expression here, (foo foo)...""" start="00:08:58.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Emacs would do this: it would""" start="00:09:01.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""replace the first `foo' by this""" start="00:09:04.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""anonymous function here, it would replace""" start="00:09:06.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the second `foo' by the value of `foo' as a""" start="00:09:09.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""variable, that is 42,""" start="00:09:11.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and it would evaluate this, and the""" start="00:09:13.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""result would be 420.""" start="00:09:16.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""So, again, we used to have this slogan""" start="00:09:20.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""here, &quot;anyone can learn Lisp in one day&quot;...""" start="00:09:23.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""but now this is gone.""" start="00:09:26.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Let me show... let me talk""" start="00:09:28.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""a bit more about why...""" start="00:09:30.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the title of this slide is""" start="00:09:34.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""&quot;Lambdas for beginners broken&quot;...""" start="00:09:36.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""if we run this, as I've shown""" start="00:09:38.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""in the previous slide...""" start="00:09:41.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""in the old style, in old Emacses,""" start="00:09:43.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the result of (symbol-function 'foo)""" start="00:09:45.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""would be this anonymous function here...""" start="00:09:47.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and now we get this strange thing here.""" start="00:09:49.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""So, this is an &quot;old-style lambda&quot;,""" start="00:09:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this is a &quot;vector-like lambda&quot;,""" start="00:09:58.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and until the middle of 2024""" start="00:10:02.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""beginners could learn a lot of Lisp""" start="00:10:05.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""by thinking only in terms of""" start="00:10:08.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""objects like these...""" start="00:10:11.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""this is a function and this""" start="00:10:13.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""is an anonymous function, and""" start="00:10:15.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""they would learn how to draw cons cell""" start="00:10:17.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""diagrams like this thing here and this""" start="00:10:20.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""thing here...""" start="00:10:23.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""they would think on lists as""" start="00:10:25.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""being these trees here, and they""" start="00:10:27.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""would be able to understand a lot of""" start="00:10:29.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Lisp just by thinking in these terms...""" start="00:10:32.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and then vector-like lambdas started""" start="00:10:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""to appear in many places... and if we use""" start="00:10:39.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""&quot;vector-like lambdas&quot; in a wide sense,""" start="00:10:43.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""to mean all the new objects,""" start="00:10:46.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""these new objects, that are""" start="00:10:50.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""difficult to visualize... they also started""" start="00:10:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""to appear in many places.""" start="00:10:56.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""This is a continuation of the""" start="00:10:58.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""previous slide - this part here is a copy""" start="00:11:01.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""of things that were in the previous slide...""" start="00:11:04.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""before 2024 beginners could""" start="00:11:06.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""open black boxes like this...""" start="00:11:12.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""they could try to see what was in the""" start="00:11:17.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""function cell of the symbol `foo'...""" start="00:11:20.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and they would see something elegant and""" start="00:11:24.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""mind-blowing... and they would start to love""" start="00:11:27.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Lisp immediately.""" start="00:11:29.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Now what they get - what they see -""" start="00:11:31.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""is a tiny part of a very complex structure""" start="00:11:33.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that is very powerful but that is""" start="00:11:35.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""very difficult to understand...""" start="00:11:39.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and now our beginners are overwhelmed""" start="00:11:41.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""instead of mind-blown.""" start="00:11:44.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Note that I said &quot;black box&quot; here.""" start="00:11:46.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Let me explain the term.""" start="00:11:48.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""We can open what's inside of `foo'...""" start="00:11:52.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""we can open `foo' to see the contents of""" start="00:11:57.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""the symbol `foo', and we can try to see""" start="00:11:59.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""what's in the function cell of the""" start="00:12:02.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""symbol `foo'...""" start="00:12:06.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""so we can open the box, but what we get""" start="00:12:08.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""is something very difficult to understand,""" start="00:12:10.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and so I'm going to say that""" start="00:12:13.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""when this happens that box is black.""" start="00:12:17.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""It is not totally black - we can open open it -""" start="00:12:21.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""but we don't understand what is going on there,""" start="00:12:23.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""so we declare that that is black.""" start="00:12:26.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""And... when these things started to happen""" start="00:12:30.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""_I_ was overwhelmed -""" start="00:12:33.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""and in this video I'm going to pretend""" start="00:12:38.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that I was not the only person""" start="00:12:40.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that was overwhelmed""" start="00:12:44.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""by these new structures""" start="00:12:46.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""that are not so elegant""" start="00:12:50.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""as the ones that we had before.""" start="00:12:52.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""Anyway...""" start="00:12:54.000" video="mainVideo-modern" id="subtitle"]]
+[[!template text="""""" start="00:12:56.000" video="mainVideo-modern" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [eduardoochs@gmail.com](mailto:eduardoochs@gmail.com?subject=Comment%20for%20EmacsConf%202023%20modern%3A%20Some%20problems%20of%20modernizing%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/modern-before.md b/2025/info/modern-before.md
new file mode 100644
index 00000000..f3830a2a
--- /dev/null
+++ b/2025/info/modern-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 26-min talk ; Q&A: IRC Etherpad: <https://pad.emacsconf.org/2025-modern>
+Etherpad: <https://pad.emacsconf.org/2025-modern>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-modern"><source src="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--original.mp4" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--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:22 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-modern">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.opus">Download --main.opus (13MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-modern--some-problems-of-modernizing-emacs--eduardo-ochs--main.webm">Download --main.webm (57MB)</a></li><li><a href="https://youtu.be/EbxupbXfESg">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/modern-nav.md b/2025/info/modern-nav.md
new file mode 100644
index 00000000..ac44fb51
--- /dev/null
+++ b/2025/info/modern-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/sun-open">Sunday opening remarks</a>
+Next by track: <a href="/2025/talks/reader">An introduction to the Emacs Reader</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/n-angulator-after.md b/2025/info/n-angulator-after.md
new file mode 100644
index 00000000..a1f2fa21
--- /dev/null
+++ b/2025/info/n-angulator-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [kevinbanjo@gmail.com](mailto:kevinbanjo@gmail.com?subject=Comment%20for%20EmacsConf%202023%20n-angulator%3A%20Org-mode%20GTD%20vs%20N-angulator%20GTD)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/n-angulator-before.md b/2025/info/n-angulator-before.md
new file mode 100644
index 00000000..a24ee5fd
--- /dev/null
+++ b/2025/info/n-angulator-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 10-min talk cancelled
+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/2025/info/n-angulator-nav.md b/2025/info/n-angulator-nav.md
new file mode 100644
index 00000000..35ed938a
--- /dev/null
+++ b/2025/info/n-angulator-nav.md
@@ -0,0 +1,4 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+</div> \ No newline at end of file
diff --git a/2025/info/open-mic-after.md b/2025/info/open-mic-after.md
new file mode 100644
index 00000000..daa4511c
--- /dev/null
+++ b/2025/info/open-mic-after.md
@@ -0,0 +1,1029 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="open-mic-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""All right, so yes, we have a little bit of time""" start="00:00:00.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""while we are waiting for the dev track to finish,""" start="00:00:03.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and we could just declare this as a break,""" start="00:00:05.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or if anyone's got any interesting last-minute stuff,""" start="00:00:08.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can come and share it here,""" start="00:00:12.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where Karthik is also hanging out.""" start="00:00:17.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I think every time I read one of your long blog posts,""" start="00:00:20.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Karthik, I'm like, mm, life goals.""" start="00:00:23.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Someday I want to write something with nice diagrams""" start="00:00:25.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and, you know, deep Emacs interestingness.""" start="00:00:28.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I have not yet gotten the hang of even using avy""" start="00:00:31.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to nearly the extent that you do.""" start="00:00:34.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But yes, I have, I have always looked""" start="00:00:38.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""at your diagrams very longingly""" start="00:00:40.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and wondered how you make them.""" start="00:00:42.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""With a lot of sweat and cursing, unfortunately.""" start="00:00:44.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's all very nice. Yeah.""" start="00:00:51.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I, I, I've seen your interactive SVGs,""" start="00:00:54.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which is just wizardry. I have no idea how you do that.""" start="00:00:58.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You can hover over different elements in the SVG""" start="00:01:02.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and do interesting things.""" start="00:01:06.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, so it turns out if you just think of them as XML,""" start="00:01:08.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which Emacs will let you""" start="00:01:11.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because you can just control C, control C,""" start="00:01:13.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it'll switch back to text mode, right?""" start="00:01:15.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Then you can be like, oh, yeah, I can work with this""" start="00:01:16.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using the DOM Emacs list library.""" start="00:01:20.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then you can add title elements to it to get the hovers,""" start="00:01:23.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or you can add hyperlinks.""" start="00:01:28.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So in fact, the emacs-conf schedule""" start="00:01:31.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is very naturally generated from emacs-lisp itself,""" start="00:01:35.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because there was no way I was going to handle""" start="00:01:41.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""two track schedules by hand.""" start="00:01:43.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And that's just SVG so that you can then have the hovers.""" start="00:01:45.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The important thing is that when you're exporting it to HTML,""" start="00:01:49.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it has to be an inline SVG to get the fancy behaviors.""" start="00:01:53.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you're linking it in as an image, then it doesn't work.""" start="00:01:57.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It has to be inline. So for example, for my org mode,""" start="00:02:02.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I have my exports for images checked first if it's an SVG.""" start="00:02:09.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And unless I have an attribute""" start="00:02:14.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""on it that says, no, just link to it because it's large and not interactive,""" start="00:02:15.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it actually inlines all of that markup""" start="00:02:20.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""into the exported HTML, if that makes sense.""" start="00:02:22.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""That does, that does make sense.""" start="00:02:26.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's a little less mysterious now.""" start="00:02:34.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""On the plus side, once it is in there as inline HTML,""" start="00:02:36.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""well, inline, you know, it's an inline markup,""" start="00:02:40.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can actually play around with it""" start="00:02:42.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using JavaScript or CSS. That's really neat.""" start="00:02:44.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I had a question about some other SVG wizardry I've seen you do.""" start="00:03:01.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You have these SVGs that grow, right?""" start="00:03:07.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Like they accumulate elements, almost like a slideshow.""" start="00:03:09.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Am I remembering that correctly? Yeah, yeah, yeah.""" start="00:03:15.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I started using that for one""" start="00:03:20.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of the EmacsConf presentations.""" start="00:03:22.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Well, the one EmacsConf presentation""" start="00:03:24.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I've done in recent history,""" start="00:03:26.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because it's nice to be able to add things gradually, right?""" start="00:03:27.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Especially as you're giving a presentation.""" start="00:03:31.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And that's also done with Emacs Lisp.""" start="00:03:35.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""What I do is, first I make the image, and then in Inkscape,""" start="00:03:38.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I can group together the elements""" start="00:03:43.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that I want to appear at the same time.""" start="00:03:46.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then I can use Emacs to, I think I just changed the,""" start="00:03:49.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I just add some CSS to them to make them dimmer.""" start="00:03:54.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and you just iterate through the different groups in that level,""" start="00:04:01.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and you write out the intermediate SVG files,""" start="00:04:04.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then you can use Inkscape""" start="00:04:09.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to convert them into PNGs if you want,""" start="00:04:12.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""like images of each step""" start="00:04:14.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that are in PNG format instead of SVG.""" start="00:04:16.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But the basic idea is you group""" start="00:04:18.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the elements together that you want in one step,""" start="00:04:20.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then you can manipulate it""" start="00:04:24.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using the Emacs DOM.EL library,""" start="00:04:25.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because it's just an XML document.""" start="00:04:30.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So you can say, all right, hide everything or have everything visible""" start="00:04:32.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then remove the last one or something like that, you know, iterated.""" start="00:04:38.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Show them one at a time and then write your resulting document object model""" start="00:04:43.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to a new file each step. Do you have, that makes sense.""" start="00:04:50.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So do you just write the e-list,""" start="00:05:05.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""like is this on a case-by-case basis?""" start="00:05:09.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Like every time you need to do this,""" start="00:05:12.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""do you write fresh e-list to step through the SVG this way?""" start="00:05:13.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Or do you have some kind of package""" start="00:05:18.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or library to do this more?""" start="00:05:22.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Let me go see if this is the one.""" start="00:05:27.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's probably just buried in my config.""" start="00:05:33.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If I do it again, I'm sure I will find another thing""" start="00:05:39.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that I've completely forgotten about""" start="00:05:46.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and therefore have to recode or fix or whatever.""" start="00:05:51.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But let me go see. Can you see my screen? Yep. OK.""" start="00:05:56.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, oh, yeah, yeah, this one. Nice, I remember that one.""" start="00:06:03.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""OK, so we get this SVG, and then this animateSVGPaths""" start="00:06:07.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is just a function I have. It takes the file name.""" start="00:06:13.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It makes an output there. It adds one path back at a time.""" start="00:06:16.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And it just creates a lot of these numbered frames.""" start="00:06:22.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So as you can see here,""" start="00:06:25.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm just saying, OK, take the whole thing.""" start="00:06:27.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then I think, yeah, maybe I said it like,""" start="00:06:30.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you know, take the whole thing,""" start="00:06:34.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""make everything transparent,""" start="00:06:37.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then one at a time, make them opaque""" start="00:06:40.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and save that, save that to the frame, to the image.""" start="00:06:45.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this theoretically is a somewhat reusable function""" start="00:06:50.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that takes the SVG and just fills the directory with it.""" start="00:06:54.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""What's the order in which it reveals things?""" start="00:07:01.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Top to bottom or bottom to top, it's whatever the SVG has.""" start="00:07:03.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And so if you're grouping things together,""" start="00:07:12.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can rearrange things in Inkscape.""" start="00:07:15.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you've given them IDs,""" start="00:07:17.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which I have another function for in Emacs list""" start="00:07:22.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that just highlights something""" start="00:07:25.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and lets me put an ID for it,""" start="00:07:26.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""then you can rearrange them yourself""" start="00:07:28.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""by looking at the markup, I guess.""" start="00:07:30.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Or I think I actually have some code also""" start="00:07:32.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that will rearrange the path""" start="00:07:35.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""based on a list of IDs that I give it.""" start="00:07:37.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and sequence so this one is animating""" start="00:07:39.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""one element at a time here""" start="00:07:42.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""um it's kind of like interesting effect""" start="00:07:44.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but for larger things like for this one""" start="00:07:47.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""i can split this up into groups""" start="00:07:49.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because i don't want to necessarily animate them letter by letter and that one""" start="00:07:52.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh yes, this is the function that I have""" start="00:07:59.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for identifying the paths""" start="00:08:03.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it highlights it and then it asks me for a name.""" start="00:08:05.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And this is the one that reorders it.""" start="00:08:08.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I can say, this is the sequence""" start="00:08:11.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that I want it animated in. And it will, yeah, good.""" start="00:08:14.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So you don't actually need Inkscape at all, right?""" start="00:08:19.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Because you have an elisp function""" start="00:08:23.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that will let you assign the order interactively.""" start="00:08:25.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, so if you're doing just all the elements one after the other,""" start="00:08:28.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Inkscape is helpful for combining the different shapes,""" start="00:08:34.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""well, breaking it apart,""" start="00:08:39.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because when I get the PDF and I convert it,""" start="00:08:41.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it's like one big element that has a very complex path.""" start="00:08:44.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And if I want to animate it element by element,""" start="00:08:48.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I have to break it apart""" start="00:08:52.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then recombine it so that, you know, so that this O looks like it's hollow""" start="00:08:53.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""instead of like a circle.""" start="00:08:59.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So there's a little bit of Inkscape""" start="00:09:01.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""cleaning up before then,""" start="00:09:02.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I really dislike the mouse heavy stuff of Inkscape""" start="00:09:04.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for assigning IDs and things like that.""" start="00:09:08.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I haven't quite gotten the hang of it.""" start="00:09:12.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this is what it looks like""" start="00:09:14.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""before you group the elements together""" start="00:09:16.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and you combine paths,""" start="00:09:17.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which is what you have to do Inkscape for,""" start="00:09:20.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because I can't make sense of the numbers in Emacs someday.""" start="00:09:22.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So just combine, combine, combine. But once it's there,""" start="00:09:24.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I don't like having to set the ID in this""" start="00:09:30.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""object properties on the right side,""" start="00:09:32.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because there's a lot of clicking.""" start="00:09:34.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""press escape and tab and tab, it's not reliable.""" start="00:09:36.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So that's why I have this function""" start="00:09:40.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it lets me identify the paths and animate them""" start="00:09:42.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""from within Emacs, because Emacs is a text editor.""" start="00:09:46.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, in name only, but anyway.""" start="00:09:51.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So the groups, if you've already assigned groups in Inkscape,""" start="00:09:55.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Then when you run it through this function in Emacs,""" start="00:10:02.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can assign an ordering to the groups,""" start="00:10:06.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the order in which it will be revealed.""" start="00:10:09.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah. What I did was I gave it all IDs.""" start="00:10:10.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I gave each group an ID.""" start="00:10:15.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then when I have the ID, I can say, you know, maybe when I group it,""" start="00:10:17.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm doing it in a bit of a haphazard way,""" start="00:10:26.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""not grouping the first thing first,""" start="00:10:28.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then the second thing, and the third thing.""" start="00:10:30.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So it's a bit of a mess.""" start="00:10:32.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And this one just resorts it by, I think,""" start="00:10:34.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""just looking everything up, storing it,""" start="00:10:38.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then putting it back in order.""" start="00:10:41.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I probably have the code for this somewhere,""" start="00:10:45.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and if it's not, it's in the source code.""" start="00:10:49.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""There should be a source.""" start="00:10:52.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yes, so this is an org source for this post,""" start="00:10:53.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and if it's not in there, then it should be in my config,""" start="00:10:57.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the definition of this function.""" start="00:11:01.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We are to pass. Here we are. Yeah, there you go.""" start="00:11:03.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So there, it just, it takes it, it looks for it,""" start="00:11:11.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it adds it to the first layer.""" start="00:11:17.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay, you've just explained the magic,""" start="00:11:19.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which makes it less magical,""" start="00:11:29.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but also something I could try. Yeah, this is interesting.""" start="00:11:31.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, S2G is surprisingly powerful. Yeah, I know.""" start="00:11:36.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I know it can do a lot more""" start="00:11:41.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""than what we typically use it for.""" start="00:11:43.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So you also had this feature where, I think you used CSS,""" start="00:11:46.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where if you mouse over something in the SVG,""" start="00:11:53.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""something is highlighted in your webpage.""" start="00:11:56.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh yeah, yeah, yeah. Like in the organizer's notebook.""" start="00:11:58.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I have a draft schedule here.""" start="00:12:04.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, we've been doing all this stuff live, that schedule,""" start="00:12:07.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where if you have, let's pick someone's talk.""" start="00:12:10.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, yeah, highlight.""" start="00:12:16.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I think, oh, maybe it's the other way around.""" start="00:12:22.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I need to put this stuff here first. Oh yeah, okay.""" start="00:12:26.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So you'll notice here how if I add some JavaScript,""" start="00:12:30.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it takes a look at what's in the URL.""" start="00:12:33.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And if so, then it can highlight a specific thing""" start="00:12:36.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using just, maybe CSS might be it.""" start="00:12:38.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Actually, I think it's JavaScript setting the CSS style on it.""" start="00:12:41.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But yeah, you can play around with CSS.""" start="00:12:47.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""See, this one has a slightly darker,""" start="00:12:51.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""slightly thicker background. So SVGs are great for that.""" start="00:12:53.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And if you inspect it,""" start="00:12:59.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which I don't think I have shared here,""" start="00:13:01.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but if you inspect it, I will share my inspect.""" start="00:13:03.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I have too many windows open,""" start="00:13:07.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so I don't want to share my whole thing.""" start="00:13:10.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But one of these, oh, I don't even know which, how do I find, okay,""" start="00:13:12.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it's the developer tools window.""" start="00:13:19.075" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Do I even have developer tools? Oh, I can't see it. OK.""" start="00:13:20.367" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you inspect the page on the developer thingy,""" start="00:13:25.325" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""then it will show the SVG element. Yeah.""" start="00:13:29.492" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And unfortunately, I can't share it easily right now.""" start="00:13:38.117" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Maybe just say inspect. Oh, this is actually, I think,""" start="00:13:41.241" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""how also the individual talks have current ones, right?""" start="00:13:46.617" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I just have this image over here,""" start="00:13:55.117" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then you just have that one,""" start="00:14:00.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that specific talk styled differently.""" start="00:14:01.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""How did you generate this SVG,""" start="00:14:06.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the one showing the schedule?""" start="00:14:13.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, okay, okay. Emacs. Book, book, book, book.""" start="00:14:14.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Emacs publish, I think. Let me share it. Emacs conf pub.""" start="00:14:24.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""One of these windows. Okay, let's see.""" start="00:14:29.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Slow down, look at all the windows.""" start="00:14:36.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay, I'm just gonna share the whole screen.""" start="00:14:39.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Screen two, no, screen one. All right, and okay.""" start="00:14:40.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I think this is the one. Is it sharing my screen?""" start="00:14:50.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It is not sharing my screen. I'm going to try this again.""" start="00:15:05.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay. All right. So, the schedule. The schedule.""" start="00:15:08.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""This is the actual function""" start="00:15:23.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that creates the SVG rectangles for the talks.""" start="00:15:24.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oops. My screen share ended. Let me do that again.""" start="00:15:28.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, and as you can see,""" start="00:15:35.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it's just a little bit of math for the X, the Y,""" start="00:15:41.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""we color it differently""" start="00:15:45.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""depending on whether I'm making the schedule for the public view.""" start="00:15:48.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So we just, you know, do we do developer, development talk""" start="00:15:52.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or general talk as colors,""" start="00:15:58.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or if I want to color it for the backstage view,""" start="00:15:59.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I can keep track of the talk's status.""" start="00:16:02.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Anyway, so SDG track takes the track""" start="00:16:04.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and all the talk information,""" start="00:16:07.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it makes all the little rectangles.""" start="00:16:09.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And this is the thing that adds a little hover""" start="00:16:11.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for the times and titles as well.""" start="00:16:15.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, Emacs's API for dealing with this is actually pretty good.""" start="00:16:17.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, and of course, I have a hook here that modifies it.""" start="00:16:22.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You can just run through a different function,""" start="00:16:27.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""different functions to tweak it.""" start="00:16:30.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I could say, okay, color it in case my time constraints are,""" start="00:16:32.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you know, not being met.""" start="00:16:36.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then I can paint about this somewhere.""" start="00:16:37.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And the nice thing about this""" start="00:16:40.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is it's actually, it's, you can, hang on a second, let me do this carefully.""" start="00:16:51.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, here you go.""" start="00:17:06.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's super nice to be able to refer to it within Emacs itself""" start="00:17:08.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because Emacs has SVG support.""" start="00:17:13.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this is, for example, the organizer view""" start="00:17:15.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""inside an org mode file. And it just has all those SVGs.""" start="00:17:19.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It don't have the hover things,""" start="00:17:24.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because it's just an image in it.""" start="00:17:25.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But yeah, SVGs, Emacs, awesome. Oh, that's very cool.""" start="00:17:27.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You're actually drawing the rectangles from scratch.""" start="00:17:37.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It took a little bit of figuring out,""" start="00:17:40.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""especially since I realized""" start="00:17:45.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I wanted horizontal on the wiki pages""" start="00:17:46.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so that it fits on people's screens,""" start="00:17:49.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I wanted vertical in my organized review""" start="00:17:51.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so that I don't have to keep tilting my head sideways.""" start="00:17:56.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and this is the code for that.""" start="00:18:09.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""See, I'm just directly adding G nodes for groups""" start="00:18:12.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or A nodes for the hyperlinks and rep as well.""" start="00:18:19.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I think the SVG library also has functions""" start="00:18:23.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for adding rectangles and things like that,""" start="00:18:27.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but sometimes I vaguely remember""" start="00:18:31.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""sometimes you can't return the node that I'm expecting.""" start="00:18:32.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, it's okay to just use the DOM functions directly.""" start="00:18:35.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then the whole thing gets SVG printed afterwards.""" start="00:18:40.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I can just say SVG printed, and then it's good to go.""" start="00:18:46.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Let me see. Actually, do I have SVG?""" start="00:18:54.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Let's schedule for track SVG.""" start="00:18:57.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's a shame that you can't visually interact""" start="00:19:05.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with parts of an SVG in Emacs the way you can in Emacs.""" start="00:19:08.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, some people have some interesting experiments with that.""" start="00:19:11.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I haven't dug into it much,""" start="00:19:16.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but people have figured out how to use the mouse events""" start="00:19:18.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then figure out what the, like there's LEC draw, right?""" start="00:19:21.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So lecdraw is a package that lets you draw SVGs""" start="00:19:26.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and you can drag things and whatever. So that's very cool.""" start="00:19:30.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And there's also an org related package""" start="00:19:33.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that lets you visualize your schedule as boxes.""" start="00:19:37.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'd like, yeah, that's a thing also.""" start="00:19:43.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So people have experimented""" start="00:19:45.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with mouse interaction and it's cool,""" start="00:19:46.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I haven't had the brain space to do that yet,""" start="00:19:49.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but it would be nice. Yeah, you're right.""" start="00:19:51.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I remember using easy draw""" start="00:19:55.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and being surprised at what it can do.""" start="00:19:58.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The only thing I think I discovered""" start="00:20:02.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is that it ends up creating lots of new SVGs,""" start="00:20:05.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""kind of the way that you do""" start="00:20:10.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""when you show elements one by one,""" start="00:20:13.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you are essentially creating one SVG for each state,""" start="00:20:14.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""one full SVG for each intermediate state of the presentation, let's say.""" start="00:20:19.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""That's kind of what ELEasyDraw does.""" start="00:20:24.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I thought that's not good for performance.""" start="00:20:26.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And it is kind of on the slow side,""" start="00:20:30.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""if you compare it to like Inkscape or anything else.""" start="00:20:33.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But yeah, what it can do is pretty amazing.""" start="00:20:37.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can dynamically modify an SVG object,""" start="00:20:40.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it will automatically get updated in Emacs,""" start="00:20:44.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which is a technique that I use a lot in FFNS in subbed.""" start="00:20:48.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So for example, if I have waveform show all in this,""" start="00:20:52.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it will, like, it's very easy to just move one element, for example,""" start="00:20:57.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or make an element larger or smaller.""" start="00:21:03.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And that's the... It might be pretty efficient, I don't know,""" start="00:21:08.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I'm certainly not like writing it to disk each time and reloading it.""" start="00:21:13.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Eric and I demoed in 2020 EmacsConf for Dungeon Mode Works,""" start="00:21:20.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where we demonstrated, you know, showing parts of the map""" start="00:21:25.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then, you know, different characters""" start="00:21:29.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""have different abilities that show,""" start="00:21:31.650" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that allow you to see different dungeon features.""" start="00:21:33.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then if your last character,""" start="00:21:36.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you know, of that class or race dies,""" start="00:21:38.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""then you suddenly can't see""" start="00:21:42.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""secret doors or whatever anymore.""" start="00:21:44.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And so just make that disappear""" start="00:21:46.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""between one turn and the next""" start="00:21:48.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is just working with just simply update the SVG""" start="00:21:50.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and there goes the screen. No, no, no bus, no bus.""" start="00:21:54.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's pretty awesome. So this is an example""" start="00:21:57.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of how I'm using it to kind of show where we are in the, in the track.""" start="00:22:01.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then here's mouse, mouse interaction, right?""" start="00:22:07.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I can change my timestamp right from there. Which is fine.""" start="00:22:09.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, I'm curious how this works exactly.""" start="00:22:21.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""To effect any kind of change in the SVG,""" start="00:22:28.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you have to use the DOM library, right? Yes.""" start="00:22:31.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay, so, but that means that it's going to be,""" start="00:22:36.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""anytime you make a change, it's going to read in the XML,""" start="00:22:39.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""convert it to an Elisp DOM, right?""" start="00:22:43.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then you modify that tree.""" start="00:22:48.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, you keep the DOM, like, well, in this case, for example,""" start="00:22:50.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm actually constructing it using Emacs list objects directly.""" start="00:22:55.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you were working with an external SVG,""" start="00:23:00.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you would parse it first, yes,""" start="00:23:02.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using XML parse file or something like that.""" start="00:23:05.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then you would have it in memory.""" start="00:23:07.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""When you insert the image,""" start="00:23:12.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you insert the list document object model that you have,""" start="00:23:14.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then any changes you make to that document object model""" start="00:23:18.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""automatically get updated in the image somehow.""" start="00:23:21.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, that's fantastic. Yeah. Yeah. I'll show you the code. Yeah.""" start="00:23:25.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I was under the impression""" start="00:23:33.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that there's a round trip to XML involved""" start="00:23:38.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to do anything like to go from displayed""" start="00:23:40.097" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to in-memory to in-memory modified back""" start="00:23:42.299" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to display all around trip.""" start="00:23:46.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah. So let me see where's my thing that changes it.""" start="00:23:47.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So when it's the time.""" start="00:23:52.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's probably some kind of hook that I'm listening to here.""" start="00:23:59.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Playback position hook. Oh, it's this update current bar.""" start="00:24:07.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, so what update current bar does""" start="00:24:12.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is it moves the bar to the right place.""" start="00:24:16.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And you see here how this SVG,""" start="00:24:19.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm actually just reading it off the text property""" start="00:24:21.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so that I know which one is the current one in the overlay.""" start="00:24:24.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I remove the old one, just the element.""" start="00:24:28.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I don't have to mess around with the image.""" start="00:24:31.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I removed the old one for some reason,""" start="00:24:34.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""just to make sure, I guess.""" start="00:24:35.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You can actually just update the attribute on it.""" start="00:24:36.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, I think this is just so that I don't have to worry""" start="00:24:38.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""about whether there is one or there isn't.""" start="00:24:42.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then I add a bar at the right position""" start="00:24:45.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then it makes that little animated sweeping thingy.""" start="00:24:47.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So you see how I'm not recreating the SVG at this point.""" start="00:24:52.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm just getting it from the overlay.""" start="00:24:55.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, that's very interesting. I wonder what it's doing.""" start="00:25:02.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""what it's actually doing under the hood when you run SVG removal.""" start="00:25:07.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, I don't know, too. I think it's RSVG is tied""" start="00:25:09.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""into the display engine, so to speak. Yeah, that it is.""" start="00:25:19.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But RSVG, the library,""" start="00:25:32.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""can only deal with actual SVGs, right, like XML SVGs,""" start="00:25:33.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but we're dealing with the ELISP DOM of an SVG.""" start="00:25:39.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So the display engine can re-enter the LISP.""" start="00:25:43.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I do know that the display engine""" start="00:25:47.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""can re-enter the LISP engine,""" start="00:25:49.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so I think that may be the answer.""" start="00:25:51.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, you can just SVG insert image the object itself.""" start="00:25:53.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So here, for example, SVG create just creates,""" start="00:25:58.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it actually just creates a DOM model.""" start="00:26:01.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this is Lisp, and it's not,""" start="00:26:04.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""it doesn't get printed to string representation or anything.""" start="00:26:06.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then you can SVG insert image,""" start="00:26:09.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or you can set the display and, you know,""" start="00:26:13.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and use pass it like as an SVG image.""" start="00:26:15.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""SVG image gives you an image object""" start="00:26:20.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""if you want to do the like the regular""" start="00:26:22.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""sort of display thingy. Actually, that one says it turns it""" start="00:26:24.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""into a string representation.""" start="00:26:31.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Or at least maybe that's just how it gets retrained.""" start="00:26:34.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Anyhow, some kind of magic happens,""" start="00:26:36.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I don't have to worry about it.""" start="00:26:38.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It just stays on my side. Yeah, but I was thinking about it""" start="00:26:39.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because I expect that if it's converting to XML all the time, every time you make a change,""" start="00:26:44.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""then that's going to be the bottleneck""" start="00:26:49.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for any kind of heavy interactive SVG editing or modification in Emacs.""" start="00:26:52.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The kind that ELEasyDraw does.""" start="00:26:58.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But maybe if we make it compelling enough,""" start="00:27:01.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""then the folks upstream can say, all right,""" start="00:27:03.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""like the way that JSON got a lot faster.""" start="00:27:07.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Who knows? Maybe we can get that to be faster too. Yeah.""" start="00:27:10.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I see a lot of potential for better UIs in Emacs""" start="00:27:13.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with using SVGs. Yeah.""" start="00:27:19.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Nicolas Rougier has all those experiments, right?""" start="00:27:22.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, but all of those, I think, are bound by the limitations""" start="00:27:26.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of how deeply SVGs are embedded in the display engine,""" start="00:27:30.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because that's kind of what we're discussing.""" start="00:27:33.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We want to avoid going to XML,""" start="00:27:36.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I mean, going from XML to Elisp DOM""" start="00:27:38.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to modified Elisp DOM back to XML.""" start="00:27:41.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We want to avoid that round trip. Yeah, for sure.""" start="00:27:44.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Or make that as fast as possible, yeah.""" start="00:27:50.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Does anyone else have anything they want to share?""" start="00:28:04.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I've always got stuff I can share,""" start="00:28:11.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I pretty happily defer. I've already seen what I made.""" start="00:28:13.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Karthik? Oh, I'm a fly on a wall here. I'm not.""" start="00:28:17.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay. I didn't come in with the intent to share anything.""" start="00:28:28.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah. How about you, Sacha?""" start="00:28:32.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Do you have other stuff you haven't shown off recently?""" start="00:28:34.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Aside from all the panicking""" start="00:28:38.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""about getting EmacsConf together this year?""" start="00:28:39.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I just wanted to bring it up.""" start="00:28:42.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, let's see, what do I have in my recent, like, fiddled with?""" start="00:28:45.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I have a project called...""" start="00:28:50.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I have a project called Ufta, which is a little bit fun.""" start="00:28:54.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Let me pull it up here before I share.""" start="00:28:56.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You can see my messy, messy desktop. Okay, there it is.""" start="00:29:00.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And that's supposed to want a shell. Probably that one.""" start="00:29:08.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And we'll just bootroot. keeping in mind that graphics""" start="00:29:21.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is going to end in about five minutes. Ooh, perfect.""" start="00:29:29.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""That'll keep me from from being my normal long-winded self.""" start="00:29:33.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Have you already made contact with Emmanuel? I was not.""" start="00:29:38.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay, I'm going to quickly do a check in.""" start="00:29:47.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay, sounds good. Did you hear back from him?""" start="00:29:50.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Assume that's a yes.""" start="00:30:00.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, I'll go ahead and share screen here""" start="00:30:01.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and just take a look, a very brief look at this.""" start="00:30:04.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Assuming I can present. I had a question for Sacha.""" start="00:30:08.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I had a question for Sacha and you, Corbin.""" start="00:30:16.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Hello. Yeah, you're good. Go for it. Yeah, yeah.""" start="00:30:22.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So in past years, in the EmacsConf,""" start="00:30:28.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""there was a talk by someone,""" start="00:30:33.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""usually John Wheatley, or I think Philip last year,""" start="00:30:36.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""about new developments in Emacs.""" start="00:30:41.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yes, and that is kind of at the whim""" start="00:30:44.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of the Emacs developers,""" start="00:30:48.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""whether that is included in the in the conference.""" start="00:30:50.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's kind of up to the, you know, how busy folks are""" start="00:30:56.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and whether somebody can follow up the time to prepare it.""" start="00:30:59.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I see. Yeah, I noticed that there wasn't one for this year.""" start="00:31:02.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I know of at least one improvement""" start="00:31:07.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or one change to Emacs.""" start="00:31:10.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's small, but I'm guessing it's very crucial""" start="00:31:12.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for a certain class of Emacs users.""" start="00:31:17.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I can talk about that, just that one thing.""" start="00:31:20.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But you can, you can, you can go right.""" start="00:31:24.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I can't share anything and we've got about one minute.""" start="00:31:29.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So have that. Okay. Um, so the change is that, uh,""" start="00:31:32.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""in the development version of Emacs,""" start="00:31:39.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""sorry, child frames are now supported""" start="00:31:41.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""in terminal in the terminal.""" start="00:31:46.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I suspect that not many people know about it yet,""" start="00:31:53.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but basically this means something like Corfu is going to work fine""" start="00:31:56.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""when you're running Emacs in a terminal,""" start="00:32:03.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""as well as pause frames or anything that shows like a little pop-up window""" start="00:32:05.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that previously did not work in Terminal Emacs.""" start="00:32:14.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""That's it. That's the update. Cool.""" start="00:32:19.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay, there I have a share screen button.""" start="00:32:27.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We'll see if I think we're just about to cut away,""" start="00:32:29.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I'll go ahead and see if I can get this going.""" start="00:32:32.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'll just share my whole screen""" start="00:32:34.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and this will be a little ugly as it comes in.""" start="00:32:36.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this is a project that I think is a little bit fun.""" start="00:32:39.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's called Oopda. And basically what this does,""" start="00:32:44.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can see it on my source site,""" start="00:32:47.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that's sr.ht tilde mplscorewin slash Oopda.""" start="00:32:49.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""O-F-D-A, and this is a very simple approach""" start="00:32:55.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to using an org file as a replacement for SQLite.""" start="00:32:59.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's very simple, but it does support like a dot style path and notation.""" start="00:33:04.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So you can get at deeply nested data""" start="00:33:12.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and just gives a little,""" start="00:33:16.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""there's a shell script wrapper that comes with it.""" start="00:33:19.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right.""" start="00:33:24.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Theoretically, this is the Q&A for the graphics talk.""" start="00:33:26.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oops, I have to unmute over here. Sorry.""" start="00:33:32.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, I had a little audio bleed through,""" start="00:33:38.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""my apologies, can you still hear me?""" start="00:33:53.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, I'm gonna guess,""" start="00:34:02.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because I still see us live on the screen""" start="00:34:03.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that we're still live. All right, so I'll just press on.""" start="00:34:05.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So what we're looking at here is a project called Upta.""" start="00:34:12.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Here's the Emacs Lisp source port.""" start="00:34:18.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You can see it's not real impressive""" start="00:34:21.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""even with all of its boilerplate.""" start="00:34:23.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's under 200 lines of code.""" start="00:34:24.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And this is kind of a proof of concept,""" start="00:34:27.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""giving us the ability to use a org.org file""" start="00:34:30.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""as a flat file database. The intention here is to get""" start="00:34:35.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""a kind of transition from SQLite,""" start="00:34:38.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which is using a flat text file as a database,""" start="00:34:40.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to being able to have more of a literate database""" start="00:34:44.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where we can intermix documentation about the data""" start="00:34:48.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with the data itself,""" start="00:34:52.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then by giving a path on the command line.""" start="00:34:54.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'll go back to the README, just take a look at that.""" start="00:34:57.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And you can see there's a couple of kind of examples here""" start="00:35:02.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where we're, here we would be querying a path.""" start="00:35:05.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We can also provide a value""" start="00:35:11.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and that'll set data into the file.""" start="00:35:15.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It also has an optional first parameter""" start="00:35:20.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to specify the specific org file by default.""" start="00:35:23.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It looks for a file called data.org.""" start="00:35:26.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And of course that can be used inside Emacs as well,""" start="00:35:29.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""although the value of that may be a little bit limited""" start="00:35:34.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""compared to more sophisticated""" start="00:35:37.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""technologies like org-element.""" start="00:35:39.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""This is not an implementation""" start="00:35:41.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that mirrors all of org-element""" start="00:35:43.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or any of the more complex functionality of org.""" start="00:35:47.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's really as simple as possible proof of concept""" start="00:35:50.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to just to be able to kind of work""" start="00:35:52.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with the data inside an org file""" start="00:35:57.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and get it back out on the command line.""" start="00:35:59.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So we'll see if we can make it work here.""" start="00:36:01.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Corwin, could you increase the font size?""" start="00:36:07.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I surely will. All right. How's that?""" start="00:36:13.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""That's my picture. Yeah. Okay. Cool.""" start="00:36:27.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, let's see if we do have a, well, we can probably make it.""" start="00:36:31.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Let's do this.""" start="00:36:39.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, and then in theory, this just works.""" start="00:37:00.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So we'll cut.""" start="00:37:05.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So we'll just create a data file called data.org.""" start="00:37:42.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Make sure that works. Looks reasonable.""" start="00:37:45.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Let's try adding some data to it. Hmm, not so happy.""" start="00:37:50.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay, let's try it the hard way.""" start="00:38:13.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'll come back over here to my usage""" start="00:38:17.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and we'll just try running it.""" start="00:38:21.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Is Emacs, is finding Emacs really the issue?""" start="00:38:23.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It seems to me it's not, it's not liking my path.""" start="00:38:37.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's not finding out that I do EO and PWD.""" start="00:38:41.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It wants it to be on the log. I see.""" start="00:38:44.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I may have to even mess with that further,""" start="00:38:49.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but we'll just try it.""" start="00:38:54.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this should retrieve the value if it works.""" start="00:38:55.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, and let's take a take a simple""" start="00:39:04.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, add-to-list takes a symbol.""" start="00:39:17.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We're going to have issues with bash quoting,""" start="00:39:47.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so you should escape the quoting side.""" start="00:39:52.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Gotcha. You're kidding.""" start="00:39:58.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm not letting go. Whoa. That might work.""" start="00:40:27.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I got my parents right. Never demo live. How exciting. OK.""" start="00:40:36.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Without batch, though, we may not get our output. OK.""" start="00:41:02.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Well, that's as far as I'm going to take it.""" start="00:41:13.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I should have prepped a demo environment.""" start="00:41:20.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I wasn't really prepared to demo. No worries.""" start="00:41:21.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Couple of questions about this feature.""" start="00:41:26.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The first question is, do you use it? I do use it, yeah.""" start="00:41:30.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I should have gotten onto the environment""" start="00:41:37.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where I'm using it. It's a little messy.""" start="00:41:41.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It gets into another project""" start="00:41:45.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that's way too complicated to get into.""" start="00:41:47.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, but what kinds of things do you use it for?""" start="00:41:48.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's sort of hard to answer""" start="00:41:53.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that without getting into my other project,""" start="00:41:57.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but essentially I've got a web development tool chain""" start="00:41:59.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that is kind of a web-based REPL""" start="00:42:02.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that is kind of a literate compute environment, if you will,""" start="00:42:05.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""allowing me to use a bunch of virtual machines""" start="00:42:10.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""as one big computer. That project is called Ghost Wheel.""" start="00:42:13.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And so in order to show off the homepage,""" start="00:42:19.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So on this page, you can see the list of machines,""" start="00:42:23.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then you'll also see there's these state indicators.""" start="00:42:30.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And right now, as a matter of fact,""" start="00:42:34.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""what I've been hacking on""" start="00:42:38.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is trying to get support for org tables.""" start="00:42:41.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Right now, I support only changing all of the data""" start="00:42:44.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""within some heading, subheading, or whatever.""" start="00:42:48.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""What I'd like to be able to do is specify,""" start="00:42:51.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using org table fm syntax, the particular row column.""" start="00:42:55.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So find a particular named table,""" start="00:43:01.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""find a particular row, you know,""" start="00:43:03.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""column one, you know, row two, column one,""" start="00:43:06.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then set the value from the command.""" start="00:43:08.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Currently, I just use it for very simple stuff.""" start="00:43:11.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I don't really want to show that off.""" start="00:43:18.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I've got another page that lists all of the DNS names""" start="00:43:20.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that are associated that are hosted on Ghostwheel.""" start="00:43:23.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And so I use that to add items to the list.""" start="00:43:26.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Does it make sense? Yeah, it sounds useful.""" start="00:43:29.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So one thing that I would like,""" start="00:43:40.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I guess it's easy enough to write,""" start="00:43:47.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but is a tool exactly like this""" start="00:43:51.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where I can query my org files from the command line?""" start="00:43:58.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, that's exactly what it says.""" start="00:44:03.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, but it's going to be more""" start="00:44:06.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""like a database query where, you know, I say select, select all headings where, you know,""" start="00:44:14.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that contain this string or that have this tag, right?""" start="00:44:23.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The kinds of things that you can do with org-ql from outside, from inside Emacs, right?""" start="00:44:27.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""To be able to do those from the command line with,""" start="00:44:38.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm going to invoke SQL here, like SQL SELECT statements,""" start="00:44:41.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but it doesn't have to be that syntax, right?""" start="00:44:48.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Just that capability.""" start="00:44:50.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yeah, I can see that being useful as a command line tool.""" start="00:44:52.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I don't even care about write,""" start="00:44:57.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""like the ability to write or manipulate the file.""" start="00:44:59.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Just query. the command line that sounds yeah yeah exactly""" start="00:45:02.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to be able to dig a piece of data out of an org file as well""" start="00:45:11.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for my purpose it's very useful to be able to replace it""" start="00:45:15.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because then i can deal with submit the form you know""" start="00:45:18.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and that might be like a sign up form""" start="00:45:21.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then i just add the user add up an entry into the org file""" start="00:45:24.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for that user right what it doesn't do is a relational data""" start="00:45:29.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So everything, it's essentially a document data store.""" start="00:45:35.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Like a Mongo kind of. True. So over on IRC, ScrewLisp asks,""" start="00:45:40.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""what does it mean to query an ARC file?""" start="00:45:53.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Is the data in a table? Is it in an ELISP nested list view""" start="00:45:57.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of a table that has a name in ARC?""" start="00:46:01.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And my answer to that is that if you ever used RQL,""" start="00:46:06.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""written by Alpha Papa,""" start="00:46:10.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""then that's the kind of thing I'm talking about.""" start="00:46:14.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, you query based on one of a set of attributes.""" start="00:46:18.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And these attributes are anything that's recognized by ARC.""" start="00:46:23.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""For example, the to-do status, the dates,""" start="00:46:30.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the outline path, the headings, a full text search.""" start="00:46:35.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""There are several more.""" start="00:46:40.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The presence or absence of certain properties.""" start="00:46:43.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using any combination of those if you want to dig down""" start="00:46:46.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and find some data in an art file.""" start="00:46:50.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""That's the kind of query I'm talking about.""" start="00:46:52.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It is somewhat equivalent""" start="00:46:56.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to being able to write SQL queries""" start="00:46:58.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where you match on things just for your art files.""" start="00:47:02.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Okay. I think we might have figured out our problem.""" start="00:47:09.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It was DOS encoding. See if that works.""" start="00:47:21.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I switched the development track over""" start="00:47:38.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to just watching the gen track since I couldn't find it.""" start="00:47:47.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Also, Eludo wants to mention""" start="00:47:53.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the Emacs Carnival theme for December.""" start="00:47:57.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Yes, the people of Emacs,""" start="00:48:00.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of which you are all very awesome.""" start="00:48:02.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Thank you so much for your patience.""" start="00:48:04.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Today has been very interesting.""" start="00:48:05.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But yes, at some point we can show that too.""" start="00:48:08.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And we can basically wrap up anytime we like""" start="00:48:13.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or hang out for as much time as we like also.""" start="00:48:17.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""okay so this is okay at least i got""" start="00:48:19.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""as far as a working demo here""" start="00:48:23.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so now you can kind of see what's going on um""" start="00:48:24.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and i'll just wrap that into uh""" start="00:48:26.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""into a little prettier output""" start="00:48:31.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And you can see that it modified the value.""" start="00:48:40.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So it's pretty darn simple.""" start="00:48:53.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Again, all it's doing is completely replacing all of this content""" start="00:48:59.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with whatever new value is given as its final argument""" start="00:49:06.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""after naming the data path.""" start="00:49:11.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So the one refinement we can do just to get a little more complex example going.""" start="00:49:14.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We'll deepen our structure a little bit. And try that.""" start="00:49:23.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So here now we'll say test two.""" start="00:49:32.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And we can take a look at the data file""" start="00:49:38.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and see that it has adjusted that""" start="00:49:47.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because test2 was completely unique, that worked fine.""" start="00:49:51.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If that were not the case,""" start="00:49:55.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""we would have had to specify the path""" start="00:50:00.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""using dot notation like this. And that's pretty much it.""" start="00:50:02.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It took me much longer to figure out""" start="00:50:17.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""why it wasn't just working than it did to demo it.""" start="00:50:20.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And again, what I really like about this program,""" start="00:50:23.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""besides the fact that I find it quite useful""" start="00:50:29.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to just be able to stuff values into an org file""" start="00:50:31.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""from the command line using shell script,""" start="00:50:34.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is what I really like about this""" start="00:50:36.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is that it's a whopping 190 lines of code,""" start="00:50:41.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""including all the boilerplate.""" start="00:50:46.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I will share the project into the chat.""" start="00:50:47.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, Corwin, you're not using org-element for this, are you?""" start="00:50:55.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""No. Yeah, that's a great question.""" start="00:51:02.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Let's just dig a little into the code here.""" start="00:51:06.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Or maybe it would be more fun to actually""" start="00:51:10.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So the only real requires here, I do use cl-lib mostly.""" start="00:51:21.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm directly using the macros from org.""" start="00:51:26.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Particularly, I'm extremely fond of this function.""" start="00:51:33.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'd love to see this just promoted to promoted""" start="00:51:36.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""somewhere deeper into Emacs proper,""" start="00:51:41.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so that I don't have to load all of the org macros""" start="00:51:43.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to get to this particularly useful one,""" start="00:51:47.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which just tells me whether ignoring whitespace""" start="00:51:50.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""a string has any characters, has greater than zero length.""" start="00:51:54.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Isn't that just string blank B?""" start="00:51:59.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this is a little different.""" start="00:52:04.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""This deals with... I may struggle to remember the details,""" start="00:52:09.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it's possible that the non-org specific version""" start="00:52:14.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""has even been improved or I didn't use it correctly,""" start="00:52:21.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I believe my experience was it didn't handle new lines, for example, quite the same way.""" start="00:52:23.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So getting into what this actually does,""" start="00:52:29.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""most of the program is finding the relevant part of the file.""" start="00:52:38.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You'll see that we start out by doing a depth-based search,""" start="00:52:43.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""capture the value that we're looking for.""" start="00:52:49.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then finally, we widen the buffer""" start="00:52:51.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and keep handling the case where we might be being called""" start="00:52:58.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""from within Emacs in a narrowed buffer.""" start="00:53:01.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""This is another what should be documented at the top.""" start="00:53:05.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So that is obviously going to load org.""" start="00:53:11.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Just double-check that. Yeah, it is going to load org.""" start="00:53:13.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And we can see that because it didn't find the function.""" start="00:53:21.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""until I loaded Org and then it did when I did C-h f""" start="00:53:30.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to get definition of a function.""" start="00:53:40.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, widen the buffer and then I just start looking for the search.""" start="00:53:45.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You can see I'm doing simple regular expression based searches here.""" start="00:53:51.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Looking for lines, ultimately, that start with a star.""" start="00:53:55.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""That was a little simpler format""" start="00:54:01.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that didn't quite work out.""" start="00:54:05.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I'm searching for, here this is a little tricky,""" start="00:54:07.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I'm searching for a number of stars""" start="00:54:25.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""equal to the depth that I want.""" start="00:54:28.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The depth that I want being calculated""" start="00:54:30.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""based on the number of dots that were in the query string.""" start="00:54:33.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""from there, you know, kind of skipping some stuff, right?""" start="00:54:38.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Once we find our starting position,""" start="00:54:47.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""then we're going to have to find the end of that,""" start="00:54:49.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the section that we're going to read or replace.""" start="00:54:53.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Text a tiny bit smaller. So I checked org-string nwp,""" start="00:54:57.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and it's the same as string blank p.""" start="00:55:12.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""exactly the same code or the same result?""" start="00:55:20.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""No, it's the same result. Well, it's the same check,""" start="00:55:26.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but string blank p will return a match object,""" start="00:55:30.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""like a string match object,""" start="00:55:34.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""whereas the org version will return the string itself""" start="00:55:36.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""if it finds a match, as in if it's blank.""" start="00:55:39.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I don't remember that.""" start="00:55:46.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""As a Boolean check, they are the same.""" start="00:55:48.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you use it as, you know, is it blank or not.""" start="00:55:51.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, um, yeah, I've talked for way longer.""" start="00:55:54.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I thought I literally thought""" start="00:56:02.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""this would be a five minute thing.""" start="00:56:04.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm not sure if there are any questions on it,""" start="00:56:05.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but just to simply answer your question.""" start="00:56:08.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""No, it doesn't use org element.""" start="00:56:10.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""This is pure regex based work.""" start="00:56:11.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, the advantage of not using... Right.""" start="00:56:23.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, the advantage of not using arg element""" start="00:56:26.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is that you don't have to load arg or arg element, right?""" start="00:56:32.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And so, it's going to be faster.""" start="00:56:37.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And it's going to be faster both because you don't have to load arg element""" start="00:56:39.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and because you don't have to run arg element, like the arg parser.""" start="00:56:45.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But on the other hand,""" start="00:56:51.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you end up loading all of org anyway.""" start="00:56:52.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So at that point, it might just be better""" start="00:56:58.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to use org element because it's more robust.""" start="00:57:02.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""For example, if you have a bunch of leading stars""" start="00:57:05.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""inside a source block or something,""" start="00:57:07.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you don't want to misclassify that.""" start="00:57:09.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Matter of fact, I believe I had to do some flossing with it""" start="00:57:11.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to deal with not just that,""" start="00:57:16.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but drawers and things like that.""" start="00:57:18.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""right yeah so at the end of the day""" start="00:57:21.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that was just an extra 10 or 20 characters""" start="00:57:25.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""in the regular expression so i just shrugged and wrote them""" start="00:57:28.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can see there are a number of i""" start="00:57:31.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""i happen to like writing regular expressions""" start="00:57:36.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and find them relatively readable so""" start="00:57:40.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So it didn't bother me doing that.""" start="00:57:42.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I've also done a bunch of work with org-element""" start="00:57:46.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with the dungeon project,""" start="00:57:49.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which of course uses that extensively""" start="00:57:51.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to pull data out of tables and so on.""" start="00:57:53.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And indeed, I think that may ultimately be my solution.""" start="00:57:57.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I've been kind of distracted on a side quest""" start="00:58:01.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to improve the org-table-fm parser.""" start="00:58:06.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""There's a post on my blog about the work that I've done there,""" start="00:58:09.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and recently started talking to Ihor,""" start="00:58:14.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the new org maintainer,""" start="00:58:19.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""who took over in the last year or so from Bastien.""" start="00:58:20.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Just about what it would take to pick that up,""" start="00:58:27.580" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or at least get it to a point""" start="00:58:32.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where somebody else could work on it.""" start="00:58:34.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's pretty dense right now.""" start="00:58:35.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this thing is a bit of a monster,""" start="00:58:39.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but at the end of the day,""" start="00:58:59.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""our goal is to extend the syntax,""" start="00:59:01.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is to be able to use this Org Table FM syntax""" start="00:59:06.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""in other contexts.""" start="00:59:12.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So if you haven't looked at board table FM,""" start="00:59:14.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""these I bar or these I markers""" start="00:59:18.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""are telling us to look for the table separator.""" start="00:59:21.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So positioning based on the location of a table separator.""" start="00:59:26.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I find that a little bit brittle""" start="00:59:29.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""just because it's really easy to go in and decide,""" start="00:59:34.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""oh, it'll look better with an additional line separator in there.""" start="00:59:38.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And then all of these formulas break everywhere.""" start="00:59:42.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So it would be a little more fun""" start="00:59:48.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to have at least variables in there.""" start="00:59:49.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And that's kind of part of the scope.""" start="00:59:53.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If we look, and here you get kind of a hint""" start="00:59:56.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of the new syntax I'd like to support,""" start="01:00:04.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""things like $star, $underscore.""" start="01:00:06.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Keyword it's it's probably a half-hour talk""" start="01:00:12.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""just to get into what every single one of these would do""" start="01:00:17.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But this post does does give some some context of that""" start="01:00:20.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And more importantly there is a as a complete test program that""" start="01:00:26.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Worked the last time I was playing with it""" start="01:00:35.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And this gives you complete examples""" start="01:00:39.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of all the syntax that the work in progress does currently support.""" start="01:00:43.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You'll see some of these items are commented out.""" start="01:00:48.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Those aren't supported yet""" start="01:00:52.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and before I would implement them now,""" start="01:00:54.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""especially now that we're talking in terms of trying to take org itself this direction, you know,""" start="01:00:56.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of kind of beefing up the the TableFM format parsing""" start="01:01:04.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so that it could be used in other contexts besides""" start="01:01:13.540" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""specifically within a formula.""" start="01:01:17.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I wouldn't want to add features""" start="01:01:19.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to it without discussing those.""" start="01:01:26.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this is just a simple, basically a literate test file""" start="01:01:33.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""if you want to call it that.""" start="01:01:37.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The perhaps key improvement here""" start="01:01:40.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""is naming all of the different capture groups.""" start="01:01:43.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""which just, if you're working""" start="01:01:49.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with really huge regular expressions, which this is,""" start="01:01:52.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""let me just make sure the whole pagex is right in here""" start="01:01:55.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so we can see it, yeah.""" start="01:01:58.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So here's the actual rewrite, scale it a little bit,""" start="01:02:00.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so you can see it's kind of a monster.""" start="01:02:05.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And that's all using Rx.""" start="01:02:14.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So hopefully that looks pretty familiar.""" start="01:02:27.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Dollars for specifying a column, at sign to specify a row.""" start="01:02:29.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And we also have the keys.""" start="01:02:35.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Anybody else want to show and tell?""" start="01:02:43.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We're going to cut over to the automated introduction""" start="01:02:58.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for the Saturday closing remarks in like four minutes.""" start="01:03:01.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, but quick, quick, quick mention of the Emacs Carnival.""" start="01:03:07.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So the Emacs Carnival is a shared blogging theme.""" start="01:03:15.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""where lots of people write about a specific theme,""" start="01:03:20.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then if you write about it,""" start="01:03:25.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you can send your link to whoever's hosting the carnival.""" start="01:03:26.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And it's a great way to discover other people's cool stuff.""" start="01:03:28.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So if I take presenter, hang on a second, take presenter.""" start="01:03:31.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Oh, actually, haha, I know,""" start="01:03:35.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'm going to make Elladom present it.""" start="01:03:39.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Haha, you are now in charge. Okay, take it away.""" start="01:03:41.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So I've been using Emacs for like 46 years now,""" start="01:03:47.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""back to TECO Emacs. And as I just said in the chat,""" start="01:03:49.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I've found that the people who use Emacs""" start="01:03:53.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""tend to be interesting people in many different ways.""" start="01:03:56.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And so this month, I'm just saying, let's give a shout out""" start="01:03:59.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to some of the interesting people we've met along the way.""" start="01:04:03.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And including some of the people""" start="01:04:06.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that are putting on this conference""" start="01:04:09.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""are some of the most interesting""" start="01:04:10.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and helpful people I've ever met.""" start="01:04:11.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So thank you. You're very kind. Thank you.""" start="01:04:13.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'll say more than that. Maybe I will.""" start="01:04:27.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I completely agree with you and I couldn't agree more.""" start="01:04:30.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I think that's how Sacha and Amin and Leo""" start="01:04:34.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""really dragged me into this,""" start="01:04:38.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you know, into being a volunteer.""" start="01:04:40.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I really, I'm sure we'll talk""" start="01:04:42.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""about this in the closing remarks,""" start="01:04:44.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but I can't recommend volunteering for this project enough.""" start="01:04:46.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's just so fun to talk backstage""" start="01:04:50.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with the presenters I don't know.""" start="01:04:54.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's an extremely engaging community.""" start="01:05:00.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's really thoughtful.""" start="01:05:11.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I like the way y'all are so patient and awesome""" start="01:05:12.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and I can be just quietly having my little freak out here""" start="01:05:15.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and everyone's fine""" start="01:05:19.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and will even help debug things live as needed.""" start="01:05:20.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this is all good.""" start="01:05:23.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Anyway, so if people want to participate,""" start="01:05:45.500" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you basically write a blog post.""" start="01:05:48.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you don't have a blog yet,""" start="01:05:49.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""there are any number of packages in Emacs,""" start="01:05:53.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""as well as web-based services,""" start="01:05:56.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but really, you can get something going with Emacs.""" start="01:05:58.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or exporting to HTML and maybe even figure out RSS,""" start="01:06:02.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or you can use a static site generator like Hugo,""" start="01:06:05.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or you can find, if you can set up WordPress,""" start="01:06:08.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that's another way to do it.""" start="01:06:11.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Or you can email me your thing and I'll post it on my blog""" start="01:06:12.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and let me know how you want to be credited for it.""" start="01:06:15.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Anyway, so you can share your story""" start="01:06:20.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or share your story about somebody else's story""" start="01:06:23.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and celebrate Emacs community.""" start="01:06:26.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And we can send it to George also.""" start="01:06:35.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We'll then make links in that blog post.""" start="01:06:39.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And on the subject of community,""" start="01:06:48.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I also heartily recommend the IRC community on Emacs.""" start="01:06:50.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Pound Emacs is another one of those things""" start="01:06:53.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that I just personally can't get enough of,""" start="01:06:55.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and I hear a lot of stories about just how it's helped people.""" start="01:06:58.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, we are now having the automated introduction""" start="01:07:05.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and then it's going to rejoin over here very soon.""" start="01:07:09.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Hang on a second. Wow, that's going.""" start="01:07:12.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Saturday close and let's arrange our screen nicely.""" start="01:07:22.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""All right, we made it to the end of the first day! Woohoo!""" start="01:07:34.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Thank you for joining us""" start="01:07:38.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for the first day of EmacsConf 2025.""" start="01:07:40.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Feel free to spread the word""" start="01:07:42.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""because there is still another day of fun talks tomorrow.""" start="01:07:44.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So hashtag EmacsConf and hashtag Emacs.""" start="01:07:48.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you do hashtag Emacs on Macedon""" start="01:07:51.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""or Blue Sky or other places, we'll probably find it.""" start="01:07:54.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Or if I don't, you can just let me know also.""" start="01:07:58.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The prerecorded talks should be up""" start="01:08:01.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""on the talk pages already.""" start="01:08:04.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""The live talks, we'll probably actually get them up""" start="01:08:05.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""within the next week or two.""" start="01:08:09.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I think they've already started processing,""" start="01:08:11.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so I just had to sit down and then work with""" start="01:08:13.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""our wonderful army of volunteer captioners""" start="01:08:15.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to get them all nicely captioned.""" start="01:08:18.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""But anyway, so the prerecorded talks""" start="01:08:20.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""are also up on YouTube,""" start="01:08:22.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and I will eventually also upload them""" start="01:08:23.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to TubeNix, which is a PeerTube instance.""" start="01:08:25.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We will work on extracting live talks.""" start="01:08:29.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you'd like updates,""" start="01:08:31.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""please subscribe to the EmacsConf Discuss mailing list.""" start="01:08:32.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you've got ideas for making things better,""" start="01:08:35.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""we have so many ideas. I always end up with a very long""" start="01:08:37.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""to-do list after these things. Please add them to the pad.""" start="01:08:39.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I'd love to hear from you on how we can make it even smoother next year.""" start="01:08:43.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""There are about 100 people watching in gen""" start="01:08:46.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and 100 people watching in devs, which is really awesome.""" start="01:08:49.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""It's amazing to think that we can have""" start="01:08:52.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""an Emacs party for a lot of people.""" start="01:08:54.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And we can only do this because of all the wonderful speakers,""" start="01:08:56.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""volunteers, participants,""" start="01:09:00.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and very patient people in our lives""" start="01:09:02.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""who make it possible through all the time and support.""" start="01:09:04.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So this year, Corwin did most of the hosting.""" start="01:09:07.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I mean, also dropped by earlier, so that's great.""" start="01:09:10.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I hope Leo is okay. You know, we managed.""" start="01:09:13.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And I'm Sasha, by the way. I was running around backstage""" start="01:09:17.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and occasionally dropping in to go on the stream.""" start="01:09:22.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""There are lots of other volunteers who are not on air.""" start="01:09:26.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So, for example, during the proposal review process,""" start="01:09:29.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""we got a lot of wonderful comments""" start="01:09:32.720" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""from J.C. Hellery, Chico, and James Andrews-Howell.""" start="01:09:34.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""captions from Amitav and Rodion and other people""" start="01:09:37.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""have actually started also helping""" start="01:09:41.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""with the captions as well.""" start="01:09:42.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So jay_bird just sent in some stuff today too.""" start="01:09:45.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""We are slowly working on getting a mirror in the EU set up""" start="01:09:49.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so it'll be a little faster for people.""" start="01:09:52.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So thanks to Yang3 for lending us a server.""" start="01:09:55.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Babin and Michael and Ian and Jamie""" start="01:09:58.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and Eeyore and Floyd Coulter have also helped out as well.""" start="01:10:00.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Thanks to the Free Software Foundation""" start="01:10:06.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for the mailing list, the media server, and of course, GNU Emacs itself,""" start="01:10:08.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for which an astonishing amount""" start="01:10:12.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""of the scripting is done in Emacs. It's great.""" start="01:10:15.440" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Thanks to Ry P for the server that we're using for OBS""" start="01:10:19.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so that we can just VNC into it and I can manage two tracks""" start="01:10:23.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""without making my computer melt. It's great.""" start="01:10:27.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And of course, to all the users""" start="01:10:30.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and contributors and project teams""" start="01:10:32.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that work on all the free software""" start="01:10:34.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""that this stuff is built on.""" start="01:10:36.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Emacs, Org Mode, ERC, Tramp, Magit, BigBlueButton,""" start="01:10:37.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Etherpad, IkiWiki, IceCast, OBS, The Lounge,""" start="01:10:43.640" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""LiberaChat, FFmpeg, OpenAI Whisper, WhisperX,""" start="01:10:48.240" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""the Aeneas forced alignment tool,""" start="01:10:52.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""PsyTransfer, SubEd, SubSeg, Mozilla Firefox, MPV, and Tampermonkey,""" start="01:10:55.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and other things I probably forgot to mention.""" start="01:11:00.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Thanks to Shoshin for the music,""" start="01:11:02.200" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and thanks to people also who've donated""" start="01:11:04.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""through the Working Together program,""" start="01:11:06.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""like Scott and Jonathan and other anonymous donors.""" start="01:11:08.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So that's a quick thanks. There's more tomorrow,""" start="01:11:12.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but Corwin, do you have any parting words?""" start="01:11:15.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You know, my parting words, Sacha are a thanks to you""" start="01:11:18.360" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and not just a thanks""" start="01:11:23.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""for the hundreds of hours that you put""" start="01:11:25.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""into preparing this conference,""" start="01:11:27.280" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""you know, over the years and probably just this year,""" start="01:11:29.400" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""but also for all that you do for the community you are.""" start="01:11:32.160" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""You are a real unsung hero,""" start="01:11:36.000" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""even though I do hear your praises sung.""" start="01:11:38.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""They really can't be sung enough.""" start="01:11:42.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""In fact, I just this last week""" start="01:11:43.760" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""recommended to two different people your blog""" start="01:11:45.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""as a place to get a first introduction to Emacs.""" start="01:11:48.040" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Your Emacs news is an incredible contribution,""" start="01:11:51.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and just I want you to hear us thanking you.""" start="01:11:54.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Thank you, Sacha. Emacs is a lot of fun,""" start="01:11:57.960" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and Emacs people are a lot of fun,""" start="01:12:04.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so it's all very wonderful. Yeah, we can wrap up here.""" start="01:12:07.520" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""People can keep hanging out if they want.""" start="01:12:10.880" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""I have a kiddo who is probably going to be back home soon""" start="01:12:15.080" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and will pounce on me for more hugs,""" start="01:12:21.120" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""so I will see y'all tomorrow.""" start="01:12:23.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""uh, for more probably the same kind of stuff.""" start="01:12:25.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Shut it down, save our energy for tomorrow.""" start="01:12:29.920" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Uh, we do like to run into like hours long closing tomorrow.""" start="01:12:32.680" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""So we'll work on resisting that.""" start="01:12:36.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Um, I suggest we, we look, we go get some rest""" start="01:12:38.320" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""and come, come back at it fresh tomorrow.""" start="01:12:41.560" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Anybody else, any concerns with that or shall we go for it?""" start="01:12:43.840" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""Sounds good to me.""" start="01:12:47.800" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""If you've got ideas, pop them into the etherpad.""" start="01:12:50.480" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""And thank you so much for sharing this time with us.""" start="01:12:53.600" video="mainVideo-open-mic" id="subtitle"]]
+[[!template text="""See you tomorrow.""" start="01:12:56.640" video="mainVideo-open-mic" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20open-mic%3A%20Open%20session)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/open-mic-before.md b/2025/info/open-mic-before.md
new file mode 100644
index 00000000..b15685d5
--- /dev/null
+++ b/2025/info/open-mic-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 77-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-open-mic>
+Etherpad: <https://pad.emacsconf.org/2025-open-mic>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-open-mic"><source src="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-open-mic--open-session--participants--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:16:28 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-open-mic">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.m4v">Download --main.m4v (195MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.opus">Download --main.opus (23MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-open-mic--open-session--participants--main.webm">Download --main.webm (140MB)</a></li><li><a href="https://youtu.be/lnieSGyFRek">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/open-mic-nav.md b/2025/info/open-mic-nav.md
new file mode 100644
index 00000000..d0fb4b77
--- /dev/null
+++ b/2025/info/open-mic-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/greader">GNU Emacs Greader (Gnamù Reader) mode is the best Emacs mode in existence</a>
+Next by track: <a href="/2025/talks/sun-open">Sunday opening remarks</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/org-babel-after.md b/2025/info/org-babel-after.md
new file mode 100644
index 00000000..f788e2a1
--- /dev/null
+++ b/2025/info/org-babel-after.md
@@ -0,0 +1,221 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="org-babel-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""What are reactive notebooks?""" start="00:00:01.120" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""Hello, everyone. My name is Abhinav,""" start="00:00:01.120" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and I'm going to talk about""" start="00:00:03.034" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""how to make Org Babel reactive. So reactivity here""" start="00:00:03.901" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""means reactivity in the sense of reactive notebooks.""" start="00:00:07.240" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So if you used Org Babel,""" start="00:00:10.001" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you might also have used Jupyter notebooks,""" start="00:00:11.601" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which are basically notebooks primarily for""" start="00:00:13.934" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Python programming,""" start="00:00:16.200" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""where you have these text and code blocks interleaved,""" start="00:00:16.934" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then you can execute every code block independently,""" start="00:00:20.101" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then you control the order of execution manually,""" start="00:00:23.158" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""or you can just run the code blocks""" start="00:00:25.859" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""from top to bottom. But with reactive notebooks,""" start="00:00:27.200" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""what happens is that there's another way of running""" start="00:00:29.700" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which is basically by having all these""" start="00:00:32.928" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""dependent code blocks automatically get""" start="00:00:35.330" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""executed whenever you make a change.""" start="00:00:37.000" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So for example, if you change a variable,""" start="00:00:38.901" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""everything else that's dependent on""" start="00:00:40.775" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""that variable will be executed automatically.""" start="00:00:42.160" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""I'll show you an example of what that looks like.""" start="00:00:44.434" video="mainVideo-org-babel" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Reactivity demo""" start="00:00:49.042" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""Right, here's an example reactive Notebook.""" start="00:00:49.042" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So this is called Observable.""" start="00:00:51.763" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Observable is this tool made by""" start="00:00:53.560" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""the creator of d3.js which is""" start="00:00:54.864" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""a famous JavaScript charting library. So here, the""" start="00:00:57.680" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""interface is very similar to Jupyter Notebook.""" start="00:01:01.500" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""You basically are having these cells""" start="00:01:03.668" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and each cell could be a text cell, like here,""" start="00:01:06.408" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""this is a Markdown cell""" start="00:01:08.509" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then there are these code blocks.""" start="00:01:09.589" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Now each code cell is basically defining a variable.""" start="00:01:11.610" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""This is important in reactive notebooks because""" start="00:01:15.251" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""each cell is connected to other cell via this variable""" start="00:01:17.840" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""usage. So here data is defined,""" start="00:01:21.240" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""then there is filtered which is defined""" start="00:01:23.553" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which is dependent on data, and then this plot is""" start="00:01:25.013" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""dependent on filtered.""" start="00:01:27.720" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So now, in a classical notebook, what I will do is""" start="00:01:29.134" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""if I change something here, let's say from 1 to 2,""" start="00:01:31.154" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""I will have to run this, and then run this plot block again""" start="00:01:34.395" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""to make the change be visible.""" start="00:01:34.855" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""But in a reactive notebook, what happens is""" start="00:01:40.336" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""I can just change this from some value""" start="00:01:42.056" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""to some value, and then execute,""" start="00:01:44.397" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then every descendant is also executed,""" start="00:01:46.257" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""because that's how the reactivity works.""" start="00:01:48.818" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""You change this variable,""" start="00:01:51.040" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""so this should also be changed,""" start="00:01:51.938" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""because this is dependent on this variable.""" start="00:01:53.081" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Now this is really helpful""" start="00:01:55.239" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""if you have a very complex and messy notebook""" start="00:01:56.859" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which is what actually happens in reality.""" start="00:01:59.000" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""You end up doing an exploratory analysis,""" start="00:02:01.200" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and you have these code blocks lying here and there.""" start="00:02:03.481" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Then you change something""" start="00:02:05.960" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then you have to keep something in your mind""" start="00:02:07.102" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""that if I change this, I need to run""" start="00:02:09.282" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""these five code blocks again""" start="00:02:11.363" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""to finally get to the result that I want to see.""" start="00:02:13.024" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Stale state causes a lot of issues in Jupyter Notebooks.""" start="00:02:15.605" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So this is really good for reactivity, sorry reproducibility,""" start="00:02:20.468" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""but this is also really good for""" start="00:02:23.789" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""just having this exploration""" start="00:02:26.631" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""that you're trying to do. For example,""" start="00:02:28.600" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you're changing something and it's really easy""" start="00:02:30.118" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""to just see that change happening in real time""" start="00:02:31.762" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""in your outcome variables, right?""" start="00:02:34.888" video="mainVideo-org-babel" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Org-Babel""" start="00:02:38.499" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""So I was wondering how to introduce this reactivity in Org Mode.""" start="00:02:38.499" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""And here's how it will look like.""" start="00:02:41.921" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So this is a demo Org Mode file.""" start="00:02:43.201" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""There are many Org Babel blocks here.""" start="00:02:46.303" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So you start from here.""" start="00:02:48.604" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Let's say this is a code block. It has a name.""" start="00:02:49.564" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""And then there's another code block,""" start="00:02:52.086" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which is dependent on the previous one,""" start="00:02:53.666" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""as you can see here, and so on.""" start="00:02:55.427" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""And then finally, there's a plot here,""" start="00:02:57.808" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which is a gnuplot code.""" start="00:02:59.369" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""And you can see the image here.""" start="00:03:00.890" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Now, what happens usually is that""" start="00:03:02.551" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""if I change this value from,""" start="00:03:04.132" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""let's say, 113 to 112, nothing happens on its own right?""" start="00:03:05.197" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""There's an extra step of execution that I will have to do""" start="00:03:09.200" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""so I will do that, and then the value is changed.""" start="00:03:12.200" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Now the problem is that only this value is changed and""" start="00:03:15.080" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""if I go down and see the image, nothing will have changed.""" start="00:03:17.700" video="mainVideo-org-babel" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Running the whole buffer""" start="00:03:21.080" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""So what I can do is basically,""" start="00:03:21.080" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""a really simple thing is that,""" start="00:03:23.080" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""a simple trick is to basically""" start="00:03:24.819" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""enable a hook, like, add a hook""" start="00:03:26.600" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""whenever you're saving the buffer,""" start="00:03:29.446" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you just run the full buffer again,""" start="00:03:30.526" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""like run all the code blocks automatically.""" start="00:03:31.867" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Now if you do that, you can basically make a change somewhere""" start="00:03:34.288" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then you can, you know,""" start="00:03:36.850" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""see how everything else is changing""" start="00:03:37.890" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which gives you some sort of reactivity,""" start="00:03:41.072" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""but there's still a lot of computation""" start="00:03:42.713" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""that's being wasted.""" start="00:03:43.973" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""You might not want to change or run this code block again""" start="00:03:45.974" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""when something down there is changing.""" start="00:03:49.596" video="mainVideo-org-babel" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Caching""" start="00:03:51.901" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""So to counter that, you can actually add caching.""" start="00:03:51.901" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So if you add caching to any code block,""" start="00:03:54.568" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""that code block will only be executed again""" start="00:03:57.134" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""if that code has changed or""" start="00:03:59.801" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""the input variables have changed.""" start="00:04:02.400" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""But the other problem is that""" start="00:04:04.756" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you don't want caching to be enabled for a lot of cases""" start="00:04:06.337" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""where the code block is actually dependent on""" start="00:04:08.660" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""external state, like for example,""" start="00:04:10.841" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""some sort of randomness or time.""" start="00:04:12.723" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So caching also is, you know, kind of,""" start="00:04:15.025" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""it's, like, an important thing to use,""" start="00:04:17.434" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""but it's probably not giving you the complete answer.""" start="00:04:18.968" video="mainVideo-org-babel" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Computation dependencies""" start="00:04:21.760" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""So what we can instead do is basically figure out""" start="00:04:21.760" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""the whole computation dependencies here.""" start="00:04:25.974" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So let's say if I look at this buffer,""" start="00:04:28.555" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""here's how all the blocks are connected.""" start="00:04:31.276" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So as you can see the plot code block""" start="00:04:35.077" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""is dependent on c and then legendpg,""" start="00:04:37.657" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and they themselves are dependent on these other nodes.""" start="00:04:40.118" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So when I make a change in b, I only want b to run""" start="00:04:43.919" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then c and then plot. I don't want anything else to run.""" start="00:04:47.280" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So what I did was I wrote a small minor mode for Org Mode""" start="00:04:50.845" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which does exactly this.""" start="00:04:54.268" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So whenever you are in a code block""" start="00:04:55.369" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and you are making a change and then you save it,""" start="00:04:57.770" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""it will just follow the trail from that code block""" start="00:04:59.872" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""to every other descendant which is going to be impacted,""" start="00:05:01.914" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and it just runs all of them, and nothing else gets executed.""" start="00:05:05.356" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So to see it in action, I will just enable that mode.""" start="00:05:09.720" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Yeah, right. So now here, if I change this 113 to 112""" start="00:05:13.120" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and I save, this code, this variable gets changed.""" start="00:05:17.022" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""It's the same value because I did not update it again.""" start="00:05:21.244" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""And you can also see b also got changed""" start="00:05:23.745" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""because it's just following all the execution order and so on.""" start="00:05:25.720" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""The plot also got updated.""" start="00:05:29.668" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""We will be able to see more clearly""" start="00:05:31.728" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""once I change something more substantial.""" start="00:05:34.069" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So here's another variable.""" start="00:05:36.402" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So I added a small toggle button here,""" start="00:05:36.403" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which is again part of the minor mode.""" start="00:05:41.333" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So since this is nil, if I toggle it,""" start="00:05:43.469" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""it will become true. And this variable dictates whether""" start="00:05:45.210" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""the plot will have the legend or not.""" start="00:05:49.400" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So if I toggle it to be t, now it's t""" start="00:05:51.175" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and you can see that the plot has legend that's visible.""" start="00:05:54.458" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""If I toggle it back again to nil, the legend is gone.""" start="00:05:57.901" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""Now this is nice, this...""" start="00:06:03.140" video="mainVideo-org-babel" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Making this even better""" start="00:06:04.534" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""This is already pretty helpful for me""" start="00:06:04.534" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""but what we can do is we can make it even better.""" start="00:06:06.480" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So one of the nicer ideas""" start="00:06:10.180" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""from these reactive notebooks""" start="00:06:11.401" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""is this idea of having an infinite canvas""" start="00:06:13.016" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""where you don't look at the document model,""" start="00:06:16.079" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you look at the whole document""" start="00:06:19.023" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""as a canvas of multiple connected documents.""" start="00:06:20.624" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""One good thing that happens there is that""" start="00:06:25.009" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you can basically have a piece of code somewhere""" start="00:06:26.590" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then piece of code""" start="00:06:29.551" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""somewhere very different position in the document,""" start="00:06:30.411" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""but you can put them together in the canvas""" start="00:06:32.500" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and then see them side by side.""" start="00:06:34.733" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So here also, let's say""" start="00:06:36.934" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""if I want to just have this image shown up at the top,""" start="00:06:38.295" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""what I can do is like I can pop this out,""" start="00:06:41.997" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which opens a child frame, and then I can just go here.""" start="00:06:45.858" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""This child frame is showing the same image.""" start="00:06:49.939" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So there's no change. So if I toggle this variable here,""" start="00:06:52.461" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you can see that the image is updated.""" start="00:06:55.503" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""If I toggle it back to nil, the image, the legend is gone.""" start="00:06:58.424" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""And you can obviously, you know,""" start="00:07:02.200" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you can make a lot of things come up as child frames.""" start="00:07:03.368" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""This is the same image.""" start="00:07:08.691" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So even if you go down to the document,""" start="00:07:09.431" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""you will see the same image.""" start="00:07:11.292" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So yeah, this is what I have right now.""" start="00:07:13.811" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""I'm definitely looking forward to making it more useful,""" start="00:07:18.175" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""probably including more kinds of child frames,""" start="00:07:21.957" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""maybe like making the whole document an infinite canvas.""" start="00:07:25.600" video="mainVideo-org-babel" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:07:29.966" video="mainVideo-org-babel" id="subtitle"]]</div>[[!template text="""Alright, so that's the talk.""" start="00:07:29.966" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""If you're interested in the codebase,""" start="00:07:32.100" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""here's the homepage""" start="00:07:33.347" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""for the project [https://dev.lepisma.xyz/git/ob-rx].""" start="00:07:34.447" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So the next steps for me are basically""" start="00:07:35.547" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""making my workflow easier in matplotlib,""" start="00:07:37.567" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which is a Python-based library,""" start="00:07:40.648" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and d3.js, which is for JavaScript.""" start="00:07:42.588" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""For the JS thing, I might have to add""" start="00:07:45.349" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""the interactive JS child frames,""" start="00:07:47.889" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and I am also looking forward to building something""" start="00:07:49.640" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which can replicate the work""" start="00:07:51.830" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""of the Observable's infinite canvas,""" start="00:07:53.970" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""because that's something""" start="00:07:56.751" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""which I found really useful in my work with""" start="00:07:57.491" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""just JS visualizations.""" start="00:08:00.620" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""So yeah, happy to take questions on Etherpad""" start="00:08:02.340" video="mainVideo-org-babel" id="subtitle"]]
+[[!template text="""and thank you for your time.""" start="00:08:05.560" video="mainVideo-org-babel" id="subtitle"]]
+
+</div>
+
+Captioner: abhinav
+
+Questions or comments? Please e-mail [abhinav@lepisma.xyz](mailto:abhinav@lepisma.xyz?subject=Comment%20for%20EmacsConf%202023%20org-babel%3A%20Making%20Org-Babel%20reactive)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/org-babel-before.md b/2025/info/org-babel-before.md
new file mode 100644
index 00000000..5f41d74a
--- /dev/null
+++ b/2025/info/org-babel-before.md
@@ -0,0 +1,23 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 9-min talk ; Q&A: Etherpad
+Etherpad: <https://pad.emacsconf.org/2025-org-babel>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-org-babel"><source src="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-org-babel--making-orgbabel-reactive--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="mainVideo-org-babel" data="""
+00:01.120 What are reactive notebooks?
+00:49.042 Reactivity demo
+02:38.499 Org-Babel
+03:21.080 Running the whole buffer
+03:51.901 Caching
+04:21.760 Computation dependencies
+06:04.534 Making this even better
+07:29.966 Wrapping up
+
+"""]]<div></div>Duration: 08:08 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-org-babel">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--edited.vtt">Download --edited.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.opus">Download --main.opus (7.1MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-org-babel--making-orgbabel-reactive--abhinav-tushar--main.webm">Download --main.webm (17MB)</a></li><li><a href="https://youtu.be/1dWWi3xfmug">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/org-babel-nav.md b/2025/info/org-babel-nav.md
new file mode 100644
index 00000000..a0c351dd
--- /dev/null
+++ b/2025/info/org-babel-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/sat-open">Saturday opening remarks</a>
+Next by track: <a href="/2025/talks/reference">Emacs as a fully-fledged reference manager</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/private-ai-after.md b/2025/info/private-ai-after.md
new file mode 100644
index 00000000..760e20c9
--- /dev/null
+++ b/2025/info/private-ai-after.md
@@ -0,0 +1,877 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="private-ai-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""Hey, everybody. Welcome from frigid Omaha, Nebraska.""" start="00:00:00.000" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm just going to kick off my talk here,""" start="00:00:04.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and we'll see how it all goes. Thanks for attending.""" start="00:00:06.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So the slides will be available on my site, growthy.us,""" start="00:00:23.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""in the presentation section tonight or tomorrow.""" start="00:00:26.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This is a quick intro to one way to do private AI in Emacs.""" start="00:00:29.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There are a lot of other ways to do it.""" start="00:00:33.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This one is really just more or less the easiest way to do it.""" start="00:00:35.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a minimal viable product""" start="00:00:38.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to get you an idea of how to get started with it""" start="00:00:40.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and how to give it a spin.""" start="00:00:42.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Really hope some of you give it a shot""" start="00:00:43.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and learn something along the way.""" start="00:00:45.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So the overview of the talk.""" start="00:00:48.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""broke down these basic bullet points of why private AI,""" start="00:00:50.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what do I need to do private AI, Emacs and private AI,""" start="00:00:54.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""pieces for an AI Emacs solution,""" start="00:00:58.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a demo of a minimal viable product, and the summary.""" start="00:01:02.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Why private AI? This is pretty simple.""" start="00:01:08.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Just read the terms and conditions""" start="00:01:10.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for any AI system you're currently using.""" start="00:01:12.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you're using the free tiers, your queries,""" start="00:01:14.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""code uploaded information""" start="00:01:17.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""is being used to train the models.""" start="00:01:18.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""In some cases, you are giving the company""" start="00:01:20.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a perpetual license to your data.""" start="00:01:22.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You have no control over this,""" start="00:01:25.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""except for not using the engine.""" start="00:01:27.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And keep in mind, the terms""" start="00:01:29.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""are changing all the time on that,""" start="00:01:30.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and they're not normally changing for our benefit.""" start="00:01:32.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So that's not necessarily a good thing.""" start="00:01:34.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you're using the paid tiers,""" start="00:01:38.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you may be able to opt out of the data collection.""" start="00:01:40.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But keep in mind, this can change,""" start="00:01:43.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or they may start charging for that option.""" start="00:01:45.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Every AI company wants more and more data.""" start="00:01:48.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""They need more and more data to train their models.""" start="00:01:51.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It is just the way it is.""" start="00:01:53.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""They need more and more information""" start="00:01:56.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to get it more and more accurate to keep it up to date.""" start="00:01:57.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There's been a story about Stack Overflow.""" start="00:02:00.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It has like half the number of queries they had a year ago""" start="00:02:03.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because people are using AI.""" start="00:02:05.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The problem with that is now""" start="00:02:07.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""there's less data going to Stack Overflow""" start="00:02:08.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for the AI to get. vicious cycle,""" start="00:02:10.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""especially when you start looking at""" start="00:02:12.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""newer language like Ruby and stuff like that.""" start="00:02:14.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So it comes down to being an interesting time.""" start="00:02:16.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Another reason why to go private AI is your costs are going to vary.""" start="00:02:21.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Right now, these services are being heavily subsidized.""" start="00:02:24.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you're paying Claude $20 a month,""" start="00:02:27.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it is not costing Claude, those guys $20 a month""" start="00:02:29.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to host all the infrastructure""" start="00:02:32.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to build all these data centers.""" start="00:02:34.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""They are severely subsidizing that""" start="00:02:35.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""at a very much a loss right now.""" start="00:02:38.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""When they start charging the real costs plus a profit,""" start="00:02:41.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's going to change.""" start="00:02:43.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Right now, I use a bunch of different services.""" start="00:02:45.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've played with Grok and a bunch of other ones.""" start="00:02:48.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But Grok right now is like $30 a month""" start="00:02:50.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for a regular Super Grok.""" start="00:02:52.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""When they start charging the real cost of that,""" start="00:02:54.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's going to go from $30 to something a great deal more,""" start="00:02:56.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""perhaps, I think, $100 or $200""" start="00:02:59.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or whatever really turns out to be the cost""" start="00:03:02.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""when you figure everything into it.""" start="00:03:04.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""When you start adding that cost into that,""" start="00:03:06.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a lot of people are using public AI right now""" start="00:03:07.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""are going to have no option but to move to private AI""" start="00:03:10.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or give up on AI overall.""" start="00:03:11.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""What do you need to be able to do private AI?""" start="00:03:16.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you're going to run your own AI,""" start="00:03:18.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you're going to need a system with either some cores,""" start="00:03:21.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a graphics processor unit,""" start="00:03:23.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or a neural processing unit, a GPU or an NPU.""" start="00:03:25.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I currently have four systems""" start="00:03:28.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm experimenting with and playing around with on a daily basis.""" start="00:03:29.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I have a System76 Pangolin AMD Ryzen 7 78040U""" start="00:03:32.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with a Radeon 7080M integrated graphics card.""" start="00:03:37.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's got 32 gigs of RAM.""" start="00:03:41.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a beautiful piece of hardware. I really do like it.""" start="00:03:42.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I have my main workstation,""" start="00:03:45.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's an HP Z620 with dual Intel Xeons""" start="00:03:46.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with four NVIDIA K2200 graphics cards in it.""" start="00:03:50.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Why the four NVIDIA K2200 graphics card on it?""" start="00:03:53.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Because I could buy four of them on eBay for $100""" start="00:03:56.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and it was still supported by the NVIDIA drivers for Debian.""" start="00:03:59.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So that's why that is. A MacBook Air with an M1 processor,""" start="00:04:02.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a very nice piece of kit I picked up a couple years ago,""" start="00:04:08.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""very cheap, but it runs AI surprisingly well,""" start="00:04:10.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and an Acer Aspire 1 with an AMD Ryzen 5700H in it.""" start="00:04:14.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This was my old laptop. It was a sturdy beast.""" start="00:04:18.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It was able to do enough AI to do demos and stuff,""" start="00:04:22.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and I liked it quite a bit for that.""" start="00:04:24.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm using the Pangolin for this demonstration""" start="00:04:25.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because it's just better.""" start="00:04:28.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Apple's M4 chip has 38 teraflops of MPU performance.""" start="00:04:30.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The Microsoft co-pilots are now requiring""" start="00:04:37.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""45 teraflops of MPU""" start="00:04:40.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to be able to have the co-pilot badge on it.""" start="00:04:41.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And Raspberry Pi's new AI top is about 18 teraflops""" start="00:04:43.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and is $70 on top of the cost of Raspberry Pi 5.""" start="00:04:48.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Keep in mind Raspberry recently""" start="00:04:51.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""raised the cost of their Pi 5s because of RAM pricing,""" start="00:04:56.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which is going to be affecting""" start="00:04:59.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a lot of these types of solutions in the near future.""" start="00:05:00.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But there's going to be a lot of""" start="00:05:02.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""local power available in the future.""" start="00:05:05.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's what it really comes down to.""" start="00:05:06.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""A lot of people are going to have PCs on their desks.""" start="00:05:08.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""They're going to run a decent private AI""" start="00:05:11.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""without much issue. So for Emacs and private AI,""" start="00:05:13.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""there's a couple popular solutions.""" start="00:05:18.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Gptel, which is the one we're going to talk about.""" start="00:05:20.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a simple interface. It's a minimal interface.""" start="00:05:22.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It integrates easily into your workflow.""" start="00:05:24.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's just, quite honestly, chef's kiss,""" start="00:05:26.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""just a beautifully well-done piece of software.""" start="00:05:29.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""OllamaBuddy has more features,""" start="00:05:31.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a menu interface, has quick access""" start="00:05:33.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for things like code refactoring,""" start="00:05:36.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""text-free formatting, et cetera.""" start="00:05:37.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This is the one that you spend a little more time with,""" start="00:05:38.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but you also get a little bit more back from it.""" start="00:05:41.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Elama is another one, has some really good features to it,""" start="00:05:43.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""more different capabilities,""" start="00:05:49.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it's a different set of rules and capabilities to it.""" start="00:05:51.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Itermac, which is programming with your AI and Emacs.""" start="00:05:54.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The closest thing I can come up""" start="00:05:59.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to comparing this to is Cursor, except it's an Emacs.""" start="00:06:01.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's really quite well done.""" start="00:06:04.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""These are all really quite well done.""" start="00:06:05.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There's a bunch of other projects out there.""" start="00:06:07.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you go out to GitHub, type Emacs AI,""" start="00:06:08.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you'll find a lot of different options.""" start="00:06:10.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So what is a minimal viable product that can be done?""" start="00:06:13.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""A minimal viable product to show what an AI Emacs solution is""" start="00:06:18.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""can be done with only needing two pieces of software.""" start="00:06:23.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Llamafile, this is an amazing piece of software.""" start="00:06:27.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This is a whole LLM contained in one file.""" start="00:06:31.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And the same file runs on Mac OS X,""" start="00:06:32.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Linux, Windows, and the BSDs.""" start="00:06:36.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a wonderful piece of kit""" start="00:06:39.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""based on these people who created""" start="00:06:42.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""this thing called Cosmopolitan""" start="00:06:44.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that lets you create and execute""" start="00:06:45.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""while it runs on a bunch of different systems.""" start="00:06:46.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And Gptel, which is an easy plug-in for Emacs,""" start="00:06:48.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which we talked about in the last slide a bit.""" start="00:06:51.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So setting up the LLM, you have to just go out""" start="00:06:54.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and just hit the a page for it""" start="00:07:00.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and go out and do a wget of it.""" start="00:07:01.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's all it takes there.""" start="00:07:05.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Chmodding it so you can actually execute the executable.""" start="00:07:07.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And then just go ahead and actually running it.""" start="00:07:10.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And let's go ahead and do that.""" start="00:07:12.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've already downloaded it because I don't want to wait.""" start="00:07:16.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And let's just take a look at it.""" start="00:07:18.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've actually downloaded several of them,""" start="00:07:21.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but let's go ahead and just run lava 3.2b""" start="00:07:22.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with the 3 billion instructions. And that's it firing up.""" start="00:07:25.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And it is nice enough to actually be listening in port 8080,""" start="00:07:31.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which we'll need in a minute.""" start="00:07:33.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So once you do that, you have to install gptel and emacs.""" start="00:07:35.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's as simple as firing up emacs,""" start="00:07:43.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""doing the meta x install package,""" start="00:07:45.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and then just typing gptel""" start="00:07:48.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you have your repository set up right,""" start="00:07:49.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which hopefully you do.""" start="00:07:51.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And then you just go ahead and have it.""" start="00:07:52.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You also have to set up a config file.""" start="00:07:54.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Here's my example config file as it currently set up,""" start="00:07:58.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""requiring ensuring Gptel is loaded,""" start="00:08:01.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""defining the Llamafile backend.""" start="00:08:04.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can put multiple backends into it,""" start="00:08:05.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I just have the one defined on this example.""" start="00:08:07.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But it's pretty straightforward.""" start="00:08:09.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Llama local file, name for it, stream, protocol HTTP.""" start="00:08:12.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you have HTTPS set up, that's obviously preferable,""" start="00:08:16.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but a lot of people don't for their home labs.""" start="00:08:20.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Host is just 127.0.0.1 port 8080.""" start="00:08:22.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Keep in mind, some of the AIs run on a different port,""" start="00:08:26.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so you may be 8081""" start="00:08:30.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you're running OpenWebView at the same time. The key,""" start="00:08:31.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""we don't need an API key because it's a local server.""" start="00:08:34.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And the models just, uh, we can put multiple models""" start="00:08:37.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""on there if we want to.""" start="00:08:40.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So if we create one with additional stuff""" start="00:08:41.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or like rag and stuff like that,""" start="00:08:43.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""we can actually name those models by their domain,""" start="00:08:45.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which is really kind of cool.""" start="00:08:47.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But, uh, that's all that takes.""" start="00:08:48.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So let's go ahead and go to a quick test of it.""" start="00:08:52.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Oops. Alt-X, gptel. And we're going to just choose""" start="00:09:03.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""the default buffer to make things easier.""" start="00:09:11.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Going to resize it up a bit.""" start="00:09:12.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And usually the go-to question I go to is, who was David Bowie?""" start="00:09:15.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This one is actually a question""" start="00:09:19.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that's turned out to be really good""" start="00:09:24.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for figuring out whether or not AI is complete.""" start="00:09:26.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This is one that some engines do well on, other ones don't.""" start="00:09:28.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And we can just do, we can either do""" start="00:09:31.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""the alt X and send the gptel-send,""" start="00:09:33.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or we can just do control C and hit enter.""" start="00:09:36.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""We'll just do control C and enter.""" start="00:09:37.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And now it's going ahead and hitting our local AI system""" start="00:09:39.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""running on port 8080. And that looks pretty good,""" start="00:09:43.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but let's go ahead and say, hey, it's set to terse mode right now.""" start="00:09:46.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Please expand upon this. And there we go.""" start="00:09:50.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""We're getting a full description""" start="00:10:03.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""of the majority of, uh, about David Bowie's life""" start="00:10:05.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and other information about him.""" start="00:10:08.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So very, very happy with that.""" start="00:10:10.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""One thing to keep in mind is you look at things""" start="00:10:21.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""when you're looking for hallucinations,""" start="00:10:23.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""how accurate AI is, how it's compressed""" start="00:10:24.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""is it will tend to screw up on things like""" start="00:10:26.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""how many children he had and stuff like that.""" start="00:10:29.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Let me see if it gets to that real quick.""" start="00:10:30.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Is it not actually on this one?""" start="00:10:32.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Alright, so that's the first question I always ask one.""" start="00:10:39.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The next one is what are sea monkeys?""" start="00:10:42.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It gives you an idea of the breadth of the system.""" start="00:10:44.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's querying right now. Pulls it back correctly. Yes.""" start="00:10:48.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And it's smart enough to actually detect David Bowie""" start="00:11:10.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""even referenced see monkeys in the song sea of love,""" start="00:11:12.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which came at hit single.""" start="00:11:15.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So it's actually keeping the context alive""" start="00:11:16.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and that which is very cool feature.""" start="00:11:18.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I did not see that coming.""" start="00:11:20.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Here's one that some people say is a really good one""" start="00:11:21.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to ask ours in strawberry.""" start="00:11:24.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""All right, now she's going off the reservation.""" start="00:11:25.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""She's going in a different direction.""" start="00:11:46.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Let me go ahead and reopen that again,""" start="00:11:48.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because it's went down a bad hole there for a second.""" start="00:11:49.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Let me ask it to do write hello world in Emacs list.""" start="00:11:52.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yep, that works. So the point being here,""" start="00:11:58.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that was like two minutes of setup.""" start="00:12:10.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And now we have a small AI embedded inside the system.""" start="00:12:14.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So that gives you an idea just how easy it can be.""" start="00:12:18.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And it's just running locally on the system.""" start="00:12:20.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""We also have the default system here as well.""" start="00:12:22.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So not that bad.""" start="00:12:25.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's a basic solution, that's a basic setup""" start="00:12:32.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that will get you to the point where you can go like,""" start="00:12:35.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's a party trick, but it's a very cool party trick.""" start="00:12:37.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The way that Gptel works is it puts it into buffers,""" start="00:12:39.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it doesn't interfere with your flow that much,""" start="00:12:42.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's just an additional window you can pop open""" start="00:12:45.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to ask questions and get information for,""" start="00:12:47.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""dump code into it and have it refactored.""" start="00:12:49.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Gptel has a lot of additional options""" start="00:12:51.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for things that are really cool for that.""" start="00:12:53.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But if you want a better solution,""" start="00:12:55.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I recommend Ollama or LM Studio.""" start="00:12:57.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""They're both more capable than llama file.""" start="00:12:59.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""They can accept a lot of different models.""" start="00:13:01.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can do things like RAG.""" start="00:13:03.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can do loading of things onto the GPU more explicitly.""" start="00:13:05.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It can speed stuff up.""" start="00:13:09.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""One of the things about the retrieval augmentation is""" start="00:13:10.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it will let you put your data into the system""" start="00:13:13.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so you can start uploading your code, your information,""" start="00:13:15.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and actually being able to do analysis of it.""" start="00:13:17.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""OpenWebUI provides more capabilities.""" start="00:13:20.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It provides an interface that's similar""" start="00:13:23.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to what you're used to seeing""" start="00:13:24.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for chat, GPT, and the other systems.""" start="00:13:25.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's really quite well done.""" start="00:13:28.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And once again, gptel, I have to mention that""" start="00:13:29.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because that's the one I really kind of like.""" start="00:13:32.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And OlamaBuddy is also another really nice one.""" start="00:13:34.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So what about the licensing of these models?""" start="00:13:36.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Since I'm going out pulling down""" start="00:13:41.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a model and doing this stuff.""" start="00:13:42.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Let's take a look at a couple of highlights""" start="00:13:43.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""from the MetaLlama 3 community license scale.""" start="00:13:46.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If your service exceeds 700 million monthly users,""" start="00:13:49.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you need additional licensing.""" start="00:13:52.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Probably not going to be a problem for most of us.""" start="00:13:54.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There's a competition restriction.""" start="00:13:56.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can't use this model to enhance competing models.""" start="00:13:58.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And there's some limitations on using the Meta trademarks.""" start="00:14:00.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Not that big a deal.""" start="00:14:04.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And the other ones are it's a permissive one""" start="00:14:05.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""designed to encourage innovation,""" start="00:14:09.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""open development, commercial use is allowed,""" start="00:14:10.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but there are some restrictions on it.""" start="00:14:13.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, you can modify the model,""" start="00:14:15.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but you have to rely on the license terms.""" start="00:14:17.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And you can distribute the model with derivatives.""" start="00:14:20.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And there are some very cool ones out there.""" start="00:14:22.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There's people who've done things""" start="00:14:24.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to try and make the llama bee less, what's the phrase,""" start="00:14:25.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""ethical if you're doing penetration testing research""" start="00:14:29.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and stuff like that.""" start="00:14:31.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It has some very nice value there.""" start="00:14:32.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Keep in mind licenses also vary""" start="00:14:34.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""depending on the model you're using.""" start="00:14:37.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Mistral AI has the non-production license.""" start="00:14:39.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's designed to keep it to research and development.""" start="00:14:42.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can't use it commercially.""" start="00:14:45.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So it's designed to clearly delineate""" start="00:14:46.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""between research and development""" start="00:14:50.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and somebody trying to actually build""" start="00:14:52.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""something on top of it.""" start="00:14:54.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And another question I get asked is,""" start="00:14:55.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""are there open source data model options?""" start="00:14:57.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, but most of them are small or specialized currently.""" start="00:14:59.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""MoMo is a whole family of them,""" start="00:15:02.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but there tend to be more specialized,""" start="00:15:05.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it's very cool to see where it's going.""" start="00:15:07.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And it's another thing that's just going forward.""" start="00:15:09.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's under the MIT license.""" start="00:15:11.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Some things to know to help you""" start="00:15:13.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""have a better experience with this.""" start="00:15:15.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Get a Llama and OpenWebUI working by themselves,""" start="00:15:17.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""then set up your config file.""" start="00:15:21.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I was fighting both at the same time,""" start="00:15:22.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and it turned out I had a problem with my LLAMA.""" start="00:15:24.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I had a conflict, so that was what my problem is.""" start="00:15:26.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Llamafile, gptel is a great way to start experimenting""" start="00:15:28.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""just to get you an idea of how it works""" start="00:15:32.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and figure out how the interfaces work. Tremendous.""" start="00:15:34.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""RAG loading documents into it is really easy with open web UI.""" start="00:15:36.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can create models, you can put things like""" start="00:15:40.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""help desk developers and stuff like that, breaking it out.""" start="00:15:43.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The Hacker News has a how to build a $300 AI computer.""" start="00:15:46.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This is for March 2024,""" start="00:15:51.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it still has a lot of great information""" start="00:15:52.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""on how to benchmark the environments,""" start="00:15:55.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what some values are like the Ryzen 5700U""" start="00:15:56.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""inside my Acer Aspire,""" start="00:16:01.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that's where I got the idea doing that.""" start="00:16:02.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Make sure you do the RockM stuff correctly""" start="00:16:04.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to get the GUI extensions. But it's just really good stuff.""" start="00:16:06.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You don't need a great GPU or CPU to get started.""" start="00:16:09.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Smaller models like Tiny Llama""" start="00:16:13.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""can run on very small systems.""" start="00:16:14.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It gets you the ability to start playing with it""" start="00:16:16.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and start experimenting and figure out if that's for you""" start="00:16:18.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and to move forward with it.""" start="00:16:21.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The AMD Ryzen AI Max 395 plus is a mini PC""" start="00:16:23.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""makes it really nice dedicated host.""" start="00:16:29.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You used to be able to buy these for about $1200 now""" start="00:16:31.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with the RAM price increase,""" start="00:16:34.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you want to get 120 gig when you're pushing two brands so.""" start="00:16:35.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It gets a little tighter.""" start="00:16:38.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Macs work remarkably well with AI.""" start="00:16:40.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""My MacBook Air was one of my go-tos for a while,""" start="00:16:44.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but once I started doing anything AI,""" start="00:16:47.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I had a five-minute window""" start="00:16:49.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""before the thermal throttling became an issue.""" start="00:16:50.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Keep in mind that's a MacBook Air,""" start="00:16:52.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so it doesn't have the greatest ventilation.""" start="00:16:54.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you get the MacBook Pros and stuff,""" start="00:16:56.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""they tend to have more ventilation,""" start="00:16:58.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but still you're going to be pushing against that.""" start="00:17:00.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So Mac Minis and the Mac Ultras and stuff like that""" start="00:17:02.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""tend to work really well for that.""" start="00:17:04.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Alex Ziskin on YouTube has a channel.""" start="00:17:06.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""He does a lot of AI performance benchmarking,""" start="00:17:09.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""like I load a 70 billion parameter model""" start="00:17:11.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""on this mini PC and stuff like that.""" start="00:17:14.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a lot of fun and interesting stuff there.""" start="00:17:16.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And it's influencing my decision""" start="00:17:19.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to buy my next AI style PC.""" start="00:17:21.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Small domain specific LLMs are happening.""" start="00:17:22.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""An LLM that has all your code and information,""" start="00:17:27.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it sounds like a really cool idea.""" start="00:17:29.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It gives you capabilities to start training stuff""" start="00:17:31.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that you couldn't do with like the big ones.""" start="00:17:34.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Even with in terms of fine tuning and stuff,""" start="00:17:35.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's remarkable to see where that space is coming along""" start="00:17:38.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""in the next year or so.""" start="00:17:40.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Hugging Face Co has pointers to tons of AI models.""" start="00:17:41.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You'll find the one that works for you, hopefully there.""" start="00:17:46.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you're doing cybersecurity,""" start="00:17:49.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""there's a whole bunch out there for that,""" start="00:17:50.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that have certain training on it, information.""" start="00:17:52.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's really good.""" start="00:17:54.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""One last thing to keep in mind is hallucinations are real.""" start="00:17:56.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You will get BS back from the AI occasionally,""" start="00:18:00.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so do validate everything you get from it.""" start="00:18:02.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Don't be using it for court cases like some people have""" start="00:18:05.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and run into those problems. So, That is my talk.""" start="00:18:08.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""What I would like you to get out of that is,""" start="00:18:14.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you haven't tried it, give GPTEL and LlamaFile a shot.""" start="00:18:17.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Fire up a little small AI instance,""" start="00:18:21.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""play around with a little bit inside your Emacs,""" start="00:18:23.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and see if it makes your life better. Hopefully it will.""" start="00:18:27.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And I really hope you guys""" start="00:18:30.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""learned something from this talk. And thanks for listening.""" start="00:18:32.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And the links are at the end of the talk, if you have any questions.""" start="00:18:34.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Let me see if we got anything you want, Pat. You do.""" start="00:18:38.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You've got a few questions.""" start="00:18:42.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Hey, this is Corwin. Thank you so much. Thank you, Aaron.""" start="00:18:43.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""What an awesome talk this was, actually.""" start="00:18:48.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you don't have a camera,""" start="00:18:50.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I can get away with not having one too.""" start="00:18:52.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've got, I'll turn the camera on.""" start="00:18:54.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay. All right. I'll turn mine back on. Here I come.""" start="00:18:56.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, so there are a few questions,""" start="00:19:01.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but first let me say thank you""" start="00:19:03.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for a really captivating talk.""" start="00:19:04.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I think a lot of people will be empowered from this""" start="00:19:06.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to try to do more with less, especially locally.""" start="00:19:10.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""concerned about the data center footprint,""" start="00:19:15.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""environmentally concerned""" start="00:19:20.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""about the footprint of LLM inside data centers.""" start="00:19:23.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So just thinking about how we can""" start="00:19:26.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""put infrastructure we have at home to use""" start="00:19:28.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and get more done with less.""" start="00:19:32.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, the data center impact's interesting""" start="00:19:34.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because there was a study a while ago.""" start="00:19:37.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Someone said every time you do a Gemini query,""" start="00:19:39.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's like boiling a cup of water.""" start="00:19:42.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, I've heard that one too. So do you want to, you know,""" start="00:19:45.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I don't know how much direction you want.""" start="00:19:48.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'd be very happy to read out the questions for you.""" start="00:19:51.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, that would be great.""" start="00:19:53.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm having trouble getting to that tab.""" start="00:19:55.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay, I'm there, so I'll put it into our chat too,""" start="00:19:57.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so you can follow along if you'd like.""" start="00:20:02.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The first question was, why is the David Bowie question""" start="00:20:07.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a good one to start with?""" start="00:20:11.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Does it have interesting failure conditions""" start="00:20:12.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or what made you choose that?""" start="00:20:14.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""First off, huge fan of David Bowie.""" start="00:20:17.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But I came down to it really taught me a few things""" start="00:20:21.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""about how old the models work""" start="00:20:24.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""in terms of things like how many kids he had,""" start="00:20:26.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because deep seek, which is a very popular Chinese model""" start="00:20:28.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that a lot of people are using now,""" start="00:20:31.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""misidentifies him having three daughters,""" start="00:20:33.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and he has like one son and one, one, I think,""" start="00:20:35.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""two sons and a daughter or something like that.""" start="00:20:38.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so there's differences on that and it just goes over""" start="00:20:40.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""there's a whole lot of stuff""" start="00:20:43.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because his story spans like 60 years""" start="00:20:45.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so it gives a good good feedback""" start="00:20:47.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that's the real main reason I asked that question""" start="00:20:49.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because I just needed one that sea monkeys I just picked""" start="00:20:51.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because it was obscure and just always have right""" start="00:20:53.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I used to have it right hello world and forth""" start="00:20:56.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because I thought was an interesting one as well so""" start="00:20:58.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's just picking random ones like that.""" start="00:21:01.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""One question asked, sorry, a lot of models is,""" start="00:21:03.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what is the closest star to the Earth?""" start="00:21:06.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Because most of them will say Alpha Centauri""" start="00:21:09.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""or Proxima Centauri and not the sun.""" start="00:21:12.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And I have a whole nother talk""" start="00:21:13.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""where I just argue with the LLM""" start="00:21:15.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""trying to say, hey, the sun is a star.""" start="00:21:17.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And he just wouldn't accept it, so. What?""" start="00:21:20.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Oh, I can hear that.""" start="00:21:26.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So what specific tasks do you like to use your local AI?""" start="00:21:28.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I like to load a lot of my code into""" start="00:21:34.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and actually have it do analysis of it.""" start="00:21:37.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I was actually going through some code""" start="00:21:39.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I have for some pen testing, and I was having it modified""" start="00:21:42.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to update it for the newer version,""" start="00:21:45.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because I hate to say this,""" start="00:21:47.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it was written for Python 2,""" start="00:21:48.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and I needed to update it for Python 3.""" start="00:21:49.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And the 2 to 3 tool did not do all of it,""" start="00:21:51.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but the actual tool was able to do the refactoring.""" start="00:21:53.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's part of my laziness.""" start="00:21:56.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But I use that for anything I don't want to hit the web.""" start="00:21:58.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And that's a lot of stuff when you start thinking about""" start="00:22:01.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you're doing cyber security researching.""" start="00:22:03.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and you have your white papers""" start="00:22:04.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and stuff like that and stuff in there.""" start="00:22:06.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've got a lot of that loaded into RAG""" start="00:22:10.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""in one model on my OpenWebUI system.""" start="00:22:13.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Neat. Have you used have you used""" start="00:22:15.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""any small domain specific LLMs? What kind of tasks?""" start="00:22:21.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If so, what kind of tasks that they specialize in?""" start="00:22:25.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And you know, how?""" start="00:22:30.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Not to be honest, but there are some out there like once again,""" start="00:22:32.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for cybersecurity and stuff like that,""" start="00:22:34.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that I really need to dig into that's on my to do list.""" start="00:22:36.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've got a couple weeks off at the end of the year.""" start="00:22:39.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And that's a big part of my plan for that.""" start="00:22:41.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Are the various models updated pretty regularly?""" start="00:22:43.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Can you add your own data to the pre-built models?""" start="00:22:49.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yes. The models are updated pretty reasonably.""" start="00:22:52.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can add data to a model in a couple of different ways.""" start="00:22:56.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can do something called fine-tuning,""" start="00:22:59.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which requires a really nice GPU and a lot of CPU time.""" start="00:23:01.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Probably not going to do that.""" start="00:23:03.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You can do retrieval augmentation generation,""" start="00:23:05.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which is you load your data on top of the system""" start="00:23:07.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and puts inside a database""" start="00:23:09.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and you can actually scan that and stuff.""" start="00:23:11.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I have another talk where I go through""" start="00:23:12.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and I start asking questions about,""" start="00:23:14.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I load the talk into the engine""" start="00:23:16.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and I ask questions against that.""" start="00:23:18.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I would have one more time would have done that""" start="00:23:20.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it comes down to how many That's that's rag rag""" start="00:23:22.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""is pretty easy to do through open web UI or LM studio""" start="00:23:26.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a great way you just like point a folder""" start="00:23:29.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""point it to a folder and it just sucks all that state into""" start="00:23:31.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and it'll hit that data first""" start="00:23:34.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you have like helpdesk and stuff and""" start="00:23:35.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The other options there's vector databases,""" start="00:23:36.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which is like if you use PostgreSQL.""" start="00:23:39.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It has a PG vector I can do a lot of that stuff.""" start="00:23:41.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've not dug into that yet,""" start="00:23:43.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but that is also on that to-do list""" start="00:23:44.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've got a lot of stuff planned for Cool.""" start="00:23:46.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So what are your experience with rags?""" start="00:23:48.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I don't even know what that means.""" start="00:23:51.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Do you know what that means?""" start="00:23:54.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Do you remember this question again?""" start="00:23:57.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""What is your experience with RAGs? RAGs is great.""" start="00:23:59.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's Retrieval Augmentation Generation.""" start="00:24:03.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That loads your data first, and it hits yours,""" start="00:24:07.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and it'll actually cite it and stuff.""" start="00:24:09.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There's a guy who wrote a RAG in 100 lines of Python,""" start="00:24:11.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and it's an impressive piece of software.""" start="00:24:14.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I think if you hit one of my site,""" start="00:24:16.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've got a private AI talk where I actually refer to that.""" start="00:24:18.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But retrieval augmentation, it's easy, it's fast,""" start="00:24:22.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it puts your data into the system,""" start="00:24:25.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, start with that and go then iterate on top of that.""" start="00:24:26.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's one of the great things about AI,""" start="00:24:31.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""especially private AI,""" start="00:24:32.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""is you can do whatever you want to with it""" start="00:24:33.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and build up with it as you get more experience.""" start="00:24:37.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Any thoughts on running things""" start="00:24:43.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""on AWS, DigitalOcean, and so on?""" start="00:24:44.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""AWS is not bad.""" start="00:24:49.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The DigitalOcean, they have some of their GPUs.""" start="00:24:50.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I still don't like having the data""" start="00:24:52.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""leave my house, to be honest, or at work,""" start="00:24:54.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because I tend to do some stuff""" start="00:24:57.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that I don't want it even hitting that situation.""" start="00:24:59.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But they have pretty good stuff.""" start="00:25:01.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Another one to consider is Oracle Cloud.""" start="00:25:03.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Oracle has their AI infrastructure that's really well done.""" start="00:25:05.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But I mean, once again, then you start looking at potential""" start="00:25:09.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""is saying your data is private,""" start="00:25:12.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I don't necessarily trust it.""" start="00:25:13.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But they do have good stuff, both DigitalOcean, AWS,""" start="00:25:14.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Oracle Cloud has the free service, which isn't too bad,""" start="00:25:17.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""usually a certain number of stuff.""" start="00:25:20.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And Google's also has it,""" start="00:25:21.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I still tend to keep more stuff on local PCs,""" start="00:25:23.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because I just paranoid that way. Gotcha.""" start="00:25:26.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""What has your experience been using AI?""" start="00:25:33.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Do you want to get into that, using AI for cybersecurity?""" start="00:25:35.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You might have already touched on this.""" start="00:25:40.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, really, for cybersecurity,""" start="00:25:42.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what I've had to do is I've dumped logs""" start="00:25:44.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to have a due correlation.""" start="00:25:46.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Keep in mind, the size of that LLAMA file we were using""" start="00:25:47.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for figuring out David Bowie, writing the hello world,""" start="00:25:49.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""all that stuff, is like six gig.""" start="00:25:52.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""How does it get the entire world in six gig?""" start="00:25:54.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I still haven't figured that out in terms of quantization.""" start="00:25:56.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So I'm really interested in seeing the ability""" start="00:25:59.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to take all this stuff out of all my logs,""" start="00:26:02.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""dump it all in there,""" start="00:26:05.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and actually be able to do intelligent queries against that.""" start="00:26:06.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Microsoft has a project called Security Copilot,""" start="00:26:08.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which is trying to do that in the Cloud.""" start="00:26:10.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But I want to work on something to do that more locally""" start="00:26:12.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and be able to actually drive this stuff over that.""" start="00:26:15.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's one also on the long-term goals.""" start="00:26:19.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So we got any other questions or?""" start="00:26:21.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Those are the questions that I see.""" start="00:26:26.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I want to just read out a couple of comments""" start="00:26:29.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that I saw in IRC though.""" start="00:26:31.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Jay Rutabaga says, it went very well""" start="00:26:33.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""from an audience perspective.""" start="00:26:36.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And G Gundam says, respect your commitment to privacy.""" start="00:26:39.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And then somebody is telling us""" start="00:26:43.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""we might have skipped a question.""" start="00:26:45.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So I'm just going to run back to my list.""" start="00:26:46.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Updated regularly experience.""" start="00:26:50.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I just didn't type in the answer here's""" start="00:26:52.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and there's a couple more questions coming in so""" start="00:26:57.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Is there a disparity where you go to paid models""" start="00:26:59.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because they are better and what problems?""" start="00:27:04.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You know what would drive you to? That's a good question.""" start="00:27:08.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Paid models, I don't mind them. I think they're good,""" start="00:27:14.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I don't think they're actually economically sustainable""" start="00:27:17.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""under their current system.""" start="00:27:21.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Because right now, if you're paying""" start="00:27:22.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""20 bucks a month for Copilot and that goes up to 200 bucks,""" start="00:27:24.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm not going to be as likely to use it.""" start="00:27:26.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You know what I mean?""" start="00:27:28.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But it does do some things in a way that I did not expect.""" start="00:27:29.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""For example, Grok was refactoring""" start="00:27:33.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""some of my code in the comments and dropped an F-bomb.""" start="00:27:35.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which I did not see coming,""" start="00:27:38.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but the other code before""" start="00:27:39.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that I had gotten off GitHub""" start="00:27:41.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""had F bombs in it.""" start="00:27:43.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So it was just emulating the style,""" start="00:27:44.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but would that be something""" start="00:27:45.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'd want to turn in a pull request? I don't know.""" start="00:27:47.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But, uh, there's, there's a lot of money""" start="00:27:49.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""going into these AIs and stuff,""" start="00:27:52.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but in terms of the ability to get a decent one,""" start="00:27:53.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""like the llama, llama three, two,""" start="00:27:56.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and load your data into it, you can be pretty competitive.""" start="00:27:57.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You're not going to get all the benefits,""" start="00:28:01.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but you have more control over it.""" start="00:28:04.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So it's, it's a, this and that it's a,""" start="00:28:07.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's a balancing act.""" start="00:28:11.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay, and I think I see a couple more questions coming in.""" start="00:28:13.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""What is the largest parameter size for local models""" start="00:28:15.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that you've been able to successfully run locally""" start="00:28:19.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and do run into issues with limited context window size?""" start="00:28:22.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The top eight models will tend to have a larger ceiling.""" start="00:28:26.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yes, yes, yes, yes, yes.""" start="00:28:29.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""By default, the context size is I think 1024.""" start="00:28:32.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But I've upped it to 8192 on the on this box, the Pangolin""" start="00:28:37.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because it seems to be some reason""" start="00:28:44.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's just a very working quite well.""" start="00:28:46.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But the largest ones I've loaded have been in""" start="00:28:49.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""the have not been that huge.""" start="00:28:52.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've loaded this the last biggest one I've done.""" start="00:28:54.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's the reason why I'm planning""" start="00:28:55.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""on breaking down and buying a Ryzen.""" start="00:28:57.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Actually, I'm going to buy""" start="00:29:01.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""an Intel i285H with 96 gig of RAM.""" start="00:29:03.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Then I should be able to load""" start="00:29:06.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""a 70 billion parameter model in that. How fast will it run?""" start="00:29:08.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's going to run slow as dog,""" start="00:29:12.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it's going to be cool to be able to do it.""" start="00:29:13.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's an AI bragging rights thing,""" start="00:29:15.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I mostly stick with the smaller size models""" start="00:29:17.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and the ones that are more quantitized""" start="00:29:20.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because it just tends to work better for me.""" start="00:29:22.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""We've still got over 10 minutes before we're cutting away,""" start="00:29:26.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I'm just anticipating""" start="00:29:29.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that we're going to be going strong at the 10 minute mark.""" start="00:29:30.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So I'm just, just letting, you know,""" start="00:29:32.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""we can go as long as we like here at a certain point.""" start="00:29:34.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I may have to jump away and check in with the next speaker,""" start="00:29:37.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but we'll post the entirety of this,""" start="00:29:41.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""even if we aren't able to stay with it all.""" start="00:29:44.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay. And we've got 10 minutes""" start="00:29:47.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""where we're still going to stay live.""" start="00:29:49.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So next question coming in, I see, are there free as in freedom,""" start="00:29:52.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""free as in FSF issues with the data?""" start="00:30:00.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yes, where's the data coming from is a huge question with AI.""" start="00:30:05.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's astonishing you can ask questions""" start="00:30:11.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to models that you don't know where it's coming from.""" start="00:30:13.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That is gonna be one of the big issues long-term.""" start="00:30:16.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There are people who are working""" start="00:30:19.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""on trying to figure out that stuff,""" start="00:30:21.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it's, I mean, if you look at, God,""" start="00:30:22.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I can't remember who it was.""" start="00:30:25.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Somebody was actually out torrenting books""" start="00:30:27.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""just to be able to build into their AI system.""" start="00:30:28.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I think it might've been Meta.""" start="00:30:30.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So there's a lot of that going on.""" start="00:30:32.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The open source of the stuff is going to be tough.""" start="00:30:34.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There's going to be there's some models""" start="00:30:38.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""like the mobile guys have got their own license,""" start="00:30:39.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but where they're getting their data from,""" start="00:30:41.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm not sure on so that that's a huge question.""" start="00:30:42.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That's a that's a talk in itself.""" start="00:30:45.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But yeah, but you if you train on your RAG and your data,""" start="00:30:47.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you know what it's come, you know,""" start="00:30:51.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you have a license that""" start="00:30:53.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but the other stuff is just""" start="00:30:54.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""more lines of supplement""" start="00:30:55.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you're using a smaller model,""" start="00:30:56.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but the comment online, I see a couple of them.""" start="00:31:01.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'll read them out in order here. Really interesting stuff.""" start="00:31:05.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Thank you for your talk. Given that large AI companies""" start="00:31:08.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""are openly stealing intellectual property and copyright""" start="00:31:11.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and therefore eroding the authority of such laws""" start="00:31:14.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and maybe obscuring the truth itself,""" start="00:31:18.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""can you see a future where IP and copyright flaw become untenable?""" start="00:31:21.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I think that's a great question.""" start="00:31:26.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm not a lawyer, but it is really getting complicated.""" start="00:31:29.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It is getting to the point, I asked a question from,""" start="00:31:34.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I played with Sora a little bit, and it generated someone,""" start="00:31:37.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you can go like, oh, that's Jon Hamm,""" start="00:31:41.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that's Christopher Walken,""" start="00:31:42.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you start figuring out who the people""" start="00:31:44.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""they're modeling stuff after.""" start="00:31:45.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There is an apocalypse, something""" start="00:31:47.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""going to happen right now.""" start="00:31:48.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There is, but this is once again,""" start="00:31:52.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""my personal opinion, and I'm not a lawyer,""" start="00:31:53.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and I do not have money.""" start="00:31:56.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So don't sue me, is there's going to be""" start="00:31:57.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""the current administration tends is very AI pro AI.""" start="00:31:58.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And there's very a great deal of lobbying by those groups.""" start="00:32:02.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And it's on both sides.""" start="00:32:05.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And it's going to be, it's gonna be interesting to see""" start="00:32:07.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what happens to copyright the next 510 years.""" start="00:32:09.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I just don't know how it keeps up""" start="00:32:11.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""without there being some adjustments and stuff.""" start="00:32:13.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay, and then another comment I saw,""" start="00:32:16.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""file size is not going to be a bottleneck.""" start="00:32:20.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""RAM is. You'll need 16 gigabytes of RAM""" start="00:32:23.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to run the smallest local models""" start="00:32:25.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and 512 gigabytes of RAM to run the larger ones.""" start="00:32:28.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""You'll need a GPU with that much memory""" start="00:32:31.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you want it to run quickly. Yeah. Oh no.""" start="00:32:35.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It also depends upon how your memory is laid out.""" start="00:32:39.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Like example being the Ultra i285H""" start="00:32:41.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I plan to buy, that has 96 gig of memory.""" start="00:32:45.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's unified between the GPU and the CPU share it,""" start="00:32:47.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but they go over the same bus.""" start="00:32:50.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So the overall bandwidth of it tends to be a bit less,""" start="00:32:52.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but you're able to load more of it into memory.""" start="00:32:55.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So it's able to do some additional stuff with it""" start="00:32:57.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""as opposed to come off disk.""" start="00:32:59.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's all balancing act. If you hit Zyskin's website,""" start="00:33:00.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that guy's done some great work on it.""" start="00:33:03.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm trying to figure out how big a model you can do,""" start="00:33:05.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what you can do with it.""" start="00:33:07.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And some of the stuff seems to be not obvious,""" start="00:33:08.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because like example, being that MacBook Air,""" start="00:33:12.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""for the five minutes I can run the model,""" start="00:33:15.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it runs it faster than a lot of other things""" start="00:33:17.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that should be able to run it faster,""" start="00:33:19.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""just because of the way the ARM cores and the unified memory work on it.""" start="00:33:21.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So it's a learning process.""" start="00:33:24.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But if you want to, Network Chuck had a great video""" start="00:33:26.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""talking about building his own system""" start="00:33:29.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with a couple really powerful NVIDIA cards""" start="00:33:30.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and stuff like that in it.""" start="00:33:34.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And just actually setting up on his system as a node""" start="00:33:35.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and using a web UI on it. So there's a lot of stuff there,""" start="00:33:38.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it is a process of learning how big your data is,""" start="00:33:41.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""which models you want to use,""" start="00:33:43.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""how much information you need,""" start="00:33:44.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it's part of the learning.""" start="00:33:46.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And you can run models, even as a Raspberry PI fives,""" start="00:33:48.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you want to, they'll run slow.""" start="00:33:52.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Don't get me wrong, but they're possible.""" start="00:33:54.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay, and I think there's other questions coming in too,""" start="00:33:56.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so I'll just bam for another second.""" start="00:34:02.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""We've got about five minutes before we'll,""" start="00:34:04.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""before we'll be cutting over,""" start="00:34:06.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I just want to say in case we get close for time here,""" start="00:34:09.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""how much I appreciate your talk.""" start="00:34:13.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This is another one that I'm going to""" start="00:34:14.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""have to study after the conference.""" start="00:34:15.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""We greatly appreciate, all of us appreciate""" start="00:34:18.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you guys putting on the conference.""" start="00:34:21.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a great conference. It's well done.""" start="00:34:22.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's an honor to be on the stage""" start="00:34:26.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with the brains of the project, which is you.""" start="00:34:28.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So what else we got? Question wise.""" start="00:34:30.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay, so just scanning here.""" start="00:34:34.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Have you used local models capable of tool calling?""" start="00:34:39.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm, I'm scared of agentic.""" start="00:34:50.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I, I am, I'm going to be a slow adopter of that.""" start="00:34:54.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I want to do it, but I just don't have the, uh,""" start="00:34:58.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""four decimal fortitude right now to do it.""" start="00:35:02.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I, I, I've had to give me the commands,""" start="00:35:04.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I still run the commands by hand.""" start="00:35:07.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm looking into it and it's on once again,""" start="00:35:08.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""it's on that list, but I just, that's a big step for me.""" start="00:35:10.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So. Awesome. All right.""" start="00:35:14.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Well, maybe it's, let me just scroll through""" start="00:35:23.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because we might have missed one question. Oh, I see.""" start="00:35:27.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Here was the piggyback question.""" start="00:35:31.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Now I see the question that I missed.""" start="00:35:36.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So this was piggybacking on the question""" start="00:35:38.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""about model updates and adding data.""" start="00:35:41.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And will models reach out to the web""" start="00:35:44.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if they need more info?""" start="00:35:46.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Or have you worked with any models that work that way?""" start="00:35:47.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""No, I've not seen any models to do that""" start="00:35:51.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""There's there was like a group""" start="00:35:55.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""working on something like a package updater""" start="00:35:57.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""that would do different diffs on it,""" start="00:35:59.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it's so Models change so much""" start="00:36:02.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""even who make minor changes and fine-tuning.""" start="00:36:03.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's hard just to update them in place""" start="00:36:05.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So I haven't seen one, but that doesn't mean""" start="00:36:07.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""they're not out there. I'm curious topic though Awesome""" start="00:36:10.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Well, it's probably pretty good timing.""" start="00:36:16.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Let me just scroll and make sure.""" start="00:36:19.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""And of course, before I can say that,""" start="00:36:21.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""there's one more question. So let's go ahead and have that.""" start="00:36:23.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I want to make sure while we're still live, though,""" start="00:36:25.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I give you a chance to offer any closing thoughts.""" start="00:36:28.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So what scares you most about the agentic tools?""" start="00:36:31.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""How would you think about putting a sandbox around that""" start="00:36:35.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you did adopt an agentic workflow?""" start="00:36:38.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""That is a great question.""" start="00:36:42.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""In terms of that, I would just control""" start="00:36:42.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what it's able to talk to, what machines,""" start="00:36:45.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I would actually have it be air gap.""" start="00:36:48.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I work for a defense contractor,""" start="00:36:50.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and we spend a lot of time dealing with air gap systems,""" start="00:36:52.100" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""because that's just kind of the way it works out for us.""" start="00:36:53.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So agentic, it's just going to take a while to get trust.""" start="00:36:55.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I want to want to see more stuff happening.""" start="00:36:58.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Humans screw up stuff enough.""" start="00:37:01.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""The last thing we need is to multiply that by 1000.""" start="00:37:02.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So in terms of that, I would be restricting what it can do.""" start="00:37:04.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you look at the capabilities,""" start="00:37:09.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if I created a user and gave it permissions,""" start="00:37:10.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I would have a lockdown through sudo,""" start="00:37:13.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what it's able to do, what the account's able to do.""" start="00:37:15.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I would do those kind of things,""" start="00:37:17.380" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it's going to be, it's happening.""" start="00:37:18.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's just, I'm going to be one of the laggards on that one.""" start="00:37:20.860" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So airgab, jail, extremely locked down environments,""" start="00:37:25.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""like we're talking about separate physicals, not Docker.""" start="00:37:29.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, hopefully. Right, fair.""" start="00:37:34.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So tool calling can be read-only,""" start="00:37:37.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""such as giving models the ability to search the web""" start="00:37:39.900" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""before answering your question,""" start="00:37:42.540" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""you know, write access, execute access.""" start="00:37:43.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I'm interested to know if local models""" start="00:37:46.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""are any good at that.""" start="00:37:49.220" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yes, local models can do a lot of that stuff.""" start="00:37:51.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's their capabilities.""" start="00:37:55.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""If you load LM studio, you can do a lot of wonderful stuff""" start="00:37:56.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with that or with open web UI with a llama.""" start="00:37:59.020" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's a lot of capabilities. It's amazing.""" start="00:38:02.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Open web UI is actually what a lot of companies are using now""" start="00:38:05.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""to put their data behind that.""" start="00:38:08.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""They're curated data and stuff like that. So works well.""" start="00:38:10.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I can confirm that from my own professional experience.""" start="00:38:12.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Excellent. Okay, well, our timing should be just perfect""" start="00:38:15.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if you want to give us like a 30-second, 45-second wrap-up.""" start="00:38:19.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Aaron, let me squeeze in mine.""" start="00:38:22.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Thank you again so much for preparing this talk""" start="00:38:24.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and for entertaining all of our questions.""" start="00:38:26.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Yeah, let me just thank you guys for the conference again.""" start="00:38:30.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""This is a great one. I've enjoyed a lot of it.""" start="00:38:33.300" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""I've only had a couple of talks so far,""" start="00:38:35.180" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but I'm looking forward to hitting the ones after this and tomorrow.""" start="00:38:37.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""But the AI stuff is coming. Get on board.""" start="00:38:41.660" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Definitely recommend it. If you want to just try it out""" start="00:38:44.740" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and get a little taste of it,""" start="00:38:46.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""what my minimal viable product""" start="00:38:48.420" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""with just LlamaFile and GPTEL""" start="00:38:49.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""will get you to the point where you start figuring out.""" start="00:38:51.620" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Gptel is an amazing thing. It just gets out of your way,""" start="00:38:53.140" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""but it works solo with Emacs. Design because it takes""" start="00:38:55.580" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""doesn't take your hands off the keyboard.""" start="00:39:00.460" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's just another buffer""" start="00:39:01.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and you just put information in there.""" start="00:39:02.500" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""It's quite quite a wonderful It's a wonderful time.""" start="00:39:04.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Let's put that way That's all I got Thank you""" start="00:39:06.980" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""so much for once again, and we're we're just cut away.""" start="00:39:10.820" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""So I'll stop the recording""" start="00:39:14.340" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and you're on your own recognizance""" start="00:39:15.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Well, I'm gonna punch out""" start="00:39:18.260" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""if anybody has any questions or anything""" start="00:39:19.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""my email address is ajgrothe@yahoo.com or at gmail and""" start="00:39:21.060" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Thank you all for attending""" start="00:39:24.700" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""and thanks again for the conference""" start="00:39:26.780" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Okay, I'm gonna go ahead and end the room there, thank you.""" start="00:39:29.940" video="mainVideo-private-ai" id="subtitle"]]
+[[!template text="""Excellent, thanks, bye.""" start="00:39:32.580" video="mainVideo-private-ai" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [ajgrothe@yahoo.com](mailto:ajgrothe@yahoo.com?subject=Comment%20for%20EmacsConf%202023%20private-ai%3A%20Emacs%20and%20private%20AI%3A%20a%20great%20match)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/private-ai-before.md b/2025/info/private-ai-before.md
new file mode 100644
index 00000000..48fdf92a
--- /dev/null
+++ b/2025/info/private-ai-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 42-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-private-ai>
+Etherpad: <https://pad.emacsconf.org/2025-private-ai>
+Status: TO_INDEX_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-private-ai"><source src="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 41:52 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-private-ai">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.opus">Download --main.opus (3MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--main.webm">Download --main.webm (44MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-private-ai--emacs-and-private-ai-a-great-match--aaron-grothe--slides.pdf">Download --slides.pdf</a></li><li><a href="https://www.youtube.com/watch?v=zN3_vNaLheU">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/private-ai-nav.md b/2025/info/private-ai-nav.md
new file mode 100644
index 00000000..f1da6dba
--- /dev/null
+++ b/2025/info/private-ai-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/llm">Emacs, editors, and LLM driven workflows</a>
+Next by track: <a href="/2025/talks/commonlisp">Common Lisp images communicating like-a-human through shared Emacs slime and eev</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/python-after.md b/2025/info/python-after.md
new file mode 100644
index 00000000..508a4acc
--- /dev/null
+++ b/2025/info/python-after.md
@@ -0,0 +1,548 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="python-mainVideo-transcript"></a><h1>Transcript</h1>
+
+[[!template text="""Okay, so welcome to this session about interactive Python""" start="00:00:00.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""programming. My name is David Vujic and I live and work in""" start="00:00:04.440" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Stockholm, Sweden. a developer and today I focus""" start="00:00:09.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""mainly on Python software development. So I do this at work""" start="00:00:15.320" video="mainVideo-python" id="subtitle"]]
+[[!template text="""and I also do this on my spare time in my open source projects.""" start="00:00:20.440" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Before that, I've been part of the Lisp community. I've""" start="00:00:26.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""been a Clojure developer, and also, like, way back,""" start="00:00:30.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""I was in the Microsoft world and developed C# and .NET stuff.""" start="00:00:33.701" video="mainVideo-python" id="subtitle"]]
+[[!template text="""What I've been doing lately is to try to improve the""" start="00:00:40.280" video="mainVideo-python" id="subtitle"]]
+[[!template text="""developer experience when you write Python code. So what I""" start="00:00:46.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""want to talk about is this, but also I want to begin with""" start="00:00:52.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""feedback loops because I think it's very related to this""" start="00:00:56.160" video="mainVideo-python" id="subtitle"]]
+[[!template text="""interactive programming style, like having this nice""" start="00:01:00.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""feedback when you write code.""" start="00:01:05.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""So I'm going to begin with that.""" start="00:01:07.068" video="mainVideo-python" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Feedback loops""" start="00:01:10.534" video="mainVideo-python" id="subtitle"]]</div>[[!template text="""So this image, you know, this circle is supposed to be a""" start="00:01:10.534" video="mainVideo-python" id="subtitle"]]
+[[!template text="""visualization of a feedback loop. Let's say we write our""" start="00:01:14.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""code and then we deploy it to production. Then when it's""" start="00:01:19.880" video="mainVideo-python" id="subtitle"]]
+[[!template text="""running there, we can check if things work, or if maybe someone""" start="00:01:25.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""else will let us know. Maybe our customers will let us know.""" start="00:01:29.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""That's a pretty slow feedback loop with potential risks of""" start="00:01:35.320" video="mainVideo-python" id="subtitle"]]
+[[!template text="""damaging your business or whatever.""" start="00:01:39.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""This is obvious, of course.""" start="00:01:41.868" video="mainVideo-python" id="subtitle"]]
+[[!template text="""So a faster feedback loop probably is to have""" start="00:01:44.168" video="mainVideo-python" id="subtitle"]]
+[[!template text="""some kind of automation when you do commits""" start="00:01:50.001" video="mainVideo-python" id="subtitle"]]
+[[!template text="""or maybe you have this pull request things and even reviews.""" start="00:01:54.067" video="mainVideo-python" id="subtitle"]]
+[[!template text="""So maybe not always as fast as deploy,""" start="00:01:59.734" video="mainVideo-python" id="subtitle"]]
+[[!template text="""don't deploy directly to production, but""" start="00:02:02.934" video="mainVideo-python" id="subtitle"]]
+[[!template text="""it's probably safer and often you get this automated""" start="00:02:05.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""feedback faster anyway. But it's still kind of slow. You""" start="00:02:10.540" video="mainVideo-python" id="subtitle"]]
+[[!template text="""have to wait. You have to push things to GitHub maybe and""" start="00:02:16.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""wait. So there's faster ways for sure to get feedback.""" start="00:02:20.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""So a much faster way is to write code,""" start="00:02:24.280" video="mainVideo-python" id="subtitle"]]
+[[!template text="""and write some unit tests, and run those unit tests.""" start="00:02:27.968" video="mainVideo-python" id="subtitle"]]
+[[!template text="""So then you do everything on your local machine""" start="00:02:31.368" video="mainVideo-python" id="subtitle"]]
+[[!template text="""and you will fairly quickly learn if your code does""" start="00:02:33.468" video="mainVideo-python" id="subtitle"]]
+[[!template text="""what you think it does or if it doesn't. I want to zoom in to""" start="00:02:39.040" video="mainVideo-python" id="subtitle"]]
+[[!template text="""this test write code and test flow a bit. Let's do that.""" start="00:02:47.160" video="mainVideo-python" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Test-driven development""" start="00:02:56.000" video="mainVideo-python" id="subtitle"]]</div>[[!template text="""As a developer, I have used a thing called test-driven""" start="00:02:56.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""development for quite some time. I find that this way of""" start="00:02:59.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""working is very fast when it comes to getting feedback on""" start="00:03:06.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""what your code does and how you should continue the""" start="00:03:11.260" video="mainVideo-python" id="subtitle"]]
+[[!template text="""development. So, test-driven development,""" start="00:03:14.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""basically that you start writing a test for""" start="00:03:19.981" video="mainVideo-python" id="subtitle"]]
+[[!template text="""something that you want to develop, and then you continue""" start="00:03:24.221" video="mainVideo-python" id="subtitle"]]
+[[!template text="""developing that, and then you go back to the test, and modify""" start="00:03:27.021" video="mainVideo-python" id="subtitle"]]
+[[!template text="""and modify the code, and you go back and forth between the""" start="00:03:31.020" video="mainVideo-python" id="subtitle"]]
+[[!template text="""tests and the code.""" start="00:03:35.080" video="mainVideo-python" id="subtitle"]]
+[[!template text="""It's sort of like a ping-pong game. I find this very""" start="00:03:36.960" video="mainVideo-python" id="subtitle"]]
+[[!template text="""effective when you want to get feedback and to know how to""" start="00:03:44.420" video="mainVideo-python" id="subtitle"]]
+[[!template text="""continue the development. The most important thing""" start="00:03:50.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""that I feel is that you know what the code does.""" start="00:03:57.234" video="mainVideo-python" id="subtitle"]]
+[[!template text="""You learn very quickly.""" start="00:04:01.701" video="mainVideo-python" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""REPL-driven development""" start="00:04:05.560" video="mainVideo-python" id="subtitle"]]</div>[[!template text="""Let's zoom into this TDD flow a little bit. The last couple of""" start="00:04:05.560" video="mainVideo-python" id="subtitle"]]
+[[!template text="""years, I've been doing a slightly different thing which is""" start="00:04:12.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""called REPL-driven development. REPL-driven""" start="00:04:17.380" video="mainVideo-python" id="subtitle"]]
+[[!template text="""development is very similar to test-driven development,""" start="00:04:21.980" video="mainVideo-python" id="subtitle"]]
+[[!template text="""but I find it even quicker. You get feedback even quicker""" start="00:04:25.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""than with a regular TDD setup. So REPL-driven development""" start="00:04:31.160" video="mainVideo-python" id="subtitle"]]
+[[!template text="""is about writing and evaluating code in a REPL basically.""" start="00:04:34.980" video="mainVideo-python" id="subtitle"]]
+[[!template text="""And you can do experiments and you can refactor and""" start="00:04:41.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""re-evaluate and you get instant feedback on what the code""" start="00:04:46.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""does and what you need to change. So I think that's even""" start="00:04:51.700" video="mainVideo-python" id="subtitle"]]
+[[!template text="""faster than test-driven development.""" start="00:04:54.800" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Okay, REPL driven development. Let's go back. What's the""" start="00:04:59.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""REPL? Most of developers know what a REPL is. The most common""" start="00:05:02.900" video="mainVideo-python" id="subtitle"]]
+[[!template text="""setup is you open this shell and you use the REPL for your""" start="00:05:10.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""programming language. In this case I'm using the Python""" start="00:05:16.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""REPL or the IPython REPL which is an enhanced REPL for Python""" start="00:05:19.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""development. So what happens here is that we start a REPL""" start="00:05:25.620" video="mainVideo-python" id="subtitle"]]
+[[!template text="""session in isolation. So this session knows about the""" start="00:05:30.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Python environment. So it knows about the Python language""" start="00:05:34.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""basically. So as soon as we start writing things, adding""" start="00:05:38.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""variables or creating writing functions or even doing""" start="00:05:42.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""imports. Then the session will be more and more aware of the""" start="00:05:47.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""code so we will add things to the to the session and then that""" start="00:05:51.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""means that we can run functions we can print out these""" start="00:05:55.820" video="mainVideo-python" id="subtitle"]]
+[[!template text="""variables and things like that. But with REPL driven""" start="00:06:00.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""development it's not really that well at least not what I""" start="00:06:05.860" video="mainVideo-python" id="subtitle"]]
+[[!template text="""mean with REPL driven development. So what I'm thinking of""" start="00:06:09.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""is that you are in your code editor where you have your""" start="00:06:14.040" video="mainVideo-python" id="subtitle"]]
+[[!template text="""autocomplete, and you have your syntax highlighting and""" start="00:06:19.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""your favorite theme, color theme, and all of those things. But""" start="00:06:22.800" video="mainVideo-python" id="subtitle"]]
+[[!template text="""instead, you have this running REPL in the background or in a""" start="00:06:30.460" video="mainVideo-python" id="subtitle"]]
+[[!template text="""smaller window or buffer. So that means that you write code""" start="00:06:34.980" video="mainVideo-python" id="subtitle"]]
+[[!template text="""and you can send that code to the running REPL, to the REPL""" start="00:06:41.140" video="mainVideo-python" id="subtitle"]]
+[[!template text="""session. You write and do everything as you would do when""" start="00:06:45.320" video="mainVideo-python" id="subtitle"]]
+[[!template text="""writing your code basically. In this case, in this""" start="00:06:50.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""example, I have evaluated these two functions. I've sent""" start="00:06:55.220" video="mainVideo-python" id="subtitle"]]
+[[!template text="""them to the REPL session so it's aware of these functions.""" start="00:07:00.600" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Then I switched to a separate different module and""" start="00:07:05.820" video="mainVideo-python" id="subtitle"]]
+[[!template text="""evaluated that one. So the REPL session now knows about""" start="00:07:10.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""these two functions and also these two variables. That""" start="00:07:14.040" video="mainVideo-python" id="subtitle"]]
+[[!template text="""means that I can evaluate the state of those variables and""" start="00:07:19.040" video="mainVideo-python" id="subtitle"]]
+[[!template text="""change code and re-evaluate and things like that. So in this""" start="00:07:24.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""example if you look in the smaller area there you see that I""" start="00:07:29.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""have evaluated this res variable on line 6 and the output was""" start="00:07:33.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""that it's a dictionary with two keys and two values""" start="00:07:39.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""basically. So this setup works in basically any of your""" start="00:07:42.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""favorite code editors. So you can do this in Visual Studio""" start="00:07:51.220" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Code, you can do this in PyCharm or Vim. But what I have done is""" start="00:07:54.080" video="mainVideo-python" id="subtitle"]]
+[[!template text="""that... More like what I have missed is that when I write code""" start="00:08:01.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""and do this evaluation, this is really cool, but then I need""" start="00:08:07.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""to switch context if I want to see the result. I have to switch""" start="00:08:10.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""context to this other window. I""" start="00:08:15.460" video="mainVideo-python" id="subtitle"]]
+[[!template text="""have my focus on the code and then I have to look in a different""" start="00:08:21.980" video="mainVideo-python" id="subtitle"]]
+[[!template text="""place to know the results. And if it's a larger output, then""" start="00:08:25.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""maybe I need to scroll. So I wanted to find out if it was""" start="00:08:31.800" video="mainVideo-python" id="subtitle"]]
+[[!template text="""possible to make this even smoother and faster, this""" start="00:08:37.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""feedback loop even faster, so I don't have to switch""" start="00:08:43.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""context. What I've done here is that... I can select a row or a""" start="00:08:45.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""region and I can evaluate and then an overlay, a small pop-up""" start="00:08:52.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""shows up with the evaluated result right next to it. So I can""" start="00:08:58.080" video="mainVideo-python" id="subtitle"]]
+[[!template text="""change code and re-evaluate and quickly see the result of it""" start="00:09:03.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""without doing this context switching. So the way I've done""" start="00:09:07.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""it is that I wanted to reuse the existing tooling that I""" start="00:09:12.641" video="mainVideo-python" id="subtitle"]]
+[[!template text="""already had. I know that my in-editor REPL, the IPython""" start="00:09:20.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""REPL, already does this evaluation. So I figured maybe I can""" start="00:09:27.740" video="mainVideo-python" id="subtitle"]]
+[[!template text="""extract the data and do this visualization as a separate""" start="00:09:31.560" video="mainVideo-python" id="subtitle"]]
+[[!template text="""thing. That's how I've done it. What I've done is that""" start="00:09:35.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""I've created this overlay and placed it where my cursor""" start="00:09:40.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""currently is, right next to the code. Then I've""" start="00:09:47.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""extracted the evaluated result and put it in this overlay.""" start="00:09:50.860" video="mainVideo-python" id="subtitle"]]
+[[!template text="""I also want this overlay to have this nice looking syntax,""" start="00:09:55.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""so I've set it to this Python mode, so we get this syntax""" start="00:10:01.040" video="mainVideo-python" id="subtitle"]]
+[[!template text="""highlighting. Make it look very readable. And as a nice""" start="00:10:04.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""developer experience thing,""" start="00:10:10.560" video="mainVideo-python" id="subtitle"]]
+[[!template text="""when you move the cursor, of course you don't want the""" start="00:10:16.880" video="mainVideo-python" id="subtitle"]]
+[[!template text="""overlay to be there. You want it to disappear. So those kinds""" start="00:10:20.380" video="mainVideo-python" id="subtitle"]]
+[[!template text="""of things I've added. So putting the overlay at the right""" start="00:10:25.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""place and feed it with the evaluated data and then make it""" start="00:10:29.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""disappear when it's not interesting to look at anymore.""" start="00:10:33.280" video="mainVideo-python" id="subtitle"]]
+[[!template text="""What I've described so far is something that I use on a""" start="00:10:39.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""daily basis, and it covers most of my needs while doing Python""" start="00:10:44.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""development. But one thing I still miss, and I miss it from my""" start="00:10:50.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""days as a Clojure developer, because over there we could""" start="00:10:56.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""have a running app on our local machine and we can have our""" start="00:11:03.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""editor, and the app and the editor were connected. So when I""" start="00:11:07.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""did some changes in the code, the app would change without""" start="00:11:12.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""any restarts or anything like that. And the same if I would""" start="00:11:17.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""change the state of the app, I can inspect the state from the""" start="00:11:20.560" video="mainVideo-python" id="subtitle"]]
+[[!template text="""code. So they were connected. They are connected. So I was""" start="00:11:24.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""thinking, hey, this would be really cool if we could have""" start="00:11:28.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""something like this in Python. And that reminded me of""" start="00:11:32.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Jupyter and Jupyter notebooks because I think notebooks,""" start="00:11:39.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""the way you do things there, is very similar to what I was""" start="00:11:43.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""trying to achieve. So I was reading up a little bit on how this""" start="00:11:49.660" video="mainVideo-python" id="subtitle"]]
+[[!template text="""notebook thing works. It turns out that a notebook is a""" start="00:11:56.880" video="mainVideo-python" id="subtitle"]]
+[[!template text="""client that talks to a server, that communicates with a""" start="00:12:00.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""server. It's on the server that all this Python""" start="00:12:05.280" video="mainVideo-python" id="subtitle"]]
+[[!template text="""evaluation and all this thing happens. Then what I've""" start="00:12:08.800" video="mainVideo-python" id="subtitle"]]
+[[!template text="""done is that instead of starting up IPython in my editor, I""" start="00:12:14.160" video="mainVideo-python" id="subtitle"]]
+[[!template text="""start the Jupyter console instead. And then I can give it""" start="00:12:19.660" video="mainVideo-python" id="subtitle"]]
+[[!template text="""that unique ID and it will be connected to that running""" start="00:12:23.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""kernel.""" start="00:12:27.160" video="mainVideo-python" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""FastAPI CRUD""" start="00:12:30.920" video="mainVideo-python" id="subtitle"]]</div>[[!template text="""In this example, I've created this FastAPI CRUD app that""" start="00:12:30.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""has this create, read, update, and delete endpoints. It""" start="00:12:37.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""has this, it's locally running, it has this database where""" start="00:12:41.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""you can do all these things. I'm running this FastAPI app""" start="00:12:46.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""in the kernel and then I've connected to, I've connected to""" start="00:12:51.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""the kernel in my editor too. Both of them are connected to""" start="00:12:58.060" video="mainVideo-python" id="subtitle"]]
+[[!template text="""the kernel. What I do now is that I want to initially create""" start="00:13:03.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""some data. I'm going to add this, creating this message.""" start="00:13:09.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""What I get back is a message ID. I want to experiment in""" start="00:13:15.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""my browser. What do I get with that message ID? I'm""" start="00:13:19.900" video="mainVideo-python" id="subtitle"]]
+[[!template text="""evaluating the read function. I instantly get this""" start="00:13:24.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""evaluated result, which was this hello world text. So what""" start="00:13:30.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""happens if I do some changes in this app? I'm going to grab""" start="00:13:34.780" video="mainVideo-python" id="subtitle"]]
+[[!template text="""this message ID and write something else.""" start="00:13:39.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Now I can evaluate the same thing again, and you can see that""" start="00:13:49.660" video="mainVideo-python" id="subtitle"]]
+[[!template text="""the content has changed to this new value. My editor isn't""" start="00:13:53.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""in any debug mode or something like that. It doesn't know""" start="00:14:02.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""what database it is. It doesn't have any environment""" start="00:14:07.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""variables set up or something like that. It is only""" start="00:14:11.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""connected to the kernel, and the kernel is aware of that. It's""" start="00:14:14.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""running the app. It has the connection strings and""" start="00:14:17.600" video="mainVideo-python" id="subtitle"]]
+[[!template text="""everything that is needed. So that's how this thing works.""" start="00:14:20.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""Now I want to do some inline hacking because I want to store""" start="00:14:28.800" video="mainVideo-python" id="subtitle"]]
+[[!template text="""this input that is sent from this app because I want to work""" start="00:14:34.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""with it afterwards. I can add this dictionary that stores""" start="00:14:37.800" video="mainVideo-python" id="subtitle"]]
+[[!template text="""this message. I'm updating the source code of this app, and""" start="00:14:42.040" video="mainVideo-python" id="subtitle"]]
+[[!template text="""when I run any of these endpoints again, you will see that""" start="00:14:48.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""the state changes, and the new inputs, I can grab and I can use""" start="00:15:03.080" video="mainVideo-python" id="subtitle"]]
+[[!template text="""them for quick evaluation or testing. This example is""" start="00:15:08.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""really simple. It was just an integer. For example, if you""" start="00:15:14.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""are sending a more complex object, maybe a pydantic schema""" start="00:15:18.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""or something, and you want to inspect what's coming in, and if""" start="00:15:23.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""you have some sort of validation that you want to test out.""" start="00:15:28.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""The configuration or the code that I wrote to make this work""" start="00:15:34.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""is a little bit different than just adding an overlay. I'm""" start="00:15:38.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""using this overlay just like with the IPython example, but in""" start="00:15:44.160" video="mainVideo-python" id="subtitle"]]
+[[!template text="""this case, when I change code, I have to think about where that""" start="00:15:51.000" video="mainVideo-python" id="subtitle"]]
+[[!template text="""code lives, because it's the app that runs the code. So it's""" start="00:15:57.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""in the app context I need to manipulate with the data. If you""" start="00:16:02.160" video="mainVideo-python" id="subtitle"]]
+[[!template text="""have started the app from maybe a main function and that""" start="00:16:07.040" video="mainVideo-python" id="subtitle"]]
+[[!template text="""module imports namespaces, then you need to, if you want to""" start="00:16:11.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""update a function or something like that, you need to update""" start="00:16:17.880" video="mainVideo-python" id="subtitle"]]
+[[!template text="""it in the correct namespace. What I did before in IPython""" start="00:16:22.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""by adding and changing things, everything ends up in the""" start="00:16:26.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""global namespace. But here, if you want the app to actually""" start="00:16:29.920" video="mainVideo-python" id="subtitle"]]
+[[!template text="""react to the changes, you need to put it in the right""" start="00:16:34.440" video="mainVideo-python" id="subtitle"]]
+[[!template text="""namespace. So that's what I do here. I do some lookups, where""" start="00:16:38.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""is this function, and then I do this reload of this function or""" start="00:16:43.480" video="mainVideo-python" id="subtitle"]]
+[[!template text="""module. And when I was developing this, I was thinking, hey,""" start="00:16:49.140" video="mainVideo-python" id="subtitle"]]
+[[!template text="""this is really ugly. I'm in this REPL and do some""" start="00:16:54.800" video="mainVideo-python" id="subtitle"]]
+[[!template text="""manipulation of the imports and things like that. That""" start="00:16:59.320" video="mainVideo-python" id="subtitle"]]
+[[!template text="""didn't feel good. Then I was reminded of the IPython. And""" start="00:17:03.560" video="mainVideo-python" id="subtitle"]]
+[[!template text="""IPython has this feature to reload any updated""" start="00:17:09.760" video="mainVideo-python" id="subtitle"]]
+[[!template text="""submodules. I was curious how do they do it. I looked in the""" start="00:17:15.520" video="mainVideo-python" id="subtitle"]]
+[[!template text="""IPython source code and saw that they also use importlib and""" start="00:17:19.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""reloading of this module. Once I've learned that, then I""" start="00:17:24.080" video="mainVideo-python" id="subtitle"]]
+[[!template text="""stopped thinking that my code was hacky. I thought it was""" start="00:17:28.360" video="mainVideo-python" id="subtitle"]]
+[[!template text="""good enough at least.""" start="00:17:32.600" video="mainVideo-python" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Testing with an LLM""" start="00:17:37.160" video="mainVideo-python" id="subtitle"]]</div>[[!template text="""But one thing that has bothered me for a long time is I quite""" start="00:17:37.160" video="mainVideo-python" id="subtitle"]]
+[[!template text="""often want to test out and evaluate individual rows that""" start="00:17:45.060" video="mainVideo-python" id="subtitle"]]
+[[!template text="""lives in a function. Quite often, this code uses the input""" start="00:17:50.200" video="mainVideo-python" id="subtitle"]]
+[[!template text="""to that function like the input parameters. To be able to""" start="00:17:58.560" video="mainVideo-python" id="subtitle"]]
+[[!template text="""do that, I need to manually type some fake data and set it to""" start="00:18:02.640" video="mainVideo-python" id="subtitle"]]
+[[!template text="""this variable, and then I can evaluate the code. But I think""" start="00:18:07.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""that takes... That slows me down. I was thinking, maybe I can""" start="00:18:12.280" video="mainVideo-python" id="subtitle"]]
+[[!template text="""do this in a quicker way, so I have this quicker feedback, so I""" start="00:18:17.780" video="mainVideo-python" id="subtitle"]]
+[[!template text="""can run this or evaluate this code much quicker.""" start="00:18:23.440" video="mainVideo-python" id="subtitle"]]
+[[!template text="""So my idea was maybe I""" start="00:18:27.934" video="mainVideo-python" id="subtitle"]]
+[[!template text="""can use an LLM for this. If I give it the parameters, maybe it""" start="00:18:29.440" video="mainVideo-python" id="subtitle"]]
+[[!template text="""can return some random data so I don't have to write it""" start="00:18:35.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""myself. I ended up doing that. I have this source code.""" start="00:18:41.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""I'm loading the REPL with the code. Then I select this""" start="00:18:44.120" video="mainVideo-python" id="subtitle"]]
+[[!template text="""function name and the parameters with its data type. I""" start="00:18:50.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""have this prompt that instructs the LLM to come up with fake""" start="00:18:56.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""data based on the tag name and on the data type. And then I can""" start="00:19:02.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""send that to the REPL. I do that with a key command. Then""" start="00:19:06.240" video="mainVideo-python" id="subtitle"]]
+[[!template text="""I can proceed by running the code within the function that""" start="00:19:10.100" video="mainVideo-python" id="subtitle"]]
+[[!template text="""uses these inputs. This works for all the data types. If""" start="00:19:16.020" video="mainVideo-python" id="subtitle"]]
+[[!template text="""there's a custom data type, you need to give the LLM extra""" start="00:19:21.720" video="mainVideo-python" id="subtitle"]]
+[[!template text="""context. So that's something to think about. Once it knows""" start="00:19:26.280" video="mainVideo-python" id="subtitle"]]
+[[!template text="""the context, it can generate this fake data that very often is""" start="00:19:30.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""good enough just to test out, you know, like I've done here, like""" start="00:19:35.680" video="mainVideo-python" id="subtitle"]]
+[[!template text="""string... sorry, list destructuring and parsing and things""" start="00:19:39.840" video="mainVideo-python" id="subtitle"]]
+[[!template text="""like that. I think that was all I had, and thank you for""" start="00:19:45.400" video="mainVideo-python" id="subtitle"]]
+[[!template text="""listening!""" start="00:19:51.880" video="mainVideo-python" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+<div class="transcript transcript-qanda"><a name="python-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""So as we wait for people to drop""" start="00:00:00.000" video="qanda-python" id="subtitle"]]
+[[!template text="""in their questions and so on,""" start="00:00:02.840" video="qanda-python" id="subtitle"]]
+[[!template text="""I'll just kind of add a couple of thoughts.""" start="00:00:04.280" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm not personally much of a Python developer,""" start="00:00:08.720" video="qanda-python" id="subtitle"]]
+[[!template text="""so I'm just curious as to your thoughts on using Emacs""" start="00:00:12.040" video="qanda-python" id="subtitle"]]
+[[!template text="""and kind of the development methodology you showed""" start="00:00:17.760" video="qanda-python" id="subtitle"]]
+[[!template text="""as a way to learn Python.""" start="00:00:24.320" video="qanda-python" id="subtitle"]]
+[[!template text="""Yeah, I think Emacs is perfect for it.""" start="00:00:26.520" video="qanda-python" id="subtitle"]]
+[[!template text="""If you're already an Emacs user""" start="00:00:29.240" video="qanda-python" id="subtitle"]]
+[[!template text="""and you have the keyboard commands""" start="00:00:31.760" video="qanda-python" id="subtitle"]]
+[[!template text="""and everything uploaded in your brain,""" start="00:00:35.600" video="qanda-python" id="subtitle"]]
+[[!template text="""then learning Python shouldn't be too difficult,""" start="00:00:38.720" video="qanda-python" id="subtitle"]]
+[[!template text="""because there's a lot of good packages.""" start="00:00:42.600" video="qanda-python" id="subtitle"]]
+[[!template text="""For Python, I'm using a thing called elpy,""" start="00:00:44.840" video="qanda-python" id="subtitle"]]
+[[!template text="""which is really good. for Python development.""" start="00:00:51.320" video="qanda-python" id="subtitle"]]
+[[!template text="""So you have this connection to a running backend,""" start="00:00:55.680" video="qanda-python" id="subtitle"]]
+[[!template text="""the Jedi Python backend that will give you autocomplete""" start="00:01:00.040" video="qanda-python" id="subtitle"]]
+[[!template text="""and some refactoring and things like that.""" start="00:01:06.040" video="qanda-python" id="subtitle"]]
+[[!template text="""So I think Emacs is really good for Python development.""" start="00:01:09.040" video="qanda-python" id="subtitle"]]
+[[!template text="""So what are some other...""" start="00:01:14.440" video="qanda-python" id="subtitle"]]
+[[!template text="""How long have you been using Emacs?""" start="00:01:16.680" video="qanda-python" id="subtitle"]]
+[[!template text="""Kind of a general question.""" start="00:01:18.320" video="qanda-python" id="subtitle"]]
+[[!template text="""Sorry if you covered this and I missed it.""" start="00:01:19.600" video="qanda-python" id="subtitle"]]
+[[!template text="""It's not that long actually.""" start="00:01:23.600" video="qanda-python" id="subtitle"]]
+[[!template text="""I think it was in 2019 or 2020.""" start="00:01:26.600" video="qanda-python" id="subtitle"]]
+[[!template text="""It's when I started to, I was really fortunate enough""" start="00:01:31.600" video="qanda-python" id="subtitle"]]
+[[!template text="""to join a team that had chosen to""" start="00:01:34.800" video="qanda-python" id="subtitle"]]
+[[!template text="""develop an app in Lisp, in Clojure.""" start="00:01:38.040" video="qanda-python" id="subtitle"]]
+[[!template text="""yeah and i didn't know anything about it""" start="00:01:42.920" video="qanda-python" id="subtitle"]]
+[[!template text="""i didn't know lisp at all so it was like brand new""" start="00:01:45.040" video="qanda-python" id="subtitle"]]
+[[!template text="""so i really had struggling to to learn it""" start="00:01:47.360" video="qanda-python" id="subtitle"]]
+[[!template text="""but at the same time i was looking for okay""" start="00:01:50.640" video="qanda-python" id="subtitle"]]
+[[!template text="""which editor should i pick to to do this""" start="00:01:53.560" video="qanda-python" id="subtitle"]]
+[[!template text="""and i was before that and like an ide person""" start="00:01:55.280" video="qanda-python" id="subtitle"]]
+[[!template text="""so i do use this big ideas""" start="00:02:00.240" video="qanda-python" id="subtitle"]]
+[[!template text="""and this time i figured maybe i should try something different.""" start="00:02:02.920" video="qanda-python" id="subtitle"]]
+[[!template text="""And I read this book about Clojure development""" start="00:02:07.840" video="qanda-python" id="subtitle"]]
+[[!template text="""and the author was really into Emacs""" start="00:02:10.240" video="qanda-python" id="subtitle"]]
+[[!template text="""and he was like, Clojure is really good for,""" start="00:02:13.240" video="qanda-python" id="subtitle"]]
+[[!template text="""Emacs is really good for Clojure development.""" start="00:02:17.160" video="qanda-python" id="subtitle"]]
+[[!template text="""So that's how I started.""" start="00:02:19.160" video="qanda-python" id="subtitle"]]
+[[!template text="""So I like to learn, rewired my brain""" start="00:02:20.760" video="qanda-python" id="subtitle"]]
+[[!template text="""to learn all how Emacs works""" start="00:02:24.480" video="qanda-python" id="subtitle"]]
+[[!template text="""as opposed to like the mainstream editors out there.""" start="00:02:27.640" video="qanda-python" id="subtitle"]]
+[[!template text="""So that's how it started. So like five years ago, maybe.""" start="00:02:30.960" video="qanda-python" id="subtitle"]]
+[[!template text="""Cool. Um, so did you, what were some other,""" start="00:02:33.520" video="qanda-python" id="subtitle"]]
+[[!template text="""what, what, what editor were you primarily using before you?""" start="00:02:39.520" video="qanda-python" id="subtitle"]]
+[[!template text="""Um, um, back, back then it was like,""" start="00:02:44.000" video="qanda-python" id="subtitle"]]
+[[!template text="""I think it was like Sublime Text.""" start="00:02:49.400" video="qanda-python" id="subtitle"]]
+[[!template text="""And also some IntelliJ, sorry, JetBrains, their tools.""" start="00:02:52.720" video="qanda-python" id="subtitle"]]
+[[!template text="""And before that, I was in the Microsoft world,""" start="00:02:57.720" video="qanda-python" id="subtitle"]]
+[[!template text="""so it's like Microsoft toolings basically.""" start="00:03:04.600" video="qanda-python" id="subtitle"]]
+[[!template text="""So I moved towards open source tooling""" start="00:03:08.200" video="qanda-python" id="subtitle"]]
+[[!template text="""and also open source development. Very cool.""" start="00:03:10.880" video="qanda-python" id="subtitle"]]
+[[!template text="""So I see we've got a couple people""" start="00:03:16.680" video="qanda-python" id="subtitle"]]
+[[!template text="""that have joined on the BBB here with us""" start="00:03:19.120" video="qanda-python" id="subtitle"]]
+[[!template text="""for the live question.""" start="00:03:23.480" video="qanda-python" id="subtitle"]]
+[[!template text="""You're welcome to just throw your question in this chat,""" start="00:03:24.960" video="qanda-python" id="subtitle"]]
+[[!template text="""or if you've got a microphone connected,""" start="00:03:29.200" video="qanda-python" id="subtitle"]]
+[[!template text="""you're welcome to come off mute""" start="00:03:32.040" video="qanda-python" id="subtitle"]]
+[[!template text="""and throw a question in that way as well.""" start="00:03:34.600" video="qanda-python" id="subtitle"]]
+[[!template text="""You can join on liberachat IRC.""" start="00:03:36.760" video="qanda-python" id="subtitle"]]
+[[!template text="""You can join pound emacs comp hyphen dev,""" start="00:03:40.360" video="qanda-python" id="subtitle"]]
+[[!template text="""and we would happily take your questions there.""" start="00:03:44.120" video="qanda-python" id="subtitle"]]
+[[!template text="""Meanwhile, I've got a question""" start="00:03:47.280" video="qanda-python" id="subtitle"]]
+[[!template text="""coming in on the pad right now, so take that next.""" start="00:03:49.480" video="qanda-python" id="subtitle"]]
+[[!template text="""I'll just read it out.""" start="00:03:52.720" video="qanda-python" id="subtitle"]]
+[[!template text="""I don't quite see how your setup works with IPython.""" start="00:03:55.240" video="qanda-python" id="subtitle"]]
+[[!template text="""Sorry if you already answered this.""" start="00:03:58.240" video="qanda-python" id="subtitle"]]
+[[!template text="""Do you have your Emacs connect to the IPython kernel""" start="00:04:00.280" video="qanda-python" id="subtitle"]]
+[[!template text="""over XMPP socket that IPython sets up? Oh, good question.""" start="00:04:03.520" video="qanda-python" id="subtitle"]]
+[[!template text="""So what I've done is I have two different connections.""" start="00:04:11.920" video="qanda-python" id="subtitle"]]
+[[!template text="""Like if I'm going to do this regular day-to-day Python work""" start="00:04:18.040" video="qanda-python" id="subtitle"]]
+[[!template text="""when I want to evaluate code""" start="00:04:21.360" video="qanda-python" id="subtitle"]]
+[[!template text="""without thinking about the external connection,""" start="00:04:24.400" video="qanda-python" id="subtitle"]]
+[[!template text="""then I just use IPython""" start="00:04:29.960" video="qanda-python" id="subtitle"]]
+[[!template text="""and I have my I'm using the LP Python package""" start="00:04:31.560" video="qanda-python" id="subtitle"]]
+[[!template text="""so that you can set up which of the REPLs""" start="00:04:36.800" video="qanda-python" id="subtitle"]]
+[[!template text="""you want to start when you evaluate code.""" start="00:04:39.840" video="qanda-python" id="subtitle"]]
+[[!template text="""So that's IPython. But in the second part of the talk""" start="00:04:42.800" video="qanda-python" id="subtitle"]]
+[[!template text="""where I connect to an externally running app,""" start="00:04:46.760" video="qanda-python" id="subtitle"]]
+[[!template text="""then I have set up the same configuration""" start="00:04:50.920" video="qanda-python" id="subtitle"]]
+[[!template text="""but to start Jupyter, the Jupyter console instead.""" start="00:04:55.840" video="qanda-python" id="subtitle"]]
+[[!template text="""And when I start it up, it's going to, it's like a dialogue""" start="00:05:00.960" video="qanda-python" id="subtitle"]]
+[[!template text="""that will ask for the ID of a running kernel.""" start="00:05:04.960" video="qanda-python" id="subtitle"]]
+[[!template text="""Because if you start a kernel,""" start="00:05:09.600" video="qanda-python" id="subtitle"]]
+[[!template text="""if you start something in a kernel,""" start="00:05:10.840" video="qanda-python" id="subtitle"]]
+[[!template text="""you will get this unique ID so you can connect to it.""" start="00:05:12.920" video="qanda-python" id="subtitle"]]
+[[!template text="""So that's kind of the difference.""" start="00:05:17.080" video="qanda-python" id="subtitle"]]
+[[!template text="""So I have two different ways""" start="00:05:19.680" video="qanda-python" id="subtitle"]]
+[[!template text="""of starting up the Python kernel. REPLs, either PyPython,""" start="00:05:21.640" video="qanda-python" id="subtitle"]]
+[[!template text="""which I do for most of my daily work,""" start="00:05:26.600" video="qanda-python" id="subtitle"]]
+[[!template text="""or if I want this connection to a running app,""" start="00:05:29.560" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm using the Jupyter console, basically.""" start="00:05:32.240" video="qanda-python" id="subtitle"]]
+[[!template text="""Have you explored Org Babel at all?""" start="00:05:38.480" video="qanda-python" id="subtitle"]]
+[[!template text="""Can you talk about your approach""" start="00:05:45.200" video="qanda-python" id="subtitle"]]
+[[!template text="""compared to the Babel workflow? Oh, interesting.""" start="00:05:48.200" video="qanda-python" id="subtitle"]]
+[[!template text="""No, I haven't actually, I haven't done that,""" start="00:05:52.280" video="qanda-python" id="subtitle"]]
+[[!template text="""but I think it's similar to Jupyter notebooks,""" start="00:05:54.880" video="qanda-python" id="subtitle"]]
+[[!template text="""so you can do some interactive, you can run Python there,""" start="00:05:59.120" video="qanda-python" id="subtitle"]]
+[[!template text="""but I haven't,""" start="00:06:02.360" video="qanda-python" id="subtitle"]]
+[[!template text="""I have too little knowledge about it to elaborate on that.""" start="00:06:03.280" video="qanda-python" id="subtitle"]]
+[[!template text="""Sorry. Very good. All right.""" start="00:06:08.120" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm just going to peek over to the other chats""" start="00:06:24.160" video="qanda-python" id="subtitle"]]
+[[!template text="""and make sure I'm not missing questions.""" start="00:06:27.000" video="qanda-python" id="subtitle"]]
+[[!template text="""Sorry, I got a lot of screens. A little dance here.""" start="00:06:28.840" video="qanda-python" id="subtitle"]]
+[[!template text="""All right, and I do see a few people in the chat.""" start="00:06:35.520" video="qanda-python" id="subtitle"]]
+[[!template text="""I'll just say again, if you've joined us on the BBB,""" start="00:06:41.240" video="qanda-python" id="subtitle"]]
+[[!template text="""you're more than welcome to jump in with your questions""" start="00:06:44.560" video="qanda-python" id="subtitle"]]
+[[!template text="""or put questions into the chat here.""" start="00:06:47.000" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm not a big Python person,""" start="00:06:50.120" video="qanda-python" id="subtitle"]]
+[[!template text="""so I can't get into the really interesting questions""" start="00:06:52.880" video="qanda-python" id="subtitle"]]
+[[!template text="""that are probably more relevant,""" start="00:06:57.600" video="qanda-python" id="subtitle"]]
+[[!template text="""just because a lot of it's kind of over my head.""" start="00:07:01.640" video="qanda-python" id="subtitle"]]
+[[!template text="""Have you seen the miramo.io notebooks?""" start="00:07:05.800" video="qanda-python" id="subtitle"]]
+[[!template text="""These use standard Python?""" start="00:07:12.880" video="qanda-python" id="subtitle"]]
+[[!template text="""Oh, yes, I've seen, I haven't tried it myself,""" start="00:07:15.280" video="qanda-python" id="subtitle"]]
+[[!template text="""but I've seen it.""" start="00:07:18.120" video="qanda-python" id="subtitle"]]
+[[!template text="""It's very, I think it's a very interesting approach""" start="00:07:19.360" video="qanda-python" id="subtitle"]]
+[[!template text="""that probably will solve a lot of these things""" start="00:07:22.640" video="qanda-python" id="subtitle"]]
+[[!template text="""with interactive development in general,""" start="00:07:26.280" video="qanda-python" id="subtitle"]]
+[[!template text="""but because I think it's basically Python files""" start="00:07:28.840" video="qanda-python" id="subtitle"]]
+[[!template text="""and not the, not this other file format that you have""" start="00:07:31.840" video="qanda-python" id="subtitle"]]
+[[!template text="""for the regular notebook setup.""" start="00:07:36.440" video="qanda-python" id="subtitle"]]
+[[!template text="""So I have that in my list of things to try out in future,""" start="00:07:40.800" video="qanda-python" id="subtitle"]]
+[[!template text="""but it looks really, really cool. Awesome.""" start="00:07:45.560" video="qanda-python" id="subtitle"]]
+[[!template text="""Yeah, I'm hesitant to just ask you really boilerplate questions.""" start="00:08:00.720" video="qanda-python" id="subtitle"]]
+[[!template text="""You get an expert, a souffle chef,""" start="00:08:06.720" video="qanda-python" id="subtitle"]]
+[[!template text="""and you ask about making pasta or some other sort of thing.""" start="00:08:11.240" video="qanda-python" id="subtitle"]]
+[[!template text="""No, go ahead. Go ahead. I'm glad to ask any questions.""" start="00:08:16.600" video="qanda-python" id="subtitle"]]
+[[!template text="""So just generally about Emacs as a coding developer,""" start="00:08:20.560" video="qanda-python" id="subtitle"]]
+[[!template text="""what are the features""" start="00:08:25.680" video="qanda-python" id="subtitle"]]
+[[!template text="""that you tend to lean on more heavily?""" start="00:08:27.000" video="qanda-python" id="subtitle"]]
+[[!template text="""you know completion or you know what what have you""" start="00:08:28.480" video="qanda-python" id="subtitle"]]
+[[!template text="""maybe I could put it better""" start="00:08:34.320" video="qanda-python" id="subtitle"]]
+[[!template text="""as what have you spent more time configuring for Emacs""" start="00:08:36.200" video="qanda-python" id="subtitle"]]
+[[!template text="""to facilitate development?""" start="00:08:40.080" video="qanda-python" id="subtitle"]]
+[[!template text="""Yes initially it was basically taking away""" start="00:08:45.440" video="qanda-python" id="subtitle"]]
+[[!template text="""some of the UI features""" start="00:08:49.640" video="qanda-python" id="subtitle"]]
+[[!template text="""basically disabling it and and but fairly quickly""" start="00:08:51.320" video="qanda-python" id="subtitle"]]
+[[!template text="""for for both closure development""" start="00:08:56.600" video="qanda-python" id="subtitle"]]
+[[!template text="""where i was using cider which is like a really good uh good tool um""" start="00:08:58.920" video="qanda-python" id="subtitle"]]
+[[!template text="""and for python when i quickly found lp elp""" start="00:09:04.600" video="qanda-python" id="subtitle"]]
+[[!template text="""i'm not sure how to pronounce it""" start="00:09:08.160" video="qanda-python" id="subtitle"]]
+[[!template text="""but you you get so much uh good things from these tools""" start="00:09:10.600" video="qanda-python" id="subtitle"]]
+[[!template text="""so what i've done additionally is like theme""" start="00:09:16.040" video="qanda-python" id="subtitle"]]
+[[!template text="""and maybe having this environment""" start="00:09:21.720" video="qanda-python" id="subtitle"]]
+[[!template text="""that is without disturbance.""" start="00:09:27.160" video="qanda-python" id="subtitle"]]
+[[!template text="""So I really like the code to have my full attention.""" start="00:09:31.480" video="qanda-python" id="subtitle"]]
+[[!template text="""So I rarely have, maybe I have like a preview sometimes,""" start="00:09:34.840" video="qanda-python" id="subtitle"]]
+[[!template text="""but mostly it's the window or the buffer where I have my code""" start="00:09:41.240" video="qanda-python" id="subtitle"]]
+[[!template text="""and I've minimized the running REPL buffer.""" start="00:09:45.360" video="qanda-python" id="subtitle"]]
+[[!template text="""So sometimes it's, I'm hiding it, but it's still active.""" start="00:09:49.880" video="qanda-python" id="subtitle"]]
+[[!template text="""So basically that's how I configured,""" start="00:09:53.440" video="qanda-python" id="subtitle"]]
+[[!template text="""spent my configuration doing that.""" start="00:09:57.680" video="qanda-python" id="subtitle"]]
+[[!template text="""And also lately, trying out some LLM tools.""" start="00:10:00.280" video="qanda-python" id="subtitle"]]
+[[!template text="""So I think I have two packages""" start="00:10:04.800" video="qanda-python" id="subtitle"]]
+[[!template text="""that I'm using actively today.""" start="00:10:09.280" video="qanda-python" id="subtitle"]]
+[[!template text="""And my favorite is a tool called ECA,""" start="00:10:12.240" video="qanda-python" id="subtitle"]]
+[[!template text="""which is a LLM chat assistant, which is really good.""" start="00:10:15.800" video="qanda-python" id="subtitle"]]
+[[!template text="""The developer is also an Emacs enthusiast.""" start="00:10:20.200" video="qanda-python" id="subtitle"]]
+[[!template text="""So are you the type of person that tends to work with""" start="00:10:24.400" video="qanda-python" id="subtitle"]]
+[[!template text="""like a master builder, build your own Emacs?""" start="00:10:33.640" video="qanda-python" id="subtitle"]]
+[[!template text="""Are you using the system packages?""" start="00:10:37.040" video="qanda-python" id="subtitle"]]
+[[!template text="""What's your approach to just get Emacs""" start="00:10:40.800" video="qanda-python" id="subtitle"]]
+[[!template text="""up and off the ground for yourself?""" start="00:10:43.616" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm not there yet with doing my own builds.""" start="00:10:45.369" video="qanda-python" id="subtitle"]]
+[[!template text="""Currently, I'm on macOS,""" start="00:10:52.520" video="qanda-python" id="subtitle"]]
+[[!template text="""so I'm installing Emacs through broom basically, homebrew.""" start="00:10:55.600" video="qanda-python" id="subtitle"]]
+[[!template text="""I've yet so much Emacs things to learn""" start="00:11:00.040" video="qanda-python" id="subtitle"]]
+[[!template text="""because I'm not even using org yet.""" start="00:11:04.920" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm exploring the this editor.""" start="00:11:07.740" video="qanda-python" id="subtitle"]]
+[[!template text="""So I feel like I'm very much a beginner.""" start="00:11:11.560" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm not using Emacs to its full potential yet.""" start="00:11:14.800" video="qanda-python" id="subtitle"]]
+[[!template text="""So I'm counting on that I will be more and more using Emacs""" start="00:11:17.920" video="qanda-python" id="subtitle"]]
+[[!template text="""for more and more different tasks basically.""" start="00:11:23.280" video="qanda-python" id="subtitle"]]
+[[!template text="""And I'm just seeing a comment.""" start="00:11:29.120" video="qanda-python" id="subtitle"]]
+[[!template text="""Ed Stallthroat says, thank you""" start="00:11:32.560" video="qanda-python" id="subtitle"]]
+[[!template text="""for publishing your configuration and offers a link.""" start="00:11:35.800" video="qanda-python" id="subtitle"]]
+[[!template text="""Oh, great. Great.""" start="00:11:40.840" video="qanda-python" id="subtitle"]]
+[[!template text="""Yes, those things that I showed in my talk,""" start="00:11:41.880" video="qanda-python" id="subtitle"]]
+[[!template text="""I haven't made any, I haven't packaged it yet,""" start="00:11:46.360" video="qanda-python" id="subtitle"]]
+[[!template text="""but everything is on my GitHub,""" start="00:11:49.320" video="qanda-python" id="subtitle"]]
+[[!template text="""and I've tried to separate each feature""" start="00:11:51.200" video="qanda-python" id="subtitle"]]
+[[!template text="""in separate LSP files.""" start="00:11:57.080" video="qanda-python" id="subtitle"]]
+[[!template text="""So it should be, I hope that it's fairly straightforward""" start="00:11:59.640" video="qanda-python" id="subtitle"]]
+[[!template text="""to understand how it's set up. Very good.""" start="00:12:04.320" video="qanda-python" id="subtitle"]]
+[[!template text="""Let me just scroll down,""" start="00:12:08.960" video="qanda-python" id="subtitle"]]
+[[!template text="""make sure I'm not missing questions here.""" start="00:12:11.120" video="qanda-python" id="subtitle"]]
+[[!template text="""Okay, I think those are the questions that we have.""" start="00:12:13.000" video="qanda-python" id="subtitle"]]
+[[!template text="""We can take a couple more minutes if you're open to that,""" start="00:12:16.960" video="qanda-python" id="subtitle"]]
+[[!template text="""just for people to consider.""" start="00:12:20.880" video="qanda-python" id="subtitle"]]
+[[!template text="""I know we're coming up on the lunch hour,""" start="00:12:24.040" video="qanda-python" id="subtitle"]]
+[[!template text="""so it may be that people are jogging off to get some food.""" start="00:12:26.120" video="qanda-python" id="subtitle"]]
+[[!template text="""Yeah, in Sweden, it's dinner time.""" start="00:12:31.680" video="qanda-python" id="subtitle"]]
+[[!template text="""It's like 6 p.m. soon. That fits.""" start="00:12:36.600" video="qanda-python" id="subtitle"]]
+[[!template text="""So are you involved with local Emacs meetups?""" start="00:12:40.080" video="qanda-python" id="subtitle"]]
+[[!template text="""I know that your part of the world""" start="00:12:46.440" video="qanda-python" id="subtitle"]]
+[[!template text="""has a really brisk community,""" start="00:12:49.080" video="qanda-python" id="subtitle"]]
+[[!template text="""you know, a lot of, just a lot going on.""" start="00:12:51.800" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm always seeing in Sacha's Emacs News,""" start="00:12:55.280" video="qanda-python" id="subtitle"]]
+[[!template text="""all of the different meetups and so on.""" start="00:12:58.800" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm curious if you're plugged""" start="00:13:02.320" video="qanda-python" id="subtitle"]]
+[[!template text="""into a local community there at all, No, I haven't.""" start="00:13:03.520" video="qanda-python" id="subtitle"]]
+[[!template text="""Not in any community. I haven't done that yet,""" start="00:13:08.720" video="qanda-python" id="subtitle"]]
+[[!template text="""but we are like friends that I've gotten to know""" start="00:13:10.760" video="qanda-python" id="subtitle"]]
+[[!template text="""through work and through like open source work that also use Emacs.""" start="00:13:15.680" video="qanda-python" id="subtitle"]]
+[[!template text="""We talk and share our conflicts""" start="00:13:23.440" video="qanda-python" id="subtitle"]]
+[[!template text="""basically on a regular basis,""" start="00:13:28.960" video="qanda-python" id="subtitle"]]
+[[!template text="""because we are, at least in the Python community,""" start="00:13:30.800" video="qanda-python" id="subtitle"]]
+[[!template text="""we're like a minority,""" start="00:13:36.000" video="qanda-python" id="subtitle"]]
+[[!template text="""like other editors are like the standards.""" start="00:13:37.400" video="qanda-python" id="subtitle"]]
+[[!template text="""And at work, I'm sharing what I'm doing,""" start="00:13:39.800" video="qanda-python" id="subtitle"]]
+[[!template text="""just like my talk here to my fellow co-workers""" start="00:13:45.880" video="qanda-python" id="subtitle"]]
+[[!template text="""that are not on Emacs, but I hope to get their interest up.""" start="00:13:48.680" video="qanda-python" id="subtitle"]]
+[[!template text="""So many of us Emacs users are Emacs evangelists.""" start="00:13:54.000" video="qanda-python" id="subtitle"]]
+[[!template text="""Yeah. It's the Venn diagram of Emacs user""" start="00:13:59.000" video="qanda-python" id="subtitle"]]
+[[!template text="""and Emacs evangelist is a circle, I think.""" start="00:14:06.202" video="qanda-python" id="subtitle"]]
+[[!template text="""Yeah, I think so too.""" start="00:14:08.869" video="qanda-python" id="subtitle"]]
+[[!template text="""Well, David, I super appreciate your talk""" start="00:14:11.036" video="qanda-python" id="subtitle"]]
+[[!template text="""and thank you so much also for...""" start="00:14:16.560" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm sorry, I saw another question here. Let me cover that.""" start="00:14:18.760" video="qanda-python" id="subtitle"]]
+[[!template text="""Can you repeat the name of the LLM""" start="00:14:24.640" video="qanda-python" id="subtitle"]]
+[[!template text="""that you specifically mentioned there?""" start="00:14:27.960" video="qanda-python" id="subtitle"]]
+[[!template text="""Oh, it's a tool called ECA, E-C-A.""" start="00:14:30.320" video="qanda-python" id="subtitle"]]
+[[!template text="""It's basically a server and clients,""" start="00:14:36.785" video="qanda-python" id="subtitle"]]
+[[!template text="""and it's not only Emacs. It has support for other editors,""" start="00:14:44.077" video="qanda-python" id="subtitle"]]
+[[!template text="""but I think the primary support is for,""" start="00:14:49.161" video="qanda-python" id="subtitle"]]
+[[!template text="""at least the developer who does it is an Emacs user,""" start="00:14:53.120" video="qanda-python" id="subtitle"]]
+[[!template text="""and so it's like Emacs first, basically.""" start="00:14:57.600" video="qanda-python" id="subtitle"]]
+[[!template text="""And his name is Eric Dallo.""" start="00:15:01.040" video="qanda-python" id="subtitle"]]
+[[!template text="""He's a great developer in the Clojure community.""" start="00:15:04.960" video="qanda-python" id="subtitle"]]
+[[!template text="""He has done some LSP work in the Clojure world, too.""" start="00:15:09.680" video="qanda-python" id="subtitle"]]
+[[!template text="""What was the last name? What was Eric's last name?""" start="00:15:13.160" video="qanda-python" id="subtitle"]]
+[[!template text="""Eric Dallo, D-A-L-L-O. Yeah.""" start="00:15:17.160" video="qanda-python" id="subtitle"]]
+[[!template text="""So I think that's a great tool, but I also use another tool""" start="00:15:23.920" video="qanda-python" id="subtitle"]]
+[[!template text="""that for some reason I forgot to have this interactive way of,""" start="00:15:31.880" video="qanda-python" id="subtitle"]]
+[[!template text="""because I think they are developing that feature too,""" start="00:15:38.920" video="qanda-python" id="subtitle"]]
+[[!template text="""but I have another LLM that has support""" start="00:15:43.600" video="qanda-python" id="subtitle"]]
+[[!template text="""for requests and callbacks basically.""" start="00:15:46.440" video="qanda-python" id="subtitle"]]
+[[!template text="""So you can do something programmatically.""" start="00:15:50.600" video="qanda-python" id="subtitle"]]
+[[!template text="""So that's how I've solved my LLM thing""" start="00:15:53.800" video="qanda-python" id="subtitle"]]
+[[!template text="""where I select some Python variables""" start="00:15:55.920" video="qanda-python" id="subtitle"]]
+[[!template text="""and tell the LLM to populate it with some fake data""" start="00:16:00.760" video="qanda-python" id="subtitle"]]
+[[!template text="""so I can send that to the REPL.""" start="00:16:05.600" video="qanda-python" id="subtitle"]]
+[[!template text="""But for some reason, I forgot the name of it.""" start="00:16:08.880" video="qanda-python" id="subtitle"]]
+[[!template text="""I can look it up. Just give me one minute, sorry.""" start="00:16:11.480" video="qanda-python" id="subtitle"]]
+[[!template text="""oh yeah gptel gptel that's that's the name of the other tool""" start="00:16:25.160" video="qanda-python" id="subtitle"]]
+[[!template text="""which is uh also a good tool yeah""" start="00:16:35.560" video="qanda-python" id="subtitle"]]
+[[!template text="""but ECA is more like a more chat companion""" start="00:16:37.880" video="qanda-python" id="subtitle"]]
+[[!template text="""and this you can also you can tell it to write code and things like that""" start="00:16:41.280" video="qanda-python" id="subtitle"]]
+[[!template text="""but i mostly use it for reviews and research""" start="00:16:46.680" video="qanda-python" id="subtitle"]]
+[[!template text="""and like asking questions""" start="00:16:51.680" video="qanda-python" id="subtitle"]]
+[[!template text="""because i want to my I don't have a problem with typing code.""" start="00:16:54.600" video="qanda-python" id="subtitle"]]
+[[!template text="""I don't think that slows me down,""" start="00:17:00.280" video="qanda-python" id="subtitle"]]
+[[!template text="""but maybe getting some quick feedback""" start="00:17:01.920" video="qanda-python" id="subtitle"]]
+[[!template text="""on the actual work that I'm doing,""" start="00:17:05.640" video="qanda-python" id="subtitle"]]
+[[!template text="""that's what I'm using LLM for,""" start="00:17:07.480" video="qanda-python" id="subtitle"]]
+[[!template text="""on LLM for two, mostly today. That really hits for me.""" start="00:17:09.000" video="qanda-python" id="subtitle"]]
+[[!template text="""I don't mind typing either.""" start="00:17:13.520" video="qanda-python" id="subtitle"]]
+[[!template text="""I think somehow having things be so simple""" start="00:17:15.200" video="qanda-python" id="subtitle"]]
+[[!template text="""and in many cases just automated,""" start="00:17:18.480" video="qanda-python" id="subtitle"]]
+[[!template text="""Emacs just does the right thing.""" start="00:17:20.880" video="qanda-python" id="subtitle"]]
+[[!template text="""It makes me hungry to type. I want to type more.""" start="00:17:22.720" video="qanda-python" id="subtitle"]]
+[[!template text="""It feels like every keystroke does a little more.""" start="00:17:26.520" video="qanda-python" id="subtitle"]]
+[[!template text="""Speaking of evangelism, thank you. Thank you""" start="00:17:28.560" video="qanda-python" id="subtitle"]]
+[[!template text="""pop up for the for the question.""" start="00:17:33.520" video="qanda-python" id="subtitle"]]
+[[!template text="""I'm just going to peek one more time through""" start="00:17:35.600" video="qanda-python" id="subtitle"]]
+[[!template text="""and I don't see a backlog.""" start="00:17:39.440" video="qanda-python" id="subtitle"]]
+[[!template text="""There are a couple more comments here""" start="00:17:41.160" video="qanda-python" id="subtitle"]]
+[[!template text="""linking linking to the ECA Emacs and gptel.""" start="00:17:44.520" video="qanda-python" id="subtitle"]]
+[[!template text="""Comment also saying very cool setup.""" start="00:17:49.320" video="qanda-python" id="subtitle"]]
+[[!template text="""So I suppose I'll I'll hand it over to you""" start="00:17:52.240" video="qanda-python" id="subtitle"]]
+[[!template text="""if you have kind of final thoughts or.""" start="00:17:56.960" video="qanda-python" id="subtitle"]]
+[[!template text="""additional wisdoms you want to share""" start="00:17:59.320" video="qanda-python" id="subtitle"]]
+[[!template text="""I really appreciate your taking the time to prepare this presentation""" start="00:18:02.080" video="qanda-python" id="subtitle"]]
+[[!template text="""especially to do the live Q&A with us. Thank you""" start="00:18:05.400" video="qanda-python" id="subtitle"]]
+[[!template text="""and I haven't anything more than that I will""" start="00:18:11.080" video="qanda-python" id="subtitle"]]
+[[!template text="""of course I will continue like have evolving my setup""" start="00:18:13.920" video="qanda-python" id="subtitle"]]
+[[!template text="""because there's like new tools""" start="00:18:19.480" video="qanda-python" id="subtitle"]]
+[[!template text="""and maybe new ideas also coming up""" start="00:18:21.360" video="qanda-python" id="subtitle"]]
+[[!template text="""and my What I'm aiming for in Python development""" start="00:18:24.760" video="qanda-python" id="subtitle"]]
+[[!template text="""is the great developer experience""" start="00:18:28.720" video="qanda-python" id="subtitle"]]
+[[!template text="""of what's called Lisp programming, basically.""" start="00:18:30.480" video="qanda-python" id="subtitle"]]
+[[!template text="""So that's what I'm aiming at for Python 2.""" start="00:18:34.520" video="qanda-python" id="subtitle"]]
+[[!template text="""Thank you. Thank you so much.""" start="00:18:41.700" video="qanda-python" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20python%3A%20Interactive%20Python%20programming%20in%20Emacs)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/python-before.md b/2025/info/python-before.md
new file mode 100644
index 00000000..46318789
--- /dev/null
+++ b/2025/info/python-before.md
@@ -0,0 +1,19 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-python>
+Etherpad: <https://pad.emacsconf.org/2025-python>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-python"><source src="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 19:52 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-python">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--main.webm">Download --main.webm (37MB)</a></li><li><a href="https://youtu.be/uACM4a5MPQM">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-python"><source src="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:10 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-python">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.m4v">Download --answers.m4v (75MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-python--interactive-python-programming-in-emacs--david-vujic--answers.webm">Download --answers.webm (71MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/python-nav.md b/2025/info/python-nav.md
new file mode 100644
index 00000000..d1d02d06
--- /dev/null
+++ b/2025/info/python-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/swanky">Swanky Python: Interactive development for Python</a>
+Next by track: <a href="/2025/talks/llm">Emacs, editors, and LLM driven workflows</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/reader-after.md b/2025/info/reader-after.md
new file mode 100644
index 00000000..d6e736d0
--- /dev/null
+++ b/2025/info/reader-after.md
@@ -0,0 +1,1192 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="reader-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""An introduction to the Emacs reader""" start="00:00:00.720" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Hello EmacsConf!""" start="00:00:00.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Today I'm here to introduce you to the Emacs Reader.""" start="00:00:02.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It is a general-purpose document viewer""" start="00:00:06.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that lives inside our beloved Emacs.""" start="00:00:08.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It tries to prioritize memory""" start="00:00:12.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and performance efficiency as much as possible""" start="00:00:14.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""even when you're using a lower-end hardware.""" start="00:00:17.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And, most importantly,""" start="00:00:20.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it tries to do things in an Emacs manner.""" start="00:00:22.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That is, it tries to integrate""" start="00:00:25.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""with existing packages as much as possible""" start="00:00:27.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""instead of reinventing the wheel.""" start="00:00:29.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And architecturally, it tries to take the advantage""" start="00:00:32.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""of dynamic or native modules""" start="00:00:36.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which were introduced back in 2015 into Emacs.""" start="00:00:38.480" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Yet another document viewer in Emacs?""" start="00:00:44.760" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""You would ask, why exactly do we need""" start="00:00:44.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""another document viewer in Emacs?""" start="00:00:46.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Don't we already have the built-in DocView""" start="00:00:49.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and the notorious pdf-tools?""" start="00:00:51.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Well, the built-in DocView has unusable latency,""" start="00:00:55.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and I'm going to show you this later""" start="00:00:59.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""when I compare this with Emacs Reader.""" start="00:01:01.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The famous pdf-tools has actually multiple issues.""" start="00:01:04.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""One, it is extremely memory-hungry""" start="00:01:08.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""regardless of what kind of PDFs you're reading.""" start="00:01:10.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And, well, it can only read PDFs.""" start="00:01:14.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Poppler, the library which pdf-tools uses,""" start="00:01:17.940" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is actually sub-optimal,""" start="00:01:22.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""especially relative to MuPDF,""" start="00:01:23.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which is what Emacs Reader is based on.""" start="00:01:25.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""pdf-tools is also extremely painful to install.""" start="00:01:28.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""If you've ever installed pdf-tools,""" start="00:01:31.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you know that it has a bunch of dependencies,""" start="00:01:34.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""including a server that is supposedly packaged.""" start="00:01:38.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""across package managers, system package managers.""" start="00:01:42.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It's extremely difficult to install""" start="00:01:45.062" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and painful to install.""" start="00:01:47.738" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And of course, pdf-tools""" start="00:01:50.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""since the last couple of years""" start="00:01:52.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""has not been maintained as much.""" start="00:01:54.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""There's huge PRs that have been unnoticed and unmerged.""" start="00:01:56.560" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Architecture of Emacs Reader""" start="00:02:05.760" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Architecturally, Emacs Reader takes a distance""" start="00:02:05.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""from both DocView and pdf-tools.""" start="00:02:09.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So how DocView works is that""" start="00:02:12.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it basically wraps around""" start="00:02:15.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a tool called mutool.""" start="00:02:18.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""mutool is actually""" start="00:02:20.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a command line tool from MuPDF itself.""" start="00:02:22.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It relies on mutool and a bunch""" start="00:02:26.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""of other similar command line tools,""" start="00:02:28.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and basically makes process calls""" start="00:02:30.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""from Elisp to the CLI tools.""" start="00:02:34.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That's how DocView works,""" start="00:02:36.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and that's why it sort of has latency issues""" start="00:02:38.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because that's the best you can do""" start="00:02:41.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""by literally calling CLI tools""" start="00:02:42.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and outputting the images into Emacs.""" start="00:02:45.020" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""How pdf-tools works is that it tries""" start="00:02:50.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to have a server-client model.""" start="00:02:55.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So the client is Emacs""" start="00:02:57.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and the server is basically""" start="00:02:59.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""something they call epdfinfo.""" start="00:03:00.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It's supposed to render the images using Poppler""" start="00:03:03.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and then send the images to Emacs""" start="00:03:07.241" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which then tries to display.""" start="00:03:10.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I think the server client model is terrible.""" start="00:03:13.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""One, for latency purposes,""" start="00:03:16.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and two, it makes things""" start="00:03:18.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""unnecessarily more complicated.""" start="00:03:19.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Here is where we come""" start="00:03:21.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and introduce dynamic modules.""" start="00:03:24.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So Emacs Reader is based on""" start="00:03:26.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the concept of dynamic modules""" start="00:03:30.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which I'm going to talk about in a bit.""" start="00:03:32.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""But how it works is that we have C modules.""" start="00:03:34.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we have the emacs-module.h,""" start="00:03:37.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that's the dynamic module header""" start="00:03:39.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which every dynamic module package must have.""" start="00:03:40.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And then we have our C files.""" start="00:03:43.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And these C files essentially define functions""" start="00:03:45.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that are going to be used in Emacs but in C.""" start="00:03:52.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We then load these C modules""" start="00:03:56.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""using simple (require ...) in our Elisp modules.""" start="00:03:59.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And then whenever we call""" start="00:04:03.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""something in the Emacs runtime,""" start="00:04:05.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""say I'm going to open""" start="00:04:07.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""PDF files in (find-file) or (reader-open-doc),""" start="00:04:09.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""what it does is that""" start="00:04:13.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it tries to use one of the functions""" start="00:04:15.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that is wrapped in Elisp,""" start="00:04:19.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but actually tries to call a function in C.""" start="00:04:21.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And then the C module is actually""" start="00:04:24.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""going to make calls to the MuPDF.""" start="00:04:26.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Here the MuPDF system package,""" start="00:04:29.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""this is actually a system package""" start="00:04:31.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that is dynamically linked to the C modules.""" start="00:04:33.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we're basically""" start="00:04:35.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just using it as a shared library.""" start="00:04:36.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you have the fz_load_page, for example,""" start="00:04:39.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it's a MuPDF function""" start="00:04:43.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that we're going to be using in the C modules.""" start="00:04:44.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So it's going to make""" start="00:04:47.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a shared dynamic call to MuPDF""" start="00:04:50.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and then render the page""" start="00:04:53.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and then show this to Emacs.""" start="00:04:55.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This pipeline, I argue,""" start="00:04:59.180" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is much better and leaner and efficient""" start="00:05:01.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""than a server-client model.""" start="00:05:05.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""One, because we don't really need""" start="00:05:07.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the server-client model.""" start="00:05:09.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So back when Politza""" start="00:05:10.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""first introduced pdf-tools,""" start="00:05:12.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that was like 10 years ago in 2015,""" start="00:05:14.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the concept of dynamic modules""" start="00:05:19.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""were not integrated into Emacs.""" start="00:05:21.241" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I think they came around""" start="00:05:23.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""like one or two years late, 2017.""" start="00:05:24.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So that's the best he could go with.""" start="00:05:28.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We don't really have to, today,""" start="00:05:31.220" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because, since we can use MuPDF""" start="00:05:33.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as a shared library""" start="00:05:35.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which can render things in real-time""" start="00:05:37.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and just give us the rendered images""" start="00:05:39.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which we can then display,""" start="00:05:41.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""there's no reason for a server to do things for us.""" start="00:05:43.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So that's the main architectural difference""" start="00:05:49.660" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that Emacs Reader introduces""" start="00:05:53.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""compared to pdf-tools and DocView.""" start="00:05:55.480" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""A word on dynamic modules""" start="00:06:00.280" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""What exactly are dynamic modules?""" start="00:06:00.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Well, I can't really give you""" start="00:06:02.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a full-fledged explanation,""" start="00:06:04.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but essentially dynamic modules""" start="00:06:06.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""let you evaluate""" start="00:06:08.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""native compiled code""" start="00:06:10.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in other languages like C, C++, Rust""" start="00:06:12.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that behaves like regular Emacs Lisp.""" start="00:06:15.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So when our Emacs C modules,""" start="00:06:18.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the render-core.c or render-theme.c,""" start="00:06:23.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""when all of these are compiled,""" start="00:06:26.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and they're called from the Elisp modules.""" start="00:06:28.300" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""They behave like Elisp even though""" start="00:06:30.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""they're as fast as a C function""" start="00:06:34.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because they're compiled C code.""" start="00:06:37.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""But you essentially call them""" start="00:06:39.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just like Elisp functions.""" start="00:06:41.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can find them using C-h f and so on.""" start="00:06:42.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you can call any function""" start="00:06:47.820" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""from any language that supports""" start="00:06:49.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the C ABI, which is virtually everything,""" start="00:06:51.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""without leaving Emacs""" start="00:06:53.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and without losing any performance.""" start="00:06:54.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This is extremely helpful""" start="00:06:56.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""when you want to use""" start="00:06:58.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""existing libraries like MuPDF""" start="00:06:59.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""or any other cryptographic library""" start="00:07:02.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that is written in C""" start="00:07:04.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and you don't want to rewrite""" start="00:07:06.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the entire thing in Elisp,""" start="00:07:07.038" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but you can just use it as a native library.""" start="00:07:08.538" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can read more""" start="00:07:11.740" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""on how dynamic modules work""" start="00:07:13.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and how you can write one in this blog.""" start="00:07:14.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This is something that I wrote myself""" start="00:07:17.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just after starting this package""" start="00:07:19.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it will give you a bit more guidance""" start="00:07:22.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""on how to use dynamic modules more efficiently.""" start="00:07:25.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I think dynamic modules""" start="00:07:27.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""should be used more and more in Emacs""" start="00:07:28.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and I think their advantages""" start="00:07:32.300" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""have not been exploited""" start="00:07:34.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as much as they should.""" start="00:07:36.080" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Features of Emacs Reader""" start="00:07:39.560" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Now we're going to talk a bit about""" start="00:07:39.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the core features of Emacs Reader.""" start="00:07:42.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And these are the following features""" start="00:07:46.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that we're going to talk about.""" start="00:07:48.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And finally, to talk about""" start="00:07:50.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""some challenges that we faced.""" start="00:07:51.960" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Memory efficiency""" start="00:07:56.760" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""First is memory efficiency.""" start="00:07:56.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I already told you that""" start="00:07:58.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs Reader's first priority""" start="00:08:00.820" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is to make sure that we are not slow""" start="00:08:03.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and we are not taking""" start="00:08:06.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a bunch of memory unnecessarily.""" start="00:08:07.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So here's a graph of the heap memory size""" start="00:08:10.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as it grows for DocView.""" start="00:08:14.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So this is again in emacs -Q.""" start="00:08:17.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So this is a fresh Emacs session""" start="00:08:20.638" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""with just DocView.""" start="00:08:22.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It grows up to 900MB""" start="00:08:25.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for a very small PDF that is a LaTeX PDF.""" start="00:08:27.820" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""No scanned huge PDF. It's a 2MB PDF.""" start="00:08:31.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""But when I scrolled from the beginning""" start="00:08:36.780" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""of the PDF to the end,""" start="00:08:39.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it went up to 900MB.""" start="00:08:41.620" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That's the memory heap size.""" start="00:08:43.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Does pdf-tools make this any better?""" start="00:08:46.820" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It actually doesn't.""" start="00:08:49.700" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So, pdf-tools pretty much""" start="00:08:51.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""does the same thing.""" start="00:08:55.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""if you look at it here""" start="00:08:57.220" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just so if you're going to ask me""" start="00:08:58.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""are they two different graphs,""" start="00:09:01.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""or are you just showing me the same graph,""" start="00:09:02.940" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""they're actually two different graphs,""" start="00:09:04.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because if you look at the DocView graph""" start="00:09:06.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it uses cairo and it uses librsvg""" start="00:09:08.780" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because docview by default""" start="00:09:11.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""converts the images into SVG.""" start="00:09:13.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The rendered images are SVGs.""" start="00:09:16.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""pdf-tools doesn't, so you don't see""" start="00:09:18.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""any librsvg calls here or anything""" start="00:09:20.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So this is pdf-tools""" start="00:09:24.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it basically takes up""" start="00:09:25.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the same amount of memory, 900MB,""" start="00:09:27.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and exactly the same operation,""" start="00:09:29.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""exactly the same PDF,""" start="00:09:30.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""exactly scrolling from first to the last.""" start="00:09:32.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Where do we stand?""" start="00:09:36.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Well, we actually do much better.""" start="00:09:37.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So let me zoom in this.""" start="00:09:40.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So if you see, we stand within""" start="00:09:42.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""at a peak of 72MB.""" start="00:09:46.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Exactly the same PDF,""" start="00:09:49.260" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""exactly the same operation""" start="00:09:51.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""from the beginning to the end,""" start="00:09:53.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""around 285 pages scrolled.""" start="00:09:54.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We take much less than 80 MB.""" start="00:09:57.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And actually, to be very frank,""" start="00:10:03.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the only memory that we're storing in Emacs,""" start="00:10:05.072" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""oh, sorry, not in Emacs,""" start="00:10:09.205" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in the MuPDF heap is just about 30 MB.""" start="00:10:12.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It's this dark red one.""" start="00:10:16.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That's the cache that we're storing.""" start="00:10:19.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That's the memory that we're interacting with""" start="00:10:22.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in real time.""" start="00:10:24.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This is stuff that Emacs adds on top of it""" start="00:10:25.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and a bit of libmupdf.""" start="00:10:29.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you can see, in terms of memory,""" start="00:10:32.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we're saving...""" start="00:10:35.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we're literally down,""" start="00:10:37.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""what, a fraction of 10!""" start="00:10:41.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This was a priority for us""" start="00:10:45.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""since the beginning,""" start="00:10:48.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because when I was starting to use pdf-tools,""" start="00:10:49.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it was unusable for me""" start="00:10:52.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because I was on a lower-end hardware""" start="00:10:53.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and I thought it should not be""" start="00:10:55.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""really that difficult""" start="00:10:57.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for a document reader""" start="00:10:58.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to not take a gigabyte of memory.""" start="00:11:00.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It really shouldn't because""" start="00:11:04.100" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you're not really doing that much,""" start="00:11:05.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you're just displaying images.""" start="00:11:07.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So that's how efficient""" start="00:11:10.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we are in terms of memory.""" start="00:11:12.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Let's see how efficient""" start="00:11:13.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we are in terms of speed.""" start="00:11:15.372" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Performance and speed""" start="00:11:18.720" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""So Emacs Reader is actually""" start="00:11:18.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as fast as pdf-tools,""" start="00:11:21.100" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it is actually""" start="00:11:23.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""way more faster than DocView.""" start="00:11:24.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""In some cases,""" start="00:11:27.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it actually beats existing""" start="00:11:28.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""standalone document readers and browsers.""" start="00:11:31.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So let's actually see this in action.""" start="00:11:34.860" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So here we are with""" start="00:11:41.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a few emacs -Q sessions.""" start="00:11:42.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I'm using emacs -Q so as to give you...""" start="00:11:46.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that this is actually""" start="00:11:50.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as less overhead possible.""" start="00:11:52.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we have first DocView.""" start="00:11:55.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""All of these tests""" start="00:11:57.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""are going to be done on the same PDF.""" start="00:12:01.138" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It's the documentation manual from MuPDF.""" start="00:12:03.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So if I scroll, this is fine.""" start="00:12:07.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I'm just pressing n""" start="00:12:10.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it seems to work fine.""" start="00:12:12.860" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""If I press and hold n,""" start="00:12:15.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I have pressed n and I'm holding.""" start="00:12:19.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And Emacs is stuck.""" start="00:12:21.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And it's going to stay stuck""" start="00:12:26.420" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because it's making calls""" start="00:12:27.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to the CLI tool that I said, mutool.""" start="00:12:28.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And after it's done getting stuck,""" start="00:12:31.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it is going to get back.""" start="00:12:35.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""As you can see, if you go back,""" start="00:12:40.180" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you're able to go back fine.""" start="00:12:43.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It does not get stuck""" start="00:12:45.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because what Emacs does""" start="00:12:46.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is it basically calls mutool,""" start="00:12:48.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""like fetches a bunch of pages,""" start="00:12:51.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""essentially all the pages""" start="00:12:53.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that you asked for it,""" start="00:12:54.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it puts them into the memory.""" start="00:12:56.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And that's it.""" start="00:12:59.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It puts them into the memory""" start="00:12:59.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and then scrolls through it.""" start="00:13:01.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So going back, you will most likely""" start="00:13:03.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""not have any stuck issues.""" start="00:13:05.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Sometimes you do""" start="00:13:07.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because some images do get GC'd.""" start="00:13:07.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""But that's the idea.""" start="00:13:10.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Whenever there's no image in memory,""" start="00:13:13.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it gets stuck.""" start="00:13:16.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And it gets stuck good.""" start="00:13:18.740" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That's DocView.""" start="00:13:21.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""pdf-tools is actually""" start="00:13:23.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""not problematic here.""" start="00:13:25.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""pdf-tools is extremely efficient""" start="00:13:27.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and extremely fast.""" start="00:13:29.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we can go through the pages""" start="00:13:30.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""without any issues.""" start="00:13:32.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We can zoom.""" start="00:13:34.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The zoom did get stuck a bit,""" start="00:13:37.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but that's relatively fine.""" start="00:13:39.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs Reader is exactly as fast""" start="00:13:44.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as pdf-tools here.""" start="00:13:46.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So this is pdf-view,""" start="00:13:49.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""this is Emacs Reader.""" start="00:13:50.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Let's scroll through the pages.""" start="00:13:51.860" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""As you can see, nothing is getting stuck""" start="00:13:55.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because we're not really waiting""" start="00:13:59.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for any tool to send us any images.""" start="00:14:00.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We just have a little cache""" start="00:14:06.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and we're scrolling through them""" start="00:14:08.300" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and rendering images in real time.""" start="00:14:09.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Zooming also works fine.""" start="00:14:13.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So, with regards to this,""" start="00:14:17.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we're in parity with pdf-tools.""" start="00:14:19.520" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Scanned PDFs""" start="00:14:23.680" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Now, where pdf-tools and actually""" start="00:14:23.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a lot of readers have issues""" start="00:14:26.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is when they're dealing with scanned PDF.""" start="00:14:28.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So, we have this PDF which is notorious""" start="00:14:32.500" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for being really difficult to render""" start="00:14:36.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because this is entirely built""" start="00:14:40.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""with scanned images.""" start="00:14:42.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This is the kind of PDF""" start="00:14:43.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that you get from Internet Archive.""" start="00:14:44.620" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This is essentially someone""" start="00:14:46.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""took photos of the book in a camera""" start="00:14:47.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and literally turned them into a PDF.""" start="00:14:50.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs Reader actually does not have""" start="00:14:56.660" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""any issues rendering this.""" start="00:14:58.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""As you can see, it renders it smoothly""" start="00:15:01.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and fine without any halts.""" start="00:15:05.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I can change Emacs even while it's doing so,""" start="00:15:09.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it does not have any issues.""" start="00:15:13.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""pdf-tools are the same.""" start="00:15:17.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""PDF also does not have any issues.""" start="00:15:20.072" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Sorry. Click pdf-view-mode.""" start="00:15:21.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""pdf-view (pdf-tools) is a bit slower""" start="00:15:26.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but does not have any issues. It works.""" start="00:15:29.860" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Here, actually, pdf-tools and Emacs Reader""" start="00:15:35.620" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""are more efficient than even browsers.""" start="00:15:40.701" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So, if I try to open""" start="00:15:46.100" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the same page in a browser,""" start="00:15:47.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I'm trying to scroll.""" start="00:15:50.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And after I've scrolled and I leave,""" start="00:15:52.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""scrolling is going to load""" start="00:15:54.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for a bunch of seconds""" start="00:15:58.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to give me the page.""" start="00:15:59.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It's more than five seconds,""" start="00:16:03.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as you can see,""" start="00:16:04.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and this is actually totally not usable.""" start="00:16:05.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""If you're going to read this book,""" start="00:16:08.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""an electromagnetics book,""" start="00:16:10.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you're going to have a terrible time""" start="00:16:12.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""reading this in a browser,""" start="00:16:13.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which is supposed to be""" start="00:16:14.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the fastest thing alive.""" start="00:16:15.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You sort of have the same experience""" start="00:16:17.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in Okular. So this is Okular.""" start="00:16:19.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""If I try to scroll through this,""" start="00:16:20.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it will do the same thing.""" start="00:16:22.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And while it is better than the browser,""" start="00:16:25.420" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it still takes a while""" start="00:16:28.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it still has, like, if you zoom,""" start="00:16:31.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you're going to have a bit of a delay.""" start="00:16:34.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You don't really face that in Emacs Reader.""" start="00:16:36.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We zoom in and out just fine.""" start="00:16:41.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And even with using mouse,""" start="00:16:45.260" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you can zoom in and out just fine.""" start="00:16:47.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So this is how Emacs Reader performs""" start="00:16:51.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in terms of speed with these other tools.""" start="00:16:54.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now we will go back to the original presentation.""" start="00:17:01.120" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""System-level multi-threading""" start="00:17:08.960" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Now, how exactly is Emacs Reader""" start="00:17:08.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""able to do a lot of this?""" start="00:17:11.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I wish I could sort of spend""" start="00:17:14.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""an entire session""" start="00:17:17.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just talking about this, but I can't.""" start="00:17:19.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So I'm just going to make this short.""" start="00:17:21.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""When you load Emacs Reader,""" start="00:17:22.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in the standard output,""" start="00:17:24.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it's going to say this:""" start="00:17:26.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that eight threads have been initialized.""" start="00:17:27.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now, what we did with Emacs here""" start="00:17:29.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is that we enabled""" start="00:17:32.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""system-level multithreading.""" start="00:17:33.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now, Emacs is not multithreaded.""" start="00:17:35.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We all know that notoriously.""" start="00:17:36.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It is single-threaded.""" start="00:17:38.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""But we don't really""" start="00:17:39.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""need Emacs to be multithreaded, though.""" start="00:17:41.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs does not need to be multithreaded.""" start="00:17:43.820" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""What needs to be multithreaded""" start="00:17:45.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is the rendering part""" start="00:17:47.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because that's the most expensive part.""" start="00:17:48.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""In Emacs, we're only just displaying images.""" start="00:17:50.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs itself does not have a PDF engine""" start="00:17:53.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that is rendering stuff.""" start="00:17:56.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""MuPDF is supposed to take care of that.""" start="00:17:57.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So if I can do multithreading""" start="00:18:00.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in the rendering pipeline,""" start="00:18:03.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that is when I'm rendering pages""" start="00:18:05.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""instead of displaying them,""" start="00:18:07.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that's fine for me because""" start="00:18:08.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the rendering part most of the time,""" start="00:18:10.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""especially in scanned PDFs,""" start="00:18:11.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is the most expensive part.""" start="00:18:12.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So if you look at this graph,""" start="00:18:14.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we have two parts here.""" start="00:18:16.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We have the display pipeline""" start="00:18:17.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and we have the rendering pipeline.""" start="00:18:19.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""In the display pipeline,""" start="00:18:22.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we have just the Emacs session""" start="00:18:23.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which has the reader loaded""" start="00:18:26.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and that's the main thread.""" start="00:18:29.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Then we have the rendering pipeline""" start="00:18:31.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which has the MuPDF system package""" start="00:18:33.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""dynamically linked.""" start="00:18:35.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So when you load Emacs Reader,""" start="00:18:38.460" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we initialize a thread pool with eight threads.""" start="00:18:40.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now what you do is let's say we are at page 50.""" start="00:18:45.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""At page 50, the Emacs Reader""" start="00:18:48.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""maintains a cache.""" start="00:18:51.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It's like a stack of pages""" start="00:18:54.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that we keep in memory all the time.""" start="00:18:56.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This cache is entirely outside of Emacs.""" start="00:18:58.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It is not inside Emacs environment.""" start="00:19:02.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It is in the C memory heap,""" start="00:19:04.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in the MuPDF memory heap""" start="00:19:07.571" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that is outside of Emacs environment.""" start="00:19:09.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It does not make any calls to Emacs anything.""" start="00:19:11.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It does not have a single Elisp line.""" start="00:19:13.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So this cache is stored outside.""" start="00:19:15.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now when I want to retrieve""" start="00:19:20.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""anything from this cache,""" start="00:19:22.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""let's say, so I have cached""" start="00:19:23.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""up until 55, from 45 to 55.""" start="00:19:26.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So what happens is that""" start="00:19:29.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""when you're at page 50,""" start="00:19:31.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you always have a cache""" start="00:19:32.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that's n + 5 and n - 5.""" start="00:19:34.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you have cache of 5 pages forward""" start="00:19:36.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and 5 pages backward.""" start="00:19:39.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""But let's say I want to go to page 56.""" start="00:19:41.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So I will ask an Emacs render page 56.""" start="00:19:45.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And I'm not going to ask it""" start="00:19:50.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to MuPDF directly.""" start="00:19:51.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I'm going to ask it""" start="00:19:53.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to the thread pool that do this job.""" start="00:19:54.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And thread pool is going to""" start="00:19:56.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""assign one thread to it.""" start="00:19:58.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Let's say the thread 1""" start="00:19:59.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which is going to render page 56.""" start="00:20:00.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So this thread is going to make calls to MuPDF""" start="00:20:03.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""through our code dynamic module.""" start="00:20:06.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And MuPDF after rendering it""" start="00:20:08.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is going to store it in the cache.""" start="00:20:11.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we're going to add another 56 page to this.""" start="00:20:13.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now, while this is happening,""" start="00:20:18.060" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs Reader does not, like Emacs itself,""" start="00:20:21.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the session is not going to be stuck""" start="00:20:24.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because we just made a call to the thread.""" start="00:20:27.380" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We just asked the thread.""" start="00:20:30.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So like this, this call, like it's done.""" start="00:20:32.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you just assign something to a thread""" start="00:20:35.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and then this is fine.""" start="00:20:38.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Like, you're not waiting for the thread""" start="00:20:40.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to complete or anything.""" start="00:20:42.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs is not waiting for the thread to complete.""" start="00:20:43.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The dynamic module or the C side""" start="00:20:46.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""might wait to complete""" start="00:20:48.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but that is entirely different from""" start="00:20:49.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the Emacs session.""" start="00:20:51.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So Emacs viewer can continue to""" start="00:20:52.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""display the page 50""" start="00:20:54.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""while the rendering pipeline""" start="00:20:56.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is still rendering the 56th page.""" start="00:20:58.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And when Emacs asks to display page 56,""" start="00:21:01.980" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it's going to ask it to a thread pool.""" start="00:21:05.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Then thread pool is going to assign""" start="00:21:09.620" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""another thread, let's say this one,""" start="00:21:11.537" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to retrieve page 56 from the memory cache.""" start="00:21:13.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And then the 56 page is going to be sent""" start="00:21:17.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to the Emacs to be displayed.""" start="00:21:20.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Again, the retrieval part""" start="00:21:24.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is entirely independent of Emacs.""" start="00:21:26.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs does not have to wait for it.""" start="00:21:28.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs only needs to wait to display it.""" start="00:21:30.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So, the displaying part""" start="00:21:34.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and the rendering pipeline""" start="00:21:36.620" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""are entirely asynchronous, so to speak.""" start="00:21:37.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And in the diagram, if you see,""" start="00:21:41.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""all the arrows that are""" start="00:21:43.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""magenta in color,""" start="00:21:46.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""they are native to the Emacs runtime.""" start="00:21:48.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That is, they are single-threaded.""" start="00:21:51.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""They are connected to Emacs.""" start="00:21:53.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And all the arrows that are red in color,""" start="00:21:55.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""they are totally asynchronous.""" start="00:21:58.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""They can be multi-threaded if you want.""" start="00:22:01.860" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""They are multi-threaded by default""" start="00:22:03.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because they interact""" start="00:22:05.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""only with the MuPDF shared library""" start="00:22:07.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and the C heap.""" start="00:22:09.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""They do not touch anything""" start="00:22:11.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in the Emacs runtime.""" start="00:22:12.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This is how we're able to switch quickly""" start="00:22:14.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""between these huge scanned PDFs""" start="00:22:18.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that have huge images""" start="00:22:22.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in each of their pages""" start="00:22:23.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because we don't really wait for""" start="00:22:25.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""each page to be rendered.""" start="00:22:28.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And Emacs does not wait for that.""" start="00:22:31.380" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So that's another architectural feature""" start="00:22:35.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""of Emacs Reader""" start="00:22:39.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that we are system-level multithreaded.""" start="00:22:40.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now Emacs viewer also supports""" start="00:22:43.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""almost all document formats.""" start="00:22:47.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It supports PDF, EPUB, MOBI, XPS, CPZ comics,""" start="00:22:49.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it even supports""" start="00:22:54.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""other non-ebook formats""" start="00:22:56.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""like document format,""" start="00:22:59.971" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""so you can open""" start="00:23:00.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""LibreOffice documents in it,""" start="00:23:01.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and even stuff like PPT and Excel in it,""" start="00:23:04.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""even though they're not going to be""" start="00:23:07.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""supported in a as nice manner.""" start="00:23:08.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And we can do that because MuPDF does this.""" start="00:23:13.860" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""MuPDF has support for all of this""" start="00:23:16.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it treats them just as it treats PDF.""" start="00:23:18.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Nothing special.""" start="00:23:22.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The only thing that we don't support right now""" start="00:23:24.540" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is DejaVu, so that is not supported right now.""" start="00:23:26.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I'm going to work on making it supported""" start="00:23:30.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""at the upstream MuPDF.""" start="00:23:33.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That's going to take a long time,""" start="00:23:36.020" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but it's in the plans.""" start="00:23:38.440" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Native Emacs integrations""" start="00:23:44.240" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Now with Emacs Reader,""" start="00:23:44.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we also integrate""" start="00:23:45.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""with existing Emacs packages""" start="00:23:46.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as much as possible.""" start="00:23:48.620" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So bookmarks, C-x r b,""" start="00:23:50.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you can do it natively.""" start="00:23:53.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you can save a page as a bookmark""" start="00:23:54.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just as you save anything else in Emacs""" start="00:23:57.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as a bookmark.""" start="00:23:59.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""There's also saveplace integration.""" start="00:24:00.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you can scroll a PDF, close it,""" start="00:24:02.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and then come back to it""" start="00:24:06.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""at the same page that you saved it at.""" start="00:24:07.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Sorry, that you closed it at.""" start="00:24:10.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And it's going to work just out of the box""" start="00:24:12.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because of the saveplace""" start="00:24:14.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""package in Emacs that is built in.""" start="00:24:16.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We also have imenu integration""" start="00:24:19.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for table of contents.""" start="00:24:20.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So if you see this, this is imenu""" start="00:24:22.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and you can scroll through the contents""" start="00:24:26.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just like you scroll through any imenu.""" start="00:24:28.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can also do it in the menu bar by clicking.""" start="00:24:30.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It works just as nice.""" start="00:24:39.500" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We also have something like""" start="00:24:40.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the outline mode that pdf-tools has.""" start="00:24:42.740" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So if you press O in a document,""" start="00:24:44.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it's going to give you this outline.""" start="00:24:48.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And these are buttons that are clickable.""" start="00:24:49.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can click them.""" start="00:24:53.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can press Enter at them.""" start="00:24:54.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And this is the menu bar item that I was looking at.""" start="00:24:56.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""If you click here, index,""" start="00:25:00.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it's going to show you""" start="00:25:02.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the exact same thing""" start="00:25:03.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but in a different interface.""" start="00:25:05.340" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""(Naive) dark mode""" start="00:25:10.340" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""We also have a naive dark mode,""" start="00:25:10.340" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which is not really as nice as""" start="00:25:15.260" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we would like it to be,""" start="00:25:17.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and dark mode fanatics""" start="00:25:18.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I'm sure will have issues with it,""" start="00:25:20.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but we're going to improve it in time.""" start="00:25:22.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""For now, this is what we have.""" start="00:25:24.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And it can be enabled per document,""" start="00:25:27.380" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""so you can have one, like,""" start="00:25:30.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""one document that is in dark mode,""" start="00:25:33.100" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but another one that is not.""" start="00:25:34.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That is nice to have.""" start="00:25:36.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Eventually we're going to work on more themes.""" start="00:25:39.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You should be able to actually integrate it""" start="00:25:42.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""with Emacs themes as much as possible.""" start="00:25:46.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can make it default so that""" start="00:25:49.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it inherits colors from the Emacs theme.""" start="00:25:52.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That is one of the things""" start="00:25:54.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that we also have planned.""" start="00:25:56.360" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Challenges and further improvements""" start="00:26:01.140" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""We did face a bunch of challenges""" start="00:26:01.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""while trying to implement these features.""" start="00:26:03.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""One of the initial challenges was that""" start="00:26:05.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""SVGs were actually a bad idea.""" start="00:26:07.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""They're huge, especially in scanned PDFs,""" start="00:26:09.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and they make things much slower.""" start="00:26:12.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we chose to actually have PPMs,""" start="00:26:14.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which is the simplest image format ever possible.""" start="00:26:18.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Now, it was also very difficult""" start="00:26:24.100" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to make reader-mode be window-specific.""" start="00:26:26.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So, you know, while you're scrolling""" start="00:26:29.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the same document in one window,""" start="00:26:31.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the other window with the same document""" start="00:26:34.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""should not change.""" start="00:26:36.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We should be able to have multiple pages""" start="00:26:37.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in different windows of the same document.""" start="00:26:39.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That was very difficult""" start="00:26:42.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because as I told you about the cache,""" start="00:26:44.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the cache works in an idiosyncratic manner""" start="00:26:46.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and we needed to make it so that each window""" start="00:26:50.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""will have its own cache""" start="00:26:54.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""instead of having a global cache for each file.""" start="00:26:56.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That took some rewrite.""" start="00:27:01.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And now, because we needed to do""" start="00:27:03.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""this sort of multithreading,""" start="00:27:06.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""system-level multithreading,""" start="00:27:07.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we needed to use""" start="00:27:09.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a specific package of MuPDF""" start="00:27:10.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that had a bug for this which got fixed.""" start="00:27:13.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And that's 1.26.0.""" start="00:27:16.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Because we did that,""" start="00:27:20.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a lot of the GNU/Linux distributions did not""" start="00:27:23.337" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""really have this latest package.""" start="00:27:26.463" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we had to actually""" start="00:27:28.872" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""package it in-tree.""" start="00:27:30.772" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""as a git sub-module.""" start="00:27:33.805" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That was a horror! But eventually... now""" start="00:27:36.972" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I think most GNU/Linux distributions""" start="00:27:40.738" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""already have this [version].""" start="00:27:43.605" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The upcoming features that we have planned""" start="00:27:46.341" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""are the first one is that we need to rewrite""" start="00:27:48.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the display mechanism entirely from scratch""" start="00:27:52.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to use a tiled rendering approach.""" start="00:27:55.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So right now we just take an image""" start="00:27:57.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and display it inside an Emacs buffer""" start="00:28:00.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""just like that.""" start="00:28:02.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""But it will be changed so that the image""" start="00:28:03.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""will be displayed in the tiled manner""" start="00:28:08.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""so there will be multiple tiles""" start="00:28:10.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but it'll be pixel perfect""" start="00:28:12.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""so you won't really see a difference.""" start="00:28:14.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The reason to do this is to implement features""" start="00:28:16.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for text selection, actually.""" start="00:28:19.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we can't really do text selection""" start="00:28:21.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""without running into a bunch of memory""" start="00:28:24.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and other issues latency issues""" start="00:28:27.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""if we don't do tiling.""" start="00:28:30.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So we need to do those two things,""" start="00:28:33.020" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""they are at the highest priority right now.""" start="00:28:35.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And then, once we're done with that,""" start="00:28:38.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we're going to support annotations,""" start="00:28:40.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""highlighting, everything that you're used to""" start="00:28:42.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in pdf-tools and org-noter.""" start="00:28:45.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And once we're done with that,""" start="00:28:47.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we're going to also integrate with AucTeX and SyncTeX.""" start="00:28:50.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Because right now, when a PDF gets updated,""" start="00:28:55.020" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""especially a LaTeX PDF,""" start="00:28:58.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""since there is no SyncTeX integration,""" start="00:29:00.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it can't really do it nicely""" start="00:29:03.438" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it sometimes even crashes Emacs.""" start="00:29:05.772" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So that's something that""" start="00:29:08.661" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we will be planning to implement.""" start="00:29:11.538" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What Emacs can learn?""" start="00:29:14.272" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Now, from this experiment,""" start="00:29:14.272" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""what exactly can Emacs,""" start="00:29:16.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the Emacs core devs and others""" start="00:29:17.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""who are building packages can learn?""" start="00:29:20.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Well, the first thing is that all of this""" start="00:29:22.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""should not be really this difficult""" start="00:29:24.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because all we're asking from Emacs""" start="00:29:27.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is to display images in real-time""" start="00:29:30.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and update them in real-time.""" start="00:29:32.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That should not be that difficult""" start="00:29:36.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""of a thing to do, but apparently it is.""" start="00:29:37.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And that's why Emacs's graphical interface""" start="00:29:40.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""needs to be more modular, more composable,""" start="00:29:43.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and flexible for real-time graphics.""" start="00:29:47.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""If it is supposed to have things like,""" start="00:29:51.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""again, a document reader,""" start="00:29:54.220" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""something like a video editor,""" start="00:29:56.180" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and something like that,""" start="00:29:57.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs's graphical interface""" start="00:29:58.980" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""needs to grow and be more mature.""" start="00:30:00.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""One of the things""" start="00:30:05.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that's stopping it from doing that""" start="00:30:06.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is actually Emacs's overlay functionality.""" start="00:30:08.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So right now, the way we display""" start="00:30:10.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""an image in a buffer""" start="00:30:13.940" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is using an overlay,""" start="00:30:16.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""actually multiple overlays.""" start="00:30:18.901" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Overlays are static in the sense that""" start="00:30:22.020" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""if I attach to one image to one overlay,""" start="00:30:25.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I need to have an entirely different image""" start="00:30:29.740" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""updated for that overlay.""" start="00:30:34.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So I need to create another different image,""" start="00:30:37.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""change it in the memory,""" start="00:30:39.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and then display it to update it.""" start="00:30:41.180" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I can't change the image data""" start="00:30:43.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in real time of the overlay.""" start="00:30:46.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And that is a big issue.""" start="00:30:49.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I've actually made an emacs-devel""" start="00:30:54.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""mailing list thread about it.""" start="00:30:56.260" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I talked to Eli about it as well.""" start="00:30:58.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And he said there's a possibility""" start="00:31:01.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that this can be changed,""" start="00:31:04.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but it's going to take""" start="00:31:05.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a certain amount of rewrite.""" start="00:31:06.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""There's also issues with Emacs GC.""" start="00:31:09.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs GC sometimes leaks memory""" start="00:31:12.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""when you update images too quickly.""" start="00:31:14.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That is, when you have a bunch of images""" start="00:31:16.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that are getting churned out too quickly,""" start="00:31:18.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs GC starts leaking""" start="00:31:21.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and it just goes up to""" start="00:31:23.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""a huge number of gigabytes in RAM.""" start="00:31:25.160" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""That's also a huge problem.""" start="00:31:29.680" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The dynamic module API,""" start="00:31:32.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the emacs-module.h header,""" start="00:31:33.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""needs to have more helpers.""" start="00:31:37.140" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""It's really bare bones,""" start="00:31:38.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and I like that it is bare bones""" start="00:31:41.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""so that other languages can use it,""" start="00:31:43.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""but at the same time, I think""" start="00:31:45.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""it'll be really good""" start="00:31:46.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""if we can have some helpers""" start="00:31:47.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that can do better memory interaction,""" start="00:31:49.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""like strings and so on,""" start="00:31:53.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""which we also faced some issues with.""" start="00:31:57.260" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Emacs's fractional scaling system""" start="00:32:00.380" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""seems to be broken across different toolkits.""" start="00:32:02.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We have bug reports that say in pgtk in Wayland,""" start="00:32:05.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""something seems to render differently""" start="00:32:11.000" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because they have fractional scaling enabled.""" start="00:32:13.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So that's something""" start="00:32:17.260" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""that I think Emacs, overall,""" start="00:32:18.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I think Emacs needs to focus on improving""" start="00:32:21.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""the graphical interface pipeline""" start="00:32:24.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to be a much more mature one.""" start="00:32:28.240" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Contributing to the development""" start="00:32:32.300" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""And finally, how can you contribute""" start="00:32:32.300" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to the development of Emacs Reader?""" start="00:32:34.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Well, we are on Codeberg.""" start="00:32:35.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""We are not on GitHub, sorry.""" start="00:32:37.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can go there,""" start="00:32:40.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you can look through the issues""" start="00:32:41.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and send us a PR if you're interested.""" start="00:32:43.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""The next major release""" start="00:32:45.280" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""is going to go to GNU ELPA.""" start="00:32:46.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Finally, we are not yet at GNU ELPA,""" start="00:32:49.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""so you can't really do M-x package-install""" start="00:32:52.260" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and install our package.""" start="00:32:54.440" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""you would need to install it""" start="00:32:56.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""through use-package :vc.""" start="00:32:58.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And since we're going to go to GNU ELPA,""" start="00:33:04.940" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""we request you to assign""" start="00:33:07.500" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""your copyright to Emacs""" start="00:33:09.120" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""because GNU ELPA is essentially part of GNU Emacs.""" start="00:33:10.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So you would need to do copyright assignment""" start="00:33:13.960" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""if you make non-trivial contribution.""" start="00:33:16.720" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""You can join us at IRC""" start="00:33:20.580" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""at #phi-mu-lambda.""" start="00:33:22.480" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And I also stream the development""" start="00:33:24.360" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""of this package""" start="00:33:27.200" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""bi-weekly on Sundays""" start="00:33:28.040" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""at PeerTube at the following channel.""" start="00:33:29.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Feel free to join us.""" start="00:33:31.640" video="mainVideo-reader" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Acknowledgements""" start="00:33:35.520" video="mainVideo-reader" id="subtitle"]]</div>[[!template text="""Finally, I want to thank Tushar,""" start="00:33:35.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""who has been persistently contributing""" start="00:33:38.500" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""to the project since 0.1.0,""" start="00:33:40.640" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and I'm very, very thankful for him,""" start="00:33:42.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""for his suggestions,""" start="00:33:46.520" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and for his code contributions as well.""" start="00:33:47.760" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I would also like to thank Prom,""" start="00:33:50.880" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""who fixed a major bug""" start="00:33:53.320" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""in the Windows build,""" start="00:33:55.800" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""since I don't really use Windows anymore,""" start="00:33:56.860" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""so that was really nice,""" start="00:33:58.840" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and for Teeoius, for fixing a pthread bug.""" start="00:33:59.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""I would also like to thank others""" start="00:34:05.460" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""who helped fix little things,""" start="00:34:06.920" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""who come to the stream to chat,""" start="00:34:09.560" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""who sort of see me bang my head""" start="00:34:13.180" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""across these C memory bugs.""" start="00:34:16.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""So thank you to all of those.""" start="00:34:19.240" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""And thank you finally to the viewers""" start="00:34:21.600" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""and to EmacsConf organizers as well.""" start="00:34:24.400" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""This is a splendid opportunity.""" start="00:34:28.080" video="mainVideo-reader" id="subtitle"]]
+[[!template text="""Thank you.""" start="00:34:31.940" video="mainVideo-reader" id="subtitle"]]
+
+</div>
+
+Captioner: jay_bird
+
+<div class="transcript transcript-qanda"><a name="reader-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""The first question,""" start="00:00:00.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""and I'm reading from the etherpad here,""" start="00:00:01.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""is there a scope for integrating""" start="00:00:03.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""the C library to Emacs itself""" start="00:00:05.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""with MuPDF becoming an optional dependency?""" start="00:00:07.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""Right, so integrating the C library into Emacs itself""" start="00:00:13.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""is like having MuPDF inside Emacs source tree.""" start="00:00:18.720" video="qanda-reader" id="subtitle"]]
+[[!template text="""I don't think Emacs devs would be inclined to do that,""" start="00:00:24.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""and I don't think we really need it.""" start="00:00:28.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""Um, I think as it is, uh, Emacs""" start="00:00:30.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""with doc view needs new tool, which is something you need""" start="00:00:33.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""to install from new PDF anyways.""" start="00:00:36.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""So, um, I think it is almost expected""" start="00:00:38.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""that you install new PDF from system package manager.""" start="00:00:42.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""Um, and I think that as it is, is better""" start="00:00:46.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""because we don't really need to have""" start="00:00:49.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""a whole PDF engine inside Emacs.""" start="00:00:51.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""Um, Next question also from the pad,""" start="00:00:53.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""the dynamic module some great,""" start="00:00:59.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""and it's amazing that they've been there since 2017.""" start="00:01:01.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""Why do you think they've been slowly""" start="00:01:06.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""so slow to get adopted?""" start="00:01:09.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""Is there a prior art with them? Right?""" start="00:01:11.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""That's a good question.""" start="00:01:14.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""Actually, I think 1 of the reasons is that.""" start="00:01:16.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""Most of the time, I think people love Emacs""" start="00:01:22.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""because they can do so much with Elisp.""" start="00:01:24.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""I think certainly there is a bias""" start="00:01:27.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""towards trying to do things with Elisp.""" start="00:01:28.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""I think there's only a sort of specific class of problems""" start="00:01:31.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""that you can solve with dynamic modules,""" start="00:01:35.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""such as this, where you want to use a native library""" start="00:01:36.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""to do something in a faster, better way.""" start="00:01:40.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""I use that quite a lot.""" start="00:01:44.240" video="qanda-reader" id="subtitle"]]
+[[!template text="""There's of course libvterm, which uses a dynamic module""" start="00:01:48.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""and it does it really well.""" start="00:01:53.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""And I think there's another one, a plotting library""" start="00:01:55.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""or package in Emacs that was using something from Python.""" start="00:02:00.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""So, dynamic modules are good,""" start="00:02:05.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""but I think they don't really come""" start="00:02:07.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""to the surface level packages, your day-to-day packages,""" start="00:02:10.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""because most of the day-to-day packages that we use in Emacs""" start="00:02:13.975" video="qanda-reader" id="subtitle"]]
+[[!template text="""can be done with Elisp. So, unless you really need""" start="00:02:17.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""something system-level efficient,""" start="00:02:20.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""Most of the time, you don't want to write C or C++ or something.""" start="00:02:23.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""But there is actually a really nice Rust crate for native modules,""" start="00:02:29.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""and there's a really nice Haskell package.""" start="00:02:34.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""So there's actually really good support""" start="00:02:37.240" video="qanda-reader" id="subtitle"]]
+[[!template text="""for multiple languages.""" start="00:02:39.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""So it's there, it's just not used as much. Yeah.""" start="00:02:41.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""So what you're saying is""" start="00:02:45.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""if Elisp weren't so simple to learn and easy to use""" start="00:02:47.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""and so fully featured,""" start="00:02:51.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""we'd get a lot more mileage""" start="00:02:52.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""out of this super cool dynamic module feature.""" start="00:02:54.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah. Cool I'll take I'll bring in the next question.""" start="00:02:57.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""How how? How difficult is our PDF tools to install?""" start="00:03:02.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""The questioner is installing it""" start="00:03:07.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""using the built-in package manager""" start="00:03:10.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""looking at the Emacs reader installation instructions""" start="00:03:12.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""It doesn't necessarily cover""" start="00:03:16.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""how how to install that easily""" start="00:03:18.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""person is not using use package or straight and Okay.""" start="00:03:20.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""Oh, and they say that you didn't""" start="00:03:25.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""catch much of this in the presentation.""" start="00:03:27.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""Okay, so you want me to skip that or should I answer?""" start="00:03:32.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""It's your choice. If you would like to say more.""" start="00:03:35.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah, I think just as a thing,""" start="00:03:38.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""the reason I said PDF tools is difficult""" start="00:03:40.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""is PDF tools has a huge list of dependencies.""" start="00:03:43.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""The only thing Emacs Vita depends""" start="00:03:45.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""on is new PDF, nothing else. There's a single dependency.""" start="00:03:47.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""PDF tools depends on a lot of things""" start="00:03:50.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""and they have their own server,""" start="00:03:54.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""which is packaged as a system package,""" start="00:03:57.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""which you don't really find everywhere.""" start="00:04:00.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""And there's like systems, the new Linux systems""" start="00:04:02.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""where the package is very difficult to build""" start="00:04:05.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""because of so many dependencies.""" start="00:04:07.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""So my goal was to sort of reduce""" start="00:04:10.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""the number of dependencies.""" start="00:04:13.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""And then right now it's very, it's sort of a key""" start="00:04:14.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""to install Emacs Reader.""" start="00:04:19.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""Once we go to GNU Elpa, it's just""" start="00:04:21.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""going to be Emacs package install, just that.""" start="00:04:23.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""Right now you have to do package VC""" start="00:04:26.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""a bit. Boy, we get spoiled as""" start="00:04:27.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""Emacs users. Everything just gets so easy""" start="00:04:32.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""for us. It's like an IDE for our""" start="00:04:35.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""whole machine. What tools did you use to measure the""" start="00:04:37.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""memory usage between the three packages?""" start="00:04:44.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah, that's a good question.""" start="00:04:48.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""So during my development, I used mostly for debugging""" start="00:04:50.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""purposes Valgrind. So Valgrind is a a set of suite""" start="00:04:54.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""of debugging tools.""" start="00:05:00.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""And one of the tools that it has is Massive.""" start="00:05:01.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""It's a heap analyzer, heap profiler.""" start="00:05:03.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""So Valgrind plus Massive,""" start="00:05:08.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""and then there's a KDE package""" start="00:05:10.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""called Massive Visualizer.""" start="00:05:14.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""So I first get the Massive output using Valgrind,""" start="00:05:15.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""and then put that output into Massive Visualizer.""" start="00:05:19.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""That gives me the grasp.""" start="00:05:23.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""Are there Emacs integrations for those components at all?""" start="00:05:24.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""Does Valgrind have them?""" start="00:05:28.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""I don't think so. I don't think so.""" start="00:05:30.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""There's, yeah, there's I think a few packages""" start="00:05:32.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""which do something with Massive,""" start="00:05:37.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""but I don't think like they're maintained.""" start="00:05:38.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah. Gotcha. Cool. Awesome opportunity""" start="00:05:42.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""there for someone spunky.""" start="00:05:47.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""How is conversion between Elisp and foreign language types?""" start="00:05:49.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""For example, when interfacing with the C++ library""" start="00:05:55.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""that makes heavy use of the C++ object system and templates.""" start="00:05:59.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah, that's a good question.""" start="00:06:03.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""So the go-to answer is the blog post that I wrote,""" start="00:06:05.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""which is an extensive explanation""" start="00:06:10.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""on how the internals of dynamic modules work.""" start="00:06:12.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""The short answer is that basically what happens""" start="00:06:14.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""is anything that is compatible with C-ABI""" start="00:06:21.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""When you compile that language code,""" start="00:06:24.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""so when I compile C++ code, I would have a particular API.""" start="00:06:27.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""So we have a dynamic module API,""" start="00:06:33.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""which is the emacs-module.h, the file that I showed.""" start="00:06:35.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""You have to put that into your C++ package program""" start="00:06:39.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""and then link it to...""" start="00:06:45.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""So emacs-module.h is basically going to...""" start="00:06:48.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""like use things in your Emacs installation""" start="00:06:51.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""to interact with this C++ language. So it's basically FFI.""" start="00:06:56.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""And what this gives you is that you can have things in C++.""" start="00:07:04.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""So let's say you want to do multi-threading""" start="00:07:10.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""the way I did system level multi-threading.""" start="00:07:13.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""You can have C++ be responsible for the multi-threading.""" start="00:07:15.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""but you want the output""" start="00:07:20.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""of the multithreading to go into Emacs.""" start="00:07:23.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""So then you write like a piece of C++ function,""" start="00:07:24.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""which is going to be a dynamic module function.""" start="00:07:29.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""A dynamic module function""" start="00:07:31.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""is written in the language that you target,""" start="00:07:32.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""that is C++ or C or Rust.""" start="00:07:34.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""And then that is going to be compiled""" start="00:07:37.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""into a share library like SO.""" start="00:07:40.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""shared object, and then that shared object""" start="00:07:43.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""is going to be loaded into Emacs system using require.""" start="00:07:46.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""So when I do require render core""" start="00:07:50.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""in one of the slides that I showed,""" start="00:07:53.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""I'm basically loading that shared object,""" start="00:07:54.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""and that shared object already has""" start="00:07:58.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""the compiled dynamic module functions and so on.""" start="00:08:00.517" video="qanda-reader" id="subtitle"]]
+[[!template text="""But my blog will explain that better.""" start="00:08:03.892" video="qanda-reader" id="subtitle"]]
+[[!template text="""Gotcha. I thought that was pretty clear.""" start="00:08:06.309" video="qanda-reader" id="subtitle"]]
+[[!template text="""I'm looking forward to seeing that blog post""" start="00:08:10.017" video="qanda-reader" id="subtitle"]]
+[[!template text="""and understanding what I glossed over""" start="00:08:12.017" video="qanda-reader" id="subtitle"]]
+[[!template text="""trying to understand from that explanation.""" start="00:08:13.642" video="qanda-reader" id="subtitle"]]
+[[!template text="""That was great.""" start="00:08:15.861" video="qanda-reader" id="subtitle"]]
+[[!template text="""Can one look at PDF metadata with Emacs Reader?""" start="00:08:18.421" video="qanda-reader" id="subtitle"]]
+[[!template text="""Can you do annotations? Does it understand forms?""" start="00:08:22.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""Can it handle encrypted PDFs?""" start="00:08:26.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""In other words, I think reading between the lines,""" start="00:08:29.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""wow, this is awesome.""" start="00:08:33.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""Is there anything I can't do? You're right.""" start="00:08:34.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""So Emacs Reader will be able to do all of those things.""" start="00:08:39.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""It can do annotations. It will be able to do forms.""" start="00:08:44.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""And we have an issue open for interpret PDFs.""" start="00:08:48.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""The thing is, right now we are struggling with""" start="00:08:52.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""making Emacs Reader be very efficient""" start="00:08:54.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""in terms of highlighting and text selection""" start="00:08:58.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""because of the challenges that I mentioned in the slides,""" start="00:09:02.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""so it will be able to do all that.""" start="00:09:05.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""Once we tackle the basic features""" start="00:09:07.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""down in an efficient manner. Gotcha. Um.""" start="00:09:10.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""Comment or questioner says,""" start="00:09:18.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""I installed Emacs Reader already as promised. Great job.""" start="00:09:24.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""How can I associate ODT files to open with Emacs Reader?""" start="00:09:28.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""You don't really need to do anything.""" start="00:09:34.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""You should be just able to do find file,""" start="00:09:38.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""Control X, Control F, and open.""" start="00:09:40.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""And it should open with Emacs Reader""" start="00:09:42.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""because we have an auto mode list,""" start="00:09:45.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""a list that takes an ODT file""" start="00:09:47.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""and opens it with reader mode.""" start="00:09:51.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""So you should just be able to do find file.""" start="00:09:53.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""If you're not able to do that,""" start="00:09:55.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""you should open Embug report.""" start="00:09:56.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""And I'll just mention""" start="00:09:58.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""we've got about 10 minutes left of our live Q&A,""" start="00:10:00.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""but if you're watching the stream,""" start="00:10:03.240" video="qanda-reader" id="subtitle"]]
+[[!template text="""it's possible that we'll just keep going.""" start="00:10:06.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""The questions just keep coming, which I just love that.""" start="00:10:08.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""So feel free to join the BBB link""" start="00:10:10.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""that should have shown in the IRC chat.""" start="00:10:14.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""Jump in and we can take questions""" start="00:10:17.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""as long as Divya has steam for that.""" start="00:10:21.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""If a PDF file is open in Emacs Reader""" start="00:10:26.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""and I reintegrate the PDF with some changes,""" start="00:10:30.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""does the Emacs Reader refresh the PDF on its own""" start="00:10:33.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""or do I reload it?""" start="00:10:36.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""Right, that's also a really good question.""" start="00:10:38.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""So one answer is that it depends on""" start="00:10:41.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""how you change the PDF.""" start="00:10:44.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""So for example, if I just replaced the PDF""" start="00:10:46.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""with something else of the same name,""" start="00:10:50.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""Emacs will update it immediately.""" start="00:10:52.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""If you have auto revert mode on,""" start="00:10:55.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""it'll just revert the buffer""" start="00:10:57.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""and it'll reload the PDF really nicely.""" start="00:10:59.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""But if you're doing it something like LaTeX,""" start="00:11:01.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""where you're writing something in LaTeX""" start="00:11:05.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""and LaTeX is continuously producing the PDF,""" start="00:11:07.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""that needs SyncTeX integration.""" start="00:11:10.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""Because LaTeX, while it's producing the PDF,""" start="00:11:13.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""it does a lot of funky things.""" start="00:11:16.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""It does not provide a sort of renderable PDF all the time.""" start="00:11:19.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""So Emacs will sort of crash trying to""" start="00:11:24.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""basically render a PDF that is not ready yet.""" start="00:11:28.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""So we need SyncTex to sync""" start="00:11:31.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""with LaTeX to do that really nice.""" start="00:11:34.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""Okay, so we have to do some care""" start="00:11:37.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""and feeding of the exact timing""" start="00:11:39.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""if we have more of a continuous behind the curtains, so to speak.""" start="00:11:41.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""That makes a lot of sense to me. What are the challenges""" start="00:11:46.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""with integrating synctex and AucTex?""" start="00:11:50.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""This would be great to see as PDF handles as well,""" start="00:11:55.720" video="qanda-reader" id="subtitle"]]
+[[!template text="""or PDF tools handles as well. Yeah, yeah.""" start="00:11:58.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""So, we have Synctex and Auctex planned.""" start="00:12:02.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""I don't really see any major obstacles""" start="00:12:04.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""for doing that, to be very honest.""" start="00:12:06.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""I think we can do it in a much simpler way""" start="00:12:08.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""than PDF Tools does.""" start="00:12:11.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""The only reason we haven't done it yet is because, again,""" start="00:12:12.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""we have more important highlighting""" start="00:12:17.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""and text selection and those features planned,""" start="00:12:20.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""but it's anticipated. Yeah. All right. This next question""" start="00:12:24.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""I love your presentation. Will you be giving another talk""" start="00:12:32.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""on the architecture you went over a deep dive on?""" start="00:12:36.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""That would be awesome. I'm not sure if an EmacsConf talk""" start="00:12:39.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""will be appropriate for this, but I do stream bi-weekly.""" start="00:12:44.920" video="qanda-reader" id="subtitle"]]
+[[!template text="""So you're always welcome to come on my stream and ask,""" start="00:12:48.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""and I would be very happy to go deep into this.""" start="00:12:52.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""I'm looking forward to catching that myself.""" start="00:12:55.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""Thank you for the shout. Is there search functionality,""" start="00:12:58.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""something like isearch and occur?""" start="00:13:02.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah, we don't really have it,""" start="00:13:05.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""but this is the most immediate feature""" start="00:13:07.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""after we have text selection.""" start="00:13:09.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""So once we have text selection,""" start="00:13:10.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""once we're able to select the text,""" start="00:13:12.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""then we can have iSearch so that it can highlight the text.""" start="00:13:14.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah. Um, all right. And then, um, there's, I'm just gonna,""" start="00:13:17.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""I'll read out this question""" start="00:13:26.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""and then I have to do a little bookkeeping on the pad.""" start="00:13:28.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""Um, does the dynamic module, uh, prevent customization""" start="00:13:30.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""that Emacs usually provides advice, hooks, et cetera,""" start="00:13:35.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""or does everything just kind of""" start="00:13:40.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""No, if you have a dynamic module,""" start="00:13:44.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""it doesn't limit you into doing anything.""" start="00:13:46.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""You can do everything on the Elisp side that you want,""" start="00:13:49.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""and you only take care of certain things""" start="00:13:52.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""on the dynamic module side.""" start="00:13:55.720" video="qanda-reader" id="subtitle"]]
+[[!template text="""If you're asking whether""" start="00:13:56.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""you can do advices, hooks, and all of that""" start="00:13:58.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""on the dynamic module itself,""" start="00:14:01.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""from the dynamic module itself,""" start="00:14:03.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""that's a bit tricky because something like""" start="00:14:05.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""Calling a macro or doing macros and dynamic modules""" start="00:14:09.720" video="qanda-reader" id="subtitle"]]
+[[!template text="""is not really that nice You have to pretty much manually""" start="00:14:14.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""expand the macro yourself in the dynamic module""" start="00:14:18.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""so if you want to do it from the dynamic module,""" start="00:14:21.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""there's not much support right now,""" start="00:14:23.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""but you can do everything on the elisp side""" start="00:14:25.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""without touching the dynamic module. Got it""" start="00:14:29.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""So those are the questions that I see.""" start="00:14:33.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""I'm just going to take a quick peek,""" start="00:14:38.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""but let me invite you if you want to.""" start="00:14:40.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""We've got just about 5 minutes left""" start="00:14:42.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""and I will get carried away sometimes""" start="00:14:46.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""and fail to make this invitation before we cut away live,""" start="00:14:48.240" video="qanda-reader" id="subtitle"]]
+[[!template text="""especially if we do keep going a bit.""" start="00:14:51.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""that you have live onto the stream.""" start="00:14:54.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""Of course, you don't have to do that.""" start="00:14:57.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""You said a lot in your presentation.""" start="00:15:02.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""No, I think mostly that's fine.""" start="00:15:05.800" video="qanda-reader" id="subtitle"]]
+[[!template text="""I'm just really happy""" start="00:15:12.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""that people are interested in the package,""" start="00:15:13.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""and I would be glad to have contributors""" start="00:15:17.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""and viewers or anything. That would be nice. Awesome.""" start="00:15:19.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""So here comes one more question,""" start="00:15:25.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""or actually a couple more questions coming in.""" start="00:15:28.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""Following up on dynamic modules,""" start="00:15:31.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""do you usually create an Elisp shim""" start="00:15:34.240" video="qanda-reader" id="subtitle"]]
+[[!template text="""from foreign function interface""" start="00:15:38.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""and then use them with Elisp?""" start="00:15:40.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah, so basically how you do is you write,""" start="00:15:41.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""let's say I have a C function""" start="00:15:46.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""that I've written in the dynamic module.""" start="00:15:49.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""It's a dynamic module function.""" start="00:15:51.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""And then when I'm trying to call""" start="00:15:52.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""the dynamic module function,""" start="00:15:54.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""most of the time, I don't call it like that.""" start="00:15:56.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""I wrap it inside a proper Elisp function""" start="00:15:59.000" video="qanda-reader" id="subtitle"]]
+[[!template text="""and then call that Elisp function.""" start="00:16:01.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""So that's how I think it's better to do that because""" start="00:16:03.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""You can take care of certain cases""" start="00:16:08.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""on when you want the dynamic module function to be called.""" start="00:16:12.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""Maybe sometimes you don't want""" start="00:16:15.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""the dynamic module function""" start="00:16:17.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""to be called immediately.""" start="00:16:18.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""So it's better to wrap it.""" start="00:16:19.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah. Okay. So timing issues. Yeah.""" start="00:16:22.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""For the purposes of managing timing issues,""" start="00:16:26.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""that elisp shim is preferred.""" start="00:16:31.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""Yeah. Makes sense. Um.""" start="00:16:34.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""Uh, so question question here""" start="00:16:38.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""is searching for the person is searching for a roadmap.""" start="00:16:44.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""Is that already available as a feature?""" start="00:16:47.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""Searching is on the roadmap.""" start="00:16:49.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""It is not available yet as a feature, but it's on priority.""" start="00:16:52.240" video="qanda-reader" id="subtitle"]]
+[[!template text="""I think you may have may have touched on that.""" start="00:16:56.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""Sorry. All right. Those are the questions that I see.""" start="00:16:59.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""We've got just a couple of minutes.""" start="00:17:06.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""I'm not sure if you have more you wanted to say,""" start="00:17:08.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""but I have to say how much I appreciate your talk,""" start="00:17:10.400" video="qanda-reader" id="subtitle"]]
+[[!template text="""especially you jumping in live with us""" start="00:17:13.720" video="qanda-reader" id="subtitle"]]
+[[!template text="""and just taking everything on the fly.""" start="00:17:16.120" video="qanda-reader" id="subtitle"]]
+[[!template text="""I think this is a big part of what adds the energy,""" start="00:17:19.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""you in particular, just really dynamic speaker.""" start="00:17:24.560" video="qanda-reader" id="subtitle"]]
+[[!template text="""Thank you. Thank you. Thank you. I enjoyed it as well.""" start="00:17:28.040" video="qanda-reader" id="subtitle"]]
+[[!template text="""A person is, and I think this may have been touched on already,""" start="00:17:31.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""but let's maybe get into it more specifically.""" start="00:17:37.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""We've said that search is kind of""" start="00:17:39.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""a next up type of feature as things,""" start="00:17:42.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""as the current iteration stabilizes.""" start="00:17:44.720" video="qanda-reader" id="subtitle"]]
+[[!template text="""Question was, you know, occur like, how would you?""" start="00:17:48.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""Totally. There will be occur searches.""" start="00:17:52.240" video="qanda-reader" id="subtitle"]]
+[[!template text="""There will be isearch enabled, isearch.""" start="00:17:56.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""used to with PDF tools,""" start="00:17:59.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""we would be like parity with the features,""" start="00:18:02.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""all the features that you're used to with PDF tools.""" start="00:18:06.440" video="qanda-reader" id="subtitle"]]
+[[!template text="""Um, so, uh, certainly occur anything""" start="00:18:08.720" video="qanda-reader" id="subtitle"]]
+[[!template text="""that is important in Emacs with text""" start="00:18:12.600" video="qanda-reader" id="subtitle"]]
+[[!template text="""and that can be done with PDFs.""" start="00:18:15.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""We really want to do that because, um,""" start="00:18:17.360" video="qanda-reader" id="subtitle"]]
+[[!template text="""I want the package to be as knitted""" start="00:18:19.840" video="qanda-reader" id="subtitle"]]
+[[!template text="""into Emacs ecosystem as possible.""" start="00:18:22.680" video="qanda-reader" id="subtitle"]]
+[[!template text="""Okay. We'll see if we can get in this last question here.""" start="00:18:24.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""Do you have a timing expectation for ELPA?""" start="00:18:28.160" video="qanda-reader" id="subtitle"]]
+[[!template text="""Uh, yeah, next major release essentially.""" start="00:18:30.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""So next major release is most likely""" start="00:18:33.200" video="qanda-reader" id="subtitle"]]
+[[!template text="""going to be within a month or two.""" start="00:18:35.280" video="qanda-reader" id="subtitle"]]
+[[!template text="""So once we have the next major release, we're going to be.""" start="00:18:37.320" video="qanda-reader" id="subtitle"]]
+[[!template text="""Uh, timing couldn't be more perfect.""" start="00:18:39.640" video="qanda-reader" id="subtitle"]]
+[[!template text="""Maybe this is a good, good point to break.""" start="00:18:43.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""We'll be cutting away to the next talk""" start="00:18:45.520" video="qanda-reader" id="subtitle"]]
+[[!template text="""in just a couple of minutes.""" start="00:18:47.760" video="qanda-reader" id="subtitle"]]
+[[!template text="""So let me say one more time how much""" start="00:18:48.880" video="qanda-reader" id="subtitle"]]
+[[!template text="""on behalf of all the attendees""" start="00:18:51.480" video="qanda-reader" id="subtitle"]]
+[[!template text="""and all the volunteers and all everybody,""" start="00:18:52.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""um, how much we appreciate your talks""" start="00:18:54.960" video="qanda-reader" id="subtitle"]]
+[[!template text="""and, uh, your awesome contribution to the Emacs world.""" start="00:18:57.080" video="qanda-reader" id="subtitle"]]
+[[!template text="""Thanks, Corwin.""" start="00:19:01.300" video="qanda-reader" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [divya@subvertising.org](mailto:divya@subvertising.org?subject=Comment%20for%20EmacsConf%202023%20reader%3A%20An%20introduction%20to%20the%20Emacs%20Reader)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/reader-before.md b/2025/info/reader-before.md
new file mode 100644
index 00000000..b4c92c74
--- /dev/null
+++ b/2025/info/reader-before.md
@@ -0,0 +1,36 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 35-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-reader>
+Etherpad: <https://pad.emacsconf.org/2025-reader>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-reader"><source src="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--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="mainVideo-reader" data="""
+00:00.720 An introduction to the Emacs reader
+00:44.760 Yet another document viewer in Emacs?
+02:05.760 Architecture of Emacs Reader
+06:00.280 A word on dynamic modules
+07:39.560 Features of Emacs Reader
+07:56.760 Memory efficiency
+11:18.720 Performance and speed
+14:23.680 Scanned PDFs
+17:08.960 System-level multi-threading
+23:44.240 Native Emacs integrations
+25:10.340 (Naive) dark mode
+26:01.140 Challenges and further improvements
+29:14.272 What Emacs can learn?
+32:32.300 Contributing to the development
+33:35.520 Acknowledgements
+
+"""]]<div></div>Duration: 34:37 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reader">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.opus">Download --main.opus (30MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--main.webm">Download --main.webm (101MB)</a></li><li><a href="https://youtu.be/KQBXTSg_Occ">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-reader"><source src="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:12 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reader">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.m4v">Download --answers.m4v (82MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.webm">Download --answers.webm (77MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/reader-nav.md b/2025/info/reader-nav.md
new file mode 100644
index 00000000..c0b83e2a
--- /dev/null
+++ b/2025/info/reader-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/modern">Some problems of modernizing Emacs</a>
+Next by track: <a href="/2025/talks/weights">Weightlifting tracking with Emacs on Android</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/reference-after.md b/2025/info/reference-after.md
new file mode 100644
index 00000000..00456b05
--- /dev/null
+++ b/2025/info/reference-after.md
@@ -0,0 +1,358 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="reference-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:00.820" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""So, hello everyone, welcome to EmacsConf.""" start="00:00:00.820" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""My name is Vidianos, and I'm a PhD student in KU Leuven,""" start="00:00:03.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and today I'm going to be showing you""" start="00:00:06.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""how I managed to use Emacs as a reference manager,""" start="00:00:08.280" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""replacing what was for me Zotero,""" start="00:00:12.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""to a fully fledged approach inside Emacs.""" start="00:00:17.220" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So, what is my typical reference workflow?""" start="00:00:24.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""First I need to find literature,""" start="00:00:26.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""then I need to collect and organize it,""" start="00:00:28.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which I originally did with Zotero,""" start="00:00:30.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but now with Emacs centered tools""" start="00:00:32.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""such as zotra and ebib.""" start="00:00:36.612" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Then I create a reading list.""" start="00:00:39.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This is a new addition to my workflow""" start="00:00:41.280" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I started doing after moving this approach to Emacs""" start="00:00:43.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because now everything is well integrated.""" start="00:00:47.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I have made a very nice reading list implementation""" start="00:00:50.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""inside org-roam which I am going to be showing today.""" start="00:00:53.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Then obviously I need to read the literature, take notes,""" start="00:00:57.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""organize the notes, and ensure I am actually learning""" start="00:01:01.200" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""from what I am reading. This is then done through packages""" start="00:01:04.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""such as org-noter and org-roam""" start="00:01:06.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and is not going to be the focus of this talk.""" start="00:01:09.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I already gave a talk about this part of my workflow,""" start="00:01:11.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which I've been doing for many years now.""" start="00:01:14.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""You can find that""" start="00:01:17.960" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""or you can find many other people's approaches""" start="00:01:20.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""to reading literature and taking notes""" start="00:01:23.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""as it is quite a popular topic in the Emacs community.""" start="00:01:26.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Lastly, I will have a short section""" start="00:01:31.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""about how I ensure that I can recall the knowledge""" start="00:01:32.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""from this literature very easily""" start="00:01:37.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""through this reference management system.""" start="00:01:39.680" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Capture""" start="00:01:43.600" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""So, how can we capture an article in Emacs?""" start="00:01:43.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""One of the most commonly known packages is doi-utils""" start="00:01:48.200" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""where doi-utils has a lot of useful things to do""" start="00:01:52.100" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and one of them is to capture a paper,""" start="00:01:58.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but you need a DOI, and for me, that is a bit inconvenient,""" start="00:02:03.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because what I want to do is that""" start="00:02:06.460" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I have a URL here of a paper,""" start="00:02:08.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I want to just copy this URL, not copy the DOI,""" start="00:02:12.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and be able to save it immediately to my bib file.""" start="00:02:16.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And that can now be done""" start="00:02:23.200" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""through this function zotra-add-entry.""" start="00:02:24.312" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And as you can see here,""" start="00:02:27.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""there is also a zotra-download-attachment""" start="00:02:28.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that sometimes works, but not always.""" start="00:02:31.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I don't personally recommend it.""" start="00:02:34.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""But the problem is that due to articles being""" start="00:02:35.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""locked behind paywalls in many cases,""" start="00:02:39.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""downloading attachments doesn't work""" start="00:02:42.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""through Emacs. Sometimes it doesn't work""" start="00:02:45.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""through Zotero. Sometimes you just need to go to the browser,""" start="00:02:47.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""say download PDF, and that's the only solution""" start="00:02:51.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that will properly work.""" start="00:02:54.260" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So how do I then add this to the paper?""" start="00:02:58.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I need to find this paper that is here""" start="00:03:01.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""through ivy-bibtex.""" start="00:03:04.712" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This is the bib file manager I use.""" start="00:03:05.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""There is also others like citar.""" start="00:03:10.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I think citar has much better coding and integration""" start="00:03:11.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""with other packages, but I haven't really bothered""" start="00:03:15.560" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""to move from ivy-bibtex""" start="00:03:18.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because it does basically everything I want perfectly.""" start="00:03:19.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I go here, say add pdf to library.""" start="00:03:24.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I find where I saved it,""" start="00:03:28.280" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and it will suggest to automatically name it something""" start="00:03:31.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which is in full integration""" start="00:03:35.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""with the rest of my Emacs packages,""" start="00:03:37.446" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and all the literature management stuff""" start="00:03:40.920" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""knows to find it with this exact name.""" start="00:03:43.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So it iss saved and now""" start="00:03:46.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""when I try to create a file from this,""" start="00:03:49.046" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which I will show later,""" start="00:03:53.320" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""you will see that the file will already appear there.""" start="00:03:55.200" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Organizing""" start="00:04:00.920" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""So now let's go to organizing.""" start="00:04:00.920" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Organizing in Zotero is typically done through a""" start="00:04:06.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""hierarchical folder structure.""" start="00:04:09.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This is very familiar to most people and generally works,""" start="00:04:10.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but being someone that takes notes using the Zettelkasten method,""" start="00:04:15.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which has a fully flat hierarchy, nothing goes in folders,""" start="00:04:19.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""everything is in the same folder,""" start="00:04:24.320" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and you find everything because it's connected to other things.""" start="00:04:27.960" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""We have some basic indexes,""" start="00:04:31.960" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""from where you can jump to different points.""" start="00:04:34.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I love this structure, so I also wanted to include it""" start="00:04:37.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""in my bibliography management,""" start="00:04:41.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because with folders you have problems like,""" start="00:04:42.920" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""this article can go in that folder, can go in that folder,""" start="00:04:45.580" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""can go in that folder. Where do I actually put it?""" start="00:04:48.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Do I put copies of it in different folders?""" start="00:04:51.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It's just confusing and not really practical in my opinion.""" start="00:04:54.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I tried to do this approach inside Emacs.""" start="00:04:59.280" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Ebib""" start="00:05:03.479" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""And how? With Ebib.""" start="00:05:03.479" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Ebib is an amazing software built inside Emacs.""" start="00:05:08.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It's a reference manager and it works absolutely amazing""" start="00:05:11.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""if you configure it to your liking.""" start="00:05:15.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So let's open ebib first.""" start="00:05:18.200" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This is the interface you will see when opening.""" start="00:05:21.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Actually, by default you will not see anything,""" start="00:05:23.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but I have open three bib files.""" start="00:05:27.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""These are opened by default on boot of ebib for me.""" start="00:05:30.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""These are my three main master bib files.""" start="00:05:36.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This is the Zotero master bib file,""" start="00:05:39.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which only Zotero can touch. If I change it,""" start="00:05:41.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""it will be overwritten. This is my new master bib,""" start="00:05:44.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""where I save all the files that I have now started using""" start="00:05:47.960" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""after switching to this approach.""" start="00:05:53.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And then this is the master bib file""" start="00:05:55.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""for literature related to my PhD""" start="00:05:59.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and things that I have already read.""" start="00:06:02.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It's a very convenient interface.""" start="00:06:07.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""There is also search. There is one searching tool,""" start="00:06:09.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""the jump to entry, ebib-jump-to-entry,""" start="00:06:14.141" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which searches through all open bib files for the title.""" start="00:06:16.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So for example, I can search for membrane fabrication,""" start="00:06:23.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because that's something I am currently doing,""" start="00:06:29.320" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and go to this. There is another searching tool,""" start="00:06:35.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""the ebib-search, which searches through the database""" start="00:06:41.920" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that you're on right now""" start="00:06:45.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and it does a full text search,""" start="00:06:48.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""not only in the titles, but everywhere.""" start="00:06:50.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So, for example, I see that in this paper""" start="00:06:53.460" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""if I go to the abstract and search for the word FTIR,""" start="00:06:57.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which is a chemical analysis,""" start="00:07:04.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""it will tell me that it's here.""" start="00:07:06.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Can it find it anywhere else? It cannot. That's okay.""" start="00:07:09.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Let's search for something""" start="00:07:16.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that we'll be able to find more easily,""" start="00:07:18.112" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""like, for example, membrane crystallization""" start="00:07:21.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which is a main focus of my PhD.""" start="00:07:24.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Then it will be able to find it many times,""" start="00:07:27.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""many, many times.""" start="00:07:30.320" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I can also search on the next database""" start="00:07:35.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""or on this database and see where is everything that I want.""" start="00:07:40.300" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So this is different searching tools which are very useful.""" start="00:07:49.480" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Filters""" start="00:07:55.480" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""Then there's also another tool, that is, filters.""" start="00:07:55.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I can filter on any field.""" start="00:08:01.701" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Like, for example, let's say on any field,""" start="00:08:06.200" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and let's say I'm looking now again""" start="00:08:09.740" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""for membrane crystallization.""" start="00:08:13.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This will now filter to all entries.""" start="00:08:16.280" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""You can see right now there's 18 entries here""" start="00:08:19.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that mention these two words together in any field.""" start="00:08:22.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Sometimes this is easier, because this is permanent.""" start="00:08:28.020" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It's not like the search that we find one""" start="00:08:31.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and then if you move, you've lost it,""" start="00:08:33.700" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and you need to find it again.""" start="00:08:35.219" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This is permanent until I say,""" start="00:08:37.886" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""okay, cancel the filter.""" start="00:08:39.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I mostly work with filters,""" start="00:08:41.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I think they're the most convenient.""" start="00:08:43.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Then there's also the ebib-list-recent""" start="00:08:47.060" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which is another very useful command.""" start="00:08:49.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It asks you for a number of days""" start="00:08:51.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and it will show you the files that were added""" start="00:08:53.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""in the most recent.""" start="00:08:56.560" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So for example, show me the literature files""" start="00:08:58.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that were added to this bib file in the last month.""" start="00:09:02.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I will see five files in this case,""" start="00:09:05.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because in this bib file, I have mostly entries""" start="00:09:09.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that I have read, these are the files""" start="00:09:12.700" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I have most recently read and added here.""" start="00:09:15.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""While if I go for example here and say that,""" start="00:09:18.960" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""these are files that maybe I haven't read yet,""" start="00:09:21.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but I was planning to read. So this is something useful.""" start="00:09:25.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Although for things I'm planning to read,""" start="00:09:31.100" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I mostly use the reading list""" start="00:09:33.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that I'm going to show next.""" start="00:09:34.440" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Dependent databases""" start="00:09:36.179" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""But before that,""" start="00:09:36.179" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""a few more neat things that you can do in Ebib.""" start="00:09:37.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I have a list of dependent databases.""" start="00:09:41.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""For ease, I have already opened them here.""" start="00:09:45.020" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""These, as you can see, have two brackets here,""" start="00:09:48.820" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""indicating that they're dependent on phd_literature_1.bib,""" start="00:09:52.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and these, in my case, act as the sort of index file,""" start="00:09:59.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""where I am tagging things based on the structure""" start="00:10:06.379" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that I wanted to have for the organization.""" start="00:10:10.912" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So all the organization is flat,""" start="00:10:14.652" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""all the literature is in phd_literature_1,""" start="00:10:16.479" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""however, I have this file""" start="00:10:20.146" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that has 14 entries.""" start="00:10:23.420" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I have another file here that has 20 entries.""" start="00:10:25.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And these are smaller indexes""" start="00:10:32.900" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""where I can find things easier,""" start="00:10:35.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but things are not limited to one of these.""" start="00:10:38.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Things can be in all of these, or probably not all of these,""" start="00:10:41.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but can be in three or four of these very easily.""" start="00:10:45.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And how you add things is that I go here,""" start="00:10:50.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and I say not r, it's... M for the dependent databases,""" start="00:10:55.220" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and I add entry, and it will tell me""" start="00:11:00.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""&quot;Where do you want to add this?&quot;""" start="00:11:02.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So when I read a new paper,""" start="00:11:03.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I can say okay, this is related to these three tags,""" start="00:11:05.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and this is sort of like, again,""" start="00:11:09.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""it's tagging it and it's putting it""" start="00:11:11.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""there, there, and there.""" start="00:11:13.186" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And then this creates a flat structure""" start="00:11:15.060" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that however has a great organization,""" start="00:11:17.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""similar to how Zettelkasten works""" start="00:11:21.620" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and I really like working with something like this,""" start="00:11:23.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""with dependent databases.""" start="00:11:27.880" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Another feature that I really like,""" start="00:11:33.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""another feature that exists by default... But if I tag,""" start="00:11:36.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""this tagging is done through &quot;m&quot;,""" start="00:11:41.920" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and then I can tag different files here,""" start="00:11:45.280" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and this is to do different actions with these together,""" start="00:11:49.020" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""such as, for example,""" start="00:11:52.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""copy them to a different file,""" start="00:11:53.586" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""with &quot;x&quot; I can export the entries somewhere else,""" start="00:11:55.586" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""there are many things that you can do""" start="00:11:59.460" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""when you mark them.""" start="00:12:00.686" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""By the way, one of them is this function,""" start="00:12:01.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which sees everything that I have marked""" start="00:12:05.320" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and shows me an org-roam-node-find entry""" start="00:12:08.940" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that is filtered to just these files.""" start="00:12:14.786" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I can select one and it will take me""" start="00:12:18.053" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""to my notes on this specific paper.""" start="00:12:20.886" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I find this very useful,""" start="00:12:24.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because I can be looking for something""" start="00:12:25.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and I can say, okay I remember,""" start="00:12:27.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""or I did some filtering,""" start="00:12:30.019" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and I know it's in one of these files""" start="00:12:31.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and now I want to see my in-depth notes on each one""" start="00:12:34.100" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""to remember where exactly I found it.""" start="00:12:37.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I find this kind of filtering,""" start="00:12:41.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""this org-roam related filtering, to be also very effective.""" start="00:12:43.420" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Reading lists""" start="00:12:50.540" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""So now let's finally move to reading list.""" start="00:12:50.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""The reading list in ebib""" start="00:12:54.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""reminds me a lot of the philosophy that Emacs uses.""" start="00:12:55.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""By default, it is extremely bare bones, not very usable,""" start="00:13:00.260" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but it is so customizable, to where you can do""" start="00:13:05.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""anything that you can imagine through it""" start="00:13:10.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because the limit truly is your imagination.""" start="00:13:13.020" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It's how much you can code into this""" start="00:13:16.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that actually makes sense""" start="00:13:21.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and you can actually imagine it working.""" start="00:13:22.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Besides that, you can do anything really.""" start="00:13:25.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So we can open ebib and try to find this paper""" start="00:13:31.700" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that I just added here.""" start="00:13:36.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Then we can create a reading list entry from it.""" start="00:13:42.700" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Here, my reading list prompts me""" start="00:13:48.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""for a priority for this.""" start="00:13:52.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""How urgent it is for me to read this.""" start="00:13:53.419" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It adds a TO-READ, which is a todo entry,""" start="00:13:57.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which helps with organizing my reading list,""" start="00:14:02.220" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because as you may also be able to see, this has an ID,""" start="00:14:04.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because this is an org-roam node,""" start="00:14:08.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""so the TO-READ allows me to organize it inside org-roam.""" start="00:14:11.580" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It saves the citekey, the link to the paper,""" start="00:14:16.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and also tags it with the parent file node""" start="00:14:21.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because I don't like having orphan nodes in my Zettelkasten.""" start="00:14:25.980" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I like everything to be linked to at least one thing.""" start="00:14:30.380" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So everything in the reading list""" start="00:14:33.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""is linked to the parent file.""" start="00:14:35.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And now I can find this in the org-roam-node-find menu,""" start="00:14:39.300" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""here. However, that's not very interesting.""" start="00:14:47.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""In practice, my typical org-roam-node-find""" start="00:14:53.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""does not even include these reading list files""" start="00:14:56.240" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because I don't really care to have them there.""" start="00:14:59.760" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Special org-roam-node-find""" start="00:15:02.440" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""I have a special org-roam-node-find""" start="00:15:02.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that is designed to find these in particular.""" start="00:15:06.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And here these have 22. These are the amount of files""" start="00:15:13.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that are currently in my reading list.""" start="00:15:16.460" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So for example, let's try and press here.""" start="00:15:21.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And magically, this prompts me to select a capture template,""" start="00:15:29.900" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because what it's doing is that I selected this,""" start="00:15:33.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and because of the citekey, it knows""" start="00:15:39.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that it wants to create a new node for that.""" start="00:15:42.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I select the capture template.""" start="00:15:46.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It knows that it wants to create this new node for this.""" start="00:15:47.960" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And now, if I for a second close the reading list,""" start="00:15:56.100" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""now I can already go ahead and take notes on this.""" start="00:16:01.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""This is org-noter, in particular,""" start="00:16:07.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and it makes it all very easy""" start="00:16:09.760" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because it's all integrated in one place.""" start="00:16:11.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""If I then close this and open a new Emacs,""" start="00:16:15.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""we have this, and the reading list allows me to very quickly""" start="00:16:22.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""go from this being reading this item to initializing it.""" start="00:16:27.940" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Another thing that is very useful is that""" start="00:16:32.540" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""everything is sorted by priority.""" start="00:16:35.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I need to increase the font size again""" start="00:16:38.740" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""because I closed the previous Emacs.""" start="00:16:41.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So here, I can select what is high priority,""" start="00:16:48.900" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""what is low priority. I can also change the priority""" start="00:16:52.320" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""without needing to be in this file.""" start="00:16:56.400" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Let's leave this file. I can say, okay, I decided""" start="00:16:58.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that this file is priority B. It needs to be A,""" start="00:17:05.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""which is more urgent.""" start="00:17:08.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""In my system, there's five different priority levels.""" start="00:17:11.900" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""You can get away with less""" start="00:17:16.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but I like to have the very much low ones""" start="00:17:18.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""as this is not urgent at all""" start="00:17:20.960" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but I want to keep it somewhere. A is very urgent""" start="00:17:23.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and B is urgent but just below A.""" start="00:17:27.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And then the C in the middle is just""" start="00:17:31.780" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I will eventually read this""" start="00:17:34.620" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but not something I want to focus my attention on right now.""" start="00:17:36.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So this is mostly about reading list.""" start="00:17:41.920" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I can also show, for example,""" start="00:17:45.440" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I have this if I finalize something,""" start="00:17:46.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""if I read it. For example, I created a note for this new thing.""" start="00:17:50.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Let's say I finished reading it.""" start="00:17:56.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I want to remove from my reading list.""" start="00:17:59.080" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""It's also just one command and it's done.""" start="00:18:02.180" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Annotations""" start="00:18:05.640" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""If we now return to the presentation,""" start="00:18:05.640" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""the last thing I want to show is annotations.""" start="00:18:08.740" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So for annotations, it's the idea that sometimes""" start="00:18:11.700" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""you just need to find something in Ebib quickly.""" start="00:18:17.120" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I'm here and I'm looking for something.""" start="00:18:23.140" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I said I'm here and I'm looking for something.""" start="00:18:26.680" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And as you can see, there's the annote file everywhere,""" start="00:18:31.000" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""the annote entry, which is a very very small description""" start="00:18:35.200" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""of things that I want to remember for this paper.""" start="00:18:40.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""So I can be scrolling here or scrolling""" start="00:18:43.800" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""in one of the smaller files""" start="00:18:48.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and saying this was in this subsection,""" start="00:18:51.812" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and which paper was it, and I can scroll,""" start="00:18:56.860" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""read all these annotes.""" start="00:18:59.520" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Each annote takes like 15 seconds to read,""" start="00:19:01.712" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""and really decide, okay,""" start="00:19:04.920" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""it was this paper that I wanted, good.""" start="00:19:07.360" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Now I can open the note for it, go there, and it's very easy.""" start="00:19:09.800" video="mainVideo-reference" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:19:21.820" video="mainVideo-reference" id="subtitle"]]</div>[[!template text="""So I think that's all. I would like to thank you for your time.""" start="00:19:21.820" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I would love to see your questions either in IRC,""" start="00:19:25.720" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""I will be, maybe I've already answered""" start="00:19:29.320" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""some of your questions there in the Etherpad,""" start="00:19:32.200" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""or right now, we're going to the live Q&A""" start="00:19:35.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""where I'd love to interact with everyone and have a discussion.""" start="00:19:37.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""However, if you don't have any questions right now,""" start="00:19:42.160" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""but you have a question later on, feel free to send me an email.""" start="00:19:44.480" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""My mail is also on the site.""" start="00:19:48.560" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""And if you're curious how all this &quot;magic&quot; worked,""" start="00:19:51.740" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""feel free to go to my Github and see the ebib section""" start="00:19:54.600" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""here that will also be linked in the doc page,""" start="00:20:00.840" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""where you can see all the configuration""" start="00:20:04.040" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""that I have done in Ebib for everything to work.""" start="00:20:06.280" video="mainVideo-reference" id="subtitle"]]
+[[!template text="""Thank you again and have a wonderful EmacsConf!""" start="00:20:10.920" video="mainVideo-reference" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [vidianosgiannitsis@gmail.com](mailto:vidianosgiannitsis@gmail.com?subject=Comment%20for%20EmacsConf%202023%20reference%3A%20Emacs%20as%20a%20fully-fledged%20reference%20manager)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/reference-before.md b/2025/info/reference-before.md
new file mode 100644
index 00000000..66a6bb92
--- /dev/null
+++ b/2025/info/reference-before.md
@@ -0,0 +1,25 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 21-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-reference>
+Etherpad: <https://pad.emacsconf.org/2025-reference>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-reference"><source src="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--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="mainVideo-reference" data="""
+00:00.820 Introduction
+01:43.600 Capture
+04:00.920 Organizing
+05:03.479 Ebib
+07:55.480 Filters
+09:36.179 Dependent databases
+12:50.540 Reading lists
+15:02.440 Special org-roam-node-find
+18:05.640 Annotations
+19:21.820 Wrapping up
+
+"""]]<div></div>Duration: 20:14 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-reference">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--main.webm">Download --main.webm (103MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-reference--emacs-as-a-fullyfledged-reference-manager--vidianos-giannitsis--script.org">Download --script.org</a></li><li><a href="https://youtu.be/XjhnY4WuQRQ">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/reference-nav.md b/2025/info/reference-nav.md
new file mode 100644
index 00000000..12badcf3
--- /dev/null
+++ b/2025/info/reference-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/org-babel">Making Org-Babel reactive</a>
+Next by track: <a href="/2025/talks/gmail">org-gmail: A deep integration of Gmail into your Org Mode</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/sat-close-after.md b/2025/info/sat-close-after.md
new file mode 100644
index 00000000..c37a7f60
--- /dev/null
+++ b/2025/info/sat-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%20sat-close%3A%20Saturday%20closing%20remarks%20%2F%20open%20session)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/sat-close-before.md b/2025/info/sat-close-before.md
new file mode 100644
index 00000000..a43ba272
--- /dev/null
+++ b/2025/info/sat-close-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 10-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-sat-close>
+Etherpad: <https://pad.emacsconf.org/2025-sat-close>
+Status: Q&A finished, IRC and pad will be archived on this page
+
+
+
+
+
+<div class="vid mainVideo"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sat-close">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-close--saturday-closing-remarks--intro.webm">Download --intro.webm</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/sat-close-nav.md b/2025/info/sat-close-nav.md
new file mode 100644
index 00000000..5c247a9a
--- /dev/null
+++ b/2025/info/sat-close-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/graphics">Modern Emacs/Elisp hardware/software accelerated graphics</a>
+Next by track: <a href="/2025/talks/sun-close">Sunday closing remarks</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/sat-open-after.md b/2025/info/sat-open-after.md
new file mode 100644
index 00000000..2b428ad8
--- /dev/null
+++ b/2025/info/sat-open-after.md
@@ -0,0 +1,143 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="sat-open-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Tracks""" start="00:00:00.000" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""Welcome to EmacsConf, where we have fun""" start="00:00:00.000" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""exploring just how much we can do with a text editor.""" start="00:00:02.247" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""There's a General track and a Development track,""" start="00:00:05.485" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""but really, you'll probably find""" start="00:00:07.925" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""interesting things on both tracks""" start="00:00:09.484" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""no matter what your level of experience is,""" start="00:00:11.079" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so don't feel limited to one or the other.""" start="00:00:13.216" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Watching and participating""" start="00:00:16.000" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""The best parts of EmacsConf are the conversations.""" start="00:00:16.000" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The wiki has a page on how to watch and participate,""" start="00:00:19.393" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and I'll give you a quick overview as well.""" start="00:00:22.486" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can watch both streams at live.emacsconf.org""" start="00:00:24.910" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""using free and open source software.""" start="00:00:28.885" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Using a streaming media player like mpv""" start="00:00:31.186" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""seems to be the best way to watch in terms of performance""" start="00:00:34.388" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""but there are also web-based players""" start="00:00:37.275" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""just in case that's all you've got.""" start="00:00:39.241" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The schedule shows the General track on top""" start="00:00:41.378" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and the Development track on the bottom,""" start="00:00:44.064" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so you can see what else is going on.""" start="00:00:45.603" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""As you're watching the talks,""" start="00:00:47.820" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""you can refer to the schedule in another window.""" start="00:00:49.819" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Hover over the boxes to see the times and titles,""" start="00:00:52.355" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and click on the boxes in the schedule""" start="00:00:55.601" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""to jump to the talk's page for more details.""" start="00:00:57.614" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Other schedule formats""" start="00:01:00.607" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""You can also get the schedule as an iCalendar file""" start="00:01:00.607" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""or as an Org file in different time zones.""" start="00:01:03.587" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The Org file has some links to talk resources""" start="00:01:05.621" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and might be handy as a starting point for your notes.""" start="00:01:08.255" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""BigBlueButton""" start="00:01:10.601" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""Many talks will be followed by""" start="00:01:10.601" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""live Q&A web conferences with the speaker,""" start="00:01:12.145" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""which will be done in BigBlueButton or BBB.""" start="00:01:14.572" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""These are indicated with a solid border on the schedule""" start="00:01:17.734" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and by Q&A: BBB on the schedule page.""" start="00:01:20.819" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can join the web conference room""" start="00:01:24.001" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""by clicking on the BBB link""" start="00:01:25.901" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""on the schedule page or the talk's webpage.""" start="00:01:27.467" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Then you can ask your questions yourself when the Q&A starts.""" start="00:01:30.176" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""To improve performance, please keep your webcam off""" start="00:01:34.215" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and stay muted until it's your turn to talk.""" start="00:01:37.211" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you don't like Javascript,""" start="00:01:39.890" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""you can still ask questions via IRC""" start="00:01:41.692" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and the hosts can read them out for you.""" start="00:01:43.643" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""On and off the stream""" start="00:01:46.036" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""We're probably going to automatically switch""" start="00:01:46.036" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""between talks and Q&A sessions,""" start="00:01:47.895" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so the transitions on the stream might be a little sudden.""" start="00:01:49.483" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""People in the BigBlueButton room""" start="00:01:52.897" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""can continue the conversation""" start="00:01:54.439" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""even after the talk moves off-stream,""" start="00:01:55.862" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and you can also reach out to the speakers""" start="00:01:58.220" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""using the contact information on the talk page.""" start="00:02:00.271" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Etherpad and IRC""" start="00:02:03.217" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""Other talks will have Q&A via Etherpad or IRC,""" start="00:02:03.217" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""depending on what the speakers prefer.""" start="00:02:06.302" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""This is indicated in the schedule with a dashed border""" start="00:02:08.542" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and on the schedule page as well.""" start="00:02:11.380" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The schedule pages have quick shortcuts so that you can""" start="00:02:13.510" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""find out more about talks, open the Etherpads,""" start="00:02:16.543" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and join the Q&A sessions.""" start="00:02:19.053" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The watch page has more tips""" start="00:02:21.204" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""on how to make the most of Q&A.""" start="00:02:23.366" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Etherpad""" start="00:02:25.456" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""If you can, please add notes and ask questions""" start="00:02:25.456" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""in the Etherpad for the talk.""" start="00:02:28.330" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""That makes it easier""" start="00:02:30.133" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""for everyone to share their notes,""" start="00:02:31.598" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and speakers and hosts can read the questions from there.""" start="00:02:33.130" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""We'll copy the notes to the talk pages afterwards.""" start="00:02:36.355" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""We have one pad for each talk,""" start="00:02:39.622" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""so you can follow the links to get to the next one""" start="00:02:41.497" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""or go back to the schedule and get the link from there.""" start="00:02:43.773" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you have general feedback about""" start="00:02:46.828" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""the conference itself, please put it in""" start="00:02:48.423" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""pad.emacsconf.org/emacsconf.""" start="00:02:50.668" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can also use this as a community message board""" start="00:02:54.593" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""for things like Help Wanted.""" start="00:02:57.550" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""IRC""" start="00:02:59.440" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""Internet Relay Chat or IRC can be another great way""" start="00:02:59.440" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""to be part of lots of conversations.""" start="00:03:02.800" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can use chat.emacsconf.org to join the IRC channels""" start="00:03:05.176" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""through your web browser.""" start="00:03:09.451" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The tabs on the left can help you""" start="00:03:11.046" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""switch between the different channels.""" start="00:03:12.857" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""There's #emacsconf-gen for the General track""" start="00:03:14.892" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and #emacsconf-dev for the Development track.""" start="00:03:17.611" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you need to reach us, you can join #emacsconf-org""" start="00:03:20.490" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""or e-mail emacsconf-org-private@gnu.org.""" start="00:03:23.957" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can use #emacsconf for hallway conversations.""" start="00:03:29.475" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Captions""" start="00:03:32.778" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""Once again, we're going to be streaming with open captions""" start="00:03:32.778" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""for most of the talks this year, thanks to our speakers and""" start="00:03:35.588" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""captioning volunteers.""" start="00:03:38.480" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""The captioned talks are indicated on the schedule,""" start="00:03:39.896" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and with any luck, we'll be posting""" start="00:03:42.523" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""videos and transcripts on talk pages""" start="00:03:44.313" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""shortly after the talks start.""" start="00:03:46.124" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If you need additional accommodations, please let us know""" start="00:03:47.884" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""in #emacsconf-org and we'll see""" start="00:03:51.070" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""if we can make things happen.""" start="00:03:54.017" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""status.emacsconf.org""" start="00:03:55.238" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""If something goes down, we'll update status.emacsconf.org.""" start="00:03:55.238" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""If it doesn't look like we've noticed yet,""" start="00:03:59.918" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""please let us know in the #emacsconf-org IRC channel,""" start="00:04:01.744" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""where we will be quietly panicking.""" start="00:04:05.263" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Guidelines for conduct""" start="00:04:07.282" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""In all of these conversations, please keep in mind""" start="00:04:07.282" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""our guidelines for conduct.""" start="00:04:09.705" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You can find them on the wiki,""" start="00:04:11.239" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and they basically boil down to: please be nice. Thank you!""" start="00:04:12.620" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Videos""" start="00:04:16.020" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""If all goes well, the prerecorded talks and transcripts""" start="00:04:16.020" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""should be available from the talk pages""" start="00:04:18.892" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""shortly after they start playing,""" start="00:04:20.538" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and we'll post the recordings of live talks""" start="00:04:22.039" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and Q&A sessions within the next few weeks.""" start="00:04:24.144" video="mainVideo-sat-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Let's get started!""" start="00:04:26.776" video="mainVideo-sat-open" id="subtitle"]]</div>[[!template text="""All right, let's get going.""" start="00:04:26.776" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""You might see Leo Vivier, Corwin Brust,""" start="00:04:28.248" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and Amin Bandali hosting the various tracks.""" start="00:04:31.215" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""I will run around mostly backstage,""" start="00:04:33.954" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""and you'll probably meet us in the closing remarks.""" start="00:04:35.768" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""That's also where we get to thank""" start="00:04:37.794" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""all the people and organizations""" start="00:04:39.244" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""who make EmacsConf possible.""" start="00:04:40.660" video="mainVideo-sat-open" id="subtitle"]]
+[[!template text="""Let's have fun at EmacsConf!""" start="00:04:42.550" video="mainVideo-sat-open" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+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/2025/info/sat-open-before.md b/2025/info/sat-open-before.md
new file mode 100644
index 00000000..5842eeb0
--- /dev/null
+++ b/2025/info/sat-open-before.md
@@ -0,0 +1,28 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 5-min talk ; Q&A: Etherpad
+Etherpad: <https://pad.emacsconf.org/2025-sat-open>
+Status: Q&A finished, IRC and pad will be archived on this page
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-sat-open"><source src="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-sat-open--saturday-opening-remarks--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-sat-open--saturday-opening-remarks--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="mainVideo-sat-open" data="""
+00:00.000 Tracks
+00:16.000 Watching and participating
+01:00.607 Other schedule formats
+01:10.601 BigBlueButton
+01:46.036 On and off the stream
+02:03.217 Etherpad and IRC
+02:25.456 Etherpad
+02:59.440 IRC
+03:32.778 Captions
+03:55.238 status.emacsconf.org
+04:07.282 Guidelines for conduct
+04:16.020 Videos
+04:26.776 Let's get started!
+
+"""]]<div></div>Duration: 04:51 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sat-open">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sat-open--saturday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li><li><a href="https://youtu.be/0B9lsD8Z_6M">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/sat-open-nav.md b/2025/info/sat-open-nav.md
new file mode 100644
index 00000000..e7317183
--- /dev/null
+++ b/2025/info/sat-open-nav.md
@@ -0,0 +1,6 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Next by track: <a href="/2025/talks/org-babel">Making Org-Babel reactive</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/schemacs-after.md b/2025/info/schemacs-after.md
new file mode 100644
index 00000000..65fe55f1
--- /dev/null
+++ b/2025/info/schemacs-after.md
@@ -0,0 +1,924 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="schemacs-mainVideo-transcript"></a><h1>Transcript</h1>
+
+[[!template text="""Hi, EmacsConf 2025. My name is Ramin Honary,""" start="00:00:01.060" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and I'd like to talk to you today""" start="00:00:05.640" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""about my project called Schemacs""" start="00:00:07.560" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""which I presented last year.""" start="00:00:10.400" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Back then it was called &quot;Gypsum&quot;""" start="00:00:12.080" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and the name has since changed.""" start="00:00:13.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So my name is Ramin Honary.""" start="00:00:18.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'm an Emacs enthusiast, have been since 2017 or so.""" start="00:00:20.240" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'm a full stack software developer.""" start="00:00:25.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I love Haskell, Scheme,""" start="00:00:27.760" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""anything functional programming related,""" start="00:00:29.301" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and of course Emacs.""" start="00:00:31.434" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I started learning Scheme about three years ago,""" start="00:00:32.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and this is my third time presenting""" start="00:00:36.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""at EmacsConf.""" start="00:00:38.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So the Schemacs project that I'm talking to,""" start="00:00:40.800" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'm talking about to you today,""" start="00:00:46.480" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""was originally called &quot;Gypsum&quot;.""" start="00:00:48.160" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The reason I did not call it &quot;Schemacs&quot;""" start="00:00:50.280" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""was that the name &quot;Schemacs&quot; was taken on GitHub.""" start="00:00:53.360" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But in the past year,""" start="00:00:58.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I was able to get the permission""" start="00:00:59.568" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""of the author of GitHub's Schemacs""" start="00:01:02.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""project to name my project the same thing,""" start="00:01:04.480" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""even though it's a very similar project.""" start="00:01:08.841" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So I changed the name.""" start="00:01:11.321" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Let me see if I can quickly show the screen.""" start="00:01:14.720" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So yeah, I have archived the old project.""" start="00:01:19.701" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It's still there, but there's an explanation in""" start="00:01:24.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the readme file and a screen grab""" start="00:01:27.720" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""of the conversation I had""" start="00:01:30.168" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""with the original author of GitHub Schemacs.""" start="00:01:31.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""My Schemacs is not on GitHub at all.""" start="00:01:36.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It's only on Codeberg. So please don't get confused.""" start="00:01:38.680" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But yes, I received permission""" start="00:01:43.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""to change the name and so I did.""" start="00:01:46.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And I would like to give a quick shout-out to""" start="00:01:50.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""user &quot;Tusharhero&quot; for helping me with that.""" start="00:01:52.840" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This person really helped make that name change happen.""" start="00:01:57.240" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So back to the slides.""" start="00:02:02.640" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""The scope of the project""" start="00:02:07.200" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""And so now I'd like to clarify the scope of the project.""" start="00:02:07.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I don't think I quite made it clear""" start="00:02:11.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""well enough last year,""" start="00:02:13.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""but... Although I'm definitely cloning""" start="00:02:14.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the Emacs Lisp programming language,""" start="00:02:18.401" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the actual scope of the Schemacs project""" start="00:02:20.168" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""is to make an Emacs-like app platform for Scheme.""" start="00:02:25.268" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I don't consider Emacs to be a text editor.""" start="00:02:29.760" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I consider Emacs to be a Lisp app platform.""" start="00:02:32.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So it's similar to something like the""" start="00:02:38.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""World Wide Web, or Microsoft's .NET app platform, or Java.""" start="00:02:39.840" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""These are all examples of app platforms.""" start="00:02:48.540" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I would like Schemacs to make it easy""" start="00:02:52.560" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""for not only people to use it for""" start="00:02:55.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""things like editing text or, you know, for""" start="00:02:59.400" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""using your computer through a command line""" start="00:03:03.480" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""or manipulating your Git repository.""" start="00:03:06.440" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'd also like you to be able to create simple""" start="00:03:10.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""GUIs or TUIs using Scheme.""" start="00:03:13.160" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So that's also one of the goals of this project.""" start="00:03:16.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It will of course have an Emacs-like text editor,""" start="00:03:19.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and I will clone Emacs Lisp.""" start="00:03:23.080" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So hopefully GNU Emacs users""" start="00:03:25.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""will feel comfortable moving over to Schemacs""" start="00:03:29.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""because they'll be able to use your init.""" start="00:03:32.780" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You'll be able to use your init.el file.""" start="00:03:35.680" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So configuring and scripting Schemacs""" start="00:03:40.400" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""should be done in Scheme.""" start="00:03:43.240" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'd like to encourage scripting in Scheme""" start="00:03:44.480" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and creating new workflows and macros in Scheme.""" start="00:03:47.680" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It will support Emacs Lisp depending on""" start="00:03:51.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""how much of the Emacs Lisp interpreter I can clone.""" start="00:03:54.268" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""That will be supported but not encouraged.""" start="00:03:59.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But you should still be able to run your init.el.""" start="00:04:03.040" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And I would like it to be good enough,""" start="00:04:06.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""this Emacs Lisp interpreter""" start="00:04:08.840" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""should be good enough to run packages from ELPA.""" start="00:04:10.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Although it will probably be some time""" start="00:04:13.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""before it will be able to run""" start="00:04:15.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""something as large as Org Mode or Magit.""" start="00:04:17.560" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Difference with Robin Templeton's project (Guile-Emacs)""" start="00:04:24.760" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""It is slightly different from the Guile-Emacs project.""" start="00:04:24.760" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This is the work of Robin Templeton""" start="00:04:27.440" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""who presented last year.""" start="00:04:30.334" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Guile-Emacs links the Guile runtime""" start="00:04:32.220" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""into the Emacs executable.""" start="00:04:36.034" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It's not a Scheme application. Emacs,""" start="00:04:38.501" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the core of Emacs is written in C.""" start="00:04:41.581" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Guile, the core of Guile is written in C.""" start="00:04:44.201" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""What Robin Templeton has done is, at the C level, linked""" start="00:04:48.121" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""&quot;libguile.so&quot; into Emacs and then provided""" start="00:04:53.701" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""a programming layer where you can""" start="00:04:56.834" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""call the Scheme interpreter from Emacs Lisp""" start="00:04:59.501" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""so that you can run Scheme programs from within Emacs""" start="00:05:04.760" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""without having to launch a separate process""" start="00:05:11.280" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and communicate over a channel such as a socket.""" start="00:05:13.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You won't need &quot;SLIME&quot; or anything.""" start="00:05:18.040" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The Guile interpreter is just right there inside of Emacs.""" start="00:05:19.840" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But my project is not like this at all.""" start="00:05:23.420" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Schemacs is written completely from the ground up""" start="00:05:26.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""in R7RS-compliant Scheme. And because it's R7RS-compliant,""" start="00:05:28.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""it's not bound to any one particular Scheme implementation,""" start="00:05:35.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""although Guile is the reference implementation.""" start="00:05:38.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""One goal of this project is to be able to run""" start="00:05:39.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Schemacs on any R7RS-compliant Scheme implementation.""" start="00:05:42.360" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Progress made since last year""" start="00:05:49.720" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""The work that I've done this past year mostly is internal.""" start="00:05:49.720" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""There's not much that you can see on the surface.""" start="00:05:56.260" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But the most... One of the most important things that I""" start="00:06:00.940" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""did was I rewrote the parser in R7RS Scheme,""" start="00:06:04.520" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""so it no longer depends on""" start="00:06:06.840" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the Guile regular expressions library.""" start="00:06:07.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The parser now also provides source locations,""" start="00:06:12.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""so if an error occurs in Emacs Lisp,""" start="00:06:14.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""there will be a stack trace""" start="00:06:18.940" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and it will show you where in the source code""" start="00:06:20.568" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the error occured. This was not possible last year.""" start="00:06:23.634" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And because it no longer depends on Guile,""" start="00:06:28.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I can make it work on multiple Scheme implementations.""" start="00:06:30.861" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So far, I've been able to get it to run on""" start="00:06:34.521" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the Chibi Scheme interpreter""" start="00:06:36.821" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and the Gauche Scheme interpreter, as well as""" start="00:06:38.921" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Guile, which is the reference implementation.""" start="00:06:41.281" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""For a short time, it did work also on Chez Scheme,""" start="00:06:44.280" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the Chez Scheme compiler, using Gwen Weinholt's &quot;Akku,&quot;""" start="00:06:48.560" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""which is a program that translates R7RS Scheme to R6RS Scheme.""" start="00:06:53.180" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And with that translation, because Chez Scheme""" start="00:06:59.300" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""is pretty strictly an R6RS compiler,""" start="00:07:04.520" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the translation allows you to run R7RS programs.""" start="00:07:07.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But due to some change, I'm not sure where,""" start="00:07:11.520" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""it may have been changed in the Schemacs source code,""" start="00:07:15.220" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""or it may have been a change to Akku,""" start="00:07:17.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""but it no longer builds on Chez.""" start="00:07:19.640" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It did at one point. I'd like to try to fix that.""" start="00:07:21.240" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Portable React-like GUI""" start="00:07:28.040" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""The second most important thing that I've worked on is a""" start="00:07:28.040" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""portable React-like GUI. And so React,""" start="00:07:30.720" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""for anyone who has done web programming,""" start="00:07:36.440" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""is a very popular framework for programming web applications.""" start="00:07:41.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And I've provided something""" start="00:07:46.840" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""very similar to that in Scheme now.""" start="00:07:48.234" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So it works. I have constructed a DOM data structure""" start="00:07:49.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""in Scheme. It's just an ordinary Scheme data structure.""" start="00:07:54.680" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It works like the web's &quot;Document Object Model&quot;""" start="00:07:59.080" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""or the &quot;DOM&quot; data structure.""" start="00:08:01.520" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And then this Scheme DOM data structure can be rendered""" start="00:08:03.961" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""using any GUI framework that is convenient""" start="00:08:10.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""for the Scheme implementation that you're targeting.""" start="00:08:13.060" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And you should be able to implement""" start="00:08:16.240" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""also rendering to a CLI as well.""" start="00:08:18.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The current reference implementation""" start="00:08:22.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""is using a framework called Guile-GI.""" start="00:08:24.601" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This is the &quot;GObject Introspection&quot; framework.""" start="00:08:27.760" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It's a very simple""" start="00:08:30.640" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""GObject Introspection framework for Guile,""" start="00:08:31.968" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and it binds to GTK3 on Linux.""" start="00:08:36.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""There's a similar framework called G-Golf""" start="00:08:40.980" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""which I'd like to begin using as well, also for Guile.""" start="00:08:42.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""G-Golf seems to be a bit more well-maintained, a bit...""" start="00:08:48.360" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It has better features. G-Golf may be a""" start="00:08:53.740" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""better rendering backend for the reference""" start="00:08:57.800" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""implementation, but I would like to provide both.""" start="00:09:00.040" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demo""" start="00:09:06.040" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""I will give a demo of this now.""" start="00:09:06.040" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Unfortunately not a whole lot""" start="00:09:07.934" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""to see compared to last year.""" start="00:09:13.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""First thing I'd like to show is""" start="00:09:18.140" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""that I now have a Makefile. You can look inside""" start="00:09:20.640" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""this Makefile and if you're able to read a Makefile,""" start="00:09:24.280" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""you can see that I have several targets now available.""" start="00:09:28.401" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You can build Schemacs for Guile,""" start="00:09:31.968" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""you can build Schemacs for Gambit,""" start="00:09:35.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""or Stklos, or Chicken, or Chez,""" start="00:09:36.668" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""although none of these (except for Guile)""" start="00:09:40.334" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""currently works. These targets will actually""" start="00:09:42.901" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""build the source code, but then you would have to""" start="00:09:51.168" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""load it into the REPL separately.""" start="00:09:56.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""There are targets for launching""" start="00:09:59.434" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""a Gauche REPL and a Chibi REPL.""" start="00:10:02.468" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You can also run the Emacs Lisp tests""" start="00:10:06.468" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""in Gauche and Chibi.""" start="00:10:10.868" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You can also start a Guile REPL through this Makefile.""" start="00:10:13.068" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So I will do that right now in the shell.""" start="00:10:19.080" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""(...make the text larger...there we go...)""" start="00:10:27.500" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""OK, so we have this directory of the source code.""" start="00:10:31.834" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Let's just begin by running &quot;guile.sh&quot;.""" start="00:10:38.480" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This will launch a REPL and you can load &quot;main-guile&quot;.""" start="00:10:44.560" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This will launch the GUI. This is the basic""" start="00:10:52.601" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""proof of concept GUI that uses Guile-GI.""" start="00:10:59.720" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So it may be hard to see.""" start="00:11:04.801" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I cannot change the size of the text yet.""" start="00:11:10.520" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I've implemented the M-: feature""" start="00:11:14.560" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""where you can eval in a minibuffer some Scheme code.""" start="00:11:17.334" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""(string-append &quot;hello&quot; ...)""" start="00:11:24.068" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It outputs the result in the buffer.""" start="00:11:34.440" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This is basically the &quot;\*Messages\*&quot; buffer.""" start="00:11:38.280" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And that's all the more that I have.""" start="00:11:40.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This is the same state it was in last year.""" start="00:11:42.620" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It hasn't changed a whole lot since back then.""" start="00:11:45.480" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Additional changes""" start="00:11:48.700" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""But I have made additional changes.""" start="00:11:48.700" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So first of all, you can run""" start="00:11:52.820" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""(let me just go back into the Guile)... you can""" start="00:12:05.380" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""run the Emacs Lisp interpreter tests, so &quot;elisp-tests&quot;.""" start="00:12:10.201" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""As you can see, it gives you a stack trace.""" start="00:12:16.620" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So this is an error that I've been able to reproduce.""" start="00:12:18.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I know exactly what the cause of this error is.""" start="00:12:22.040" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It is not finding a variable""" start="00:12:24.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""because the closure is not correctly""" start="00:12:27.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""capturing its environment. So there should be a variable""" start="00:12:30.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""in the closure, but that variable has not been captured""" start="00:12:35.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and so it is causing an error.""" start="00:12:38.720" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It is currently loading &quot;byte-run.el&quot;.""" start="00:12:43.460" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Let me show you what code that is here.""" start="00:12:48.081" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So I've copied into the source repository""" start="00:12:49.821" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""for Schemacs some of the Elisp code from GNU Emacs.""" start="00:12:53.501" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So I have this &quot;subr.el&quot;.""" start="00:12:58.761" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This declares most of the core of Emacs Lisp""" start="00:13:04.421" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""that's not written in C.""" start="00:13:09.861" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""There's also &quot;byte-run.el&quot;. Schemacs Emacs Lisp can now""" start="00:13:12.861" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""evaluate this. This is where functions like &quot;defun&quot; are""" start="00:13:19.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""defined, and &quot;defmacro&quot;. So as you can see,""" start="00:13:24.380" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""defun itself is a defmacro defined right here.""" start="00:13:28.360" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It's written in Emacs Lisp itself,""" start="00:13:30.800" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""defined in terms of defalias.""" start="00:13:34.860" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So I can evaluate &quot;byte-run&quot;,""" start="00:13:37.720" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I can evaluate &quot;macroexp&quot;,""" start="00:13:40.240" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and the failure occurs somewhere in &quot;subr.el&quot;.""" start="00:13:42.740" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Although if you look at the stack trace,""" start="00:13:46.020" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""it doesn't provide all the necessary information.""" start="00:13:48.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So it appears to be happening in byte-run.el.""" start="00:13:51.160" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Really, it's an error that's occurring inside of a macro,""" start="00:13:56.440" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and the macro call site is somewhere in subr.el.""" start="00:14:00.620" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Anyway, take note of this stack trace.""" start="00:14:05.800" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This was run from within Guile.""" start="00:14:08.640" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Other Scheme implementations""" start="00:14:12.020" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""Now what I've done this past year""" start="00:14:12.020" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""is make it work on other Scheme implementations.""" start="00:14:14.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Use &quot;make&quot; to launch a Gauche REPL.""" start="00:14:19.480" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Now I'm inside of Gauche.""" start="00:14:23.834" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This is the command that""" start="00:14:26.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""you would use to launch a Gauche REPL.""" start="00:14:27.234" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And I can load the same program (load &quot;elisp-tests.scm&quot;).""" start="00:14:30.080" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You get the exact same result as Guile.""" start="00:14:38.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So we have two different Scheme implementations""" start="00:14:42.760" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""producing the same result.""" start="00:14:45.800" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Let's try &quot;make&quot; a Chibi REPL. This is Chibi Scheme.""" start="00:14:46.800" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And you can (load &quot;elisp-tests.scm&quot;).""" start="00:14:53.080" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Chibi is a bit slower, but you get the exact same result.""" start="00:15:00.220" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So we have three different Scheme implementations""" start="00:15:04.081" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""all running Emacs Lisp,""" start="00:15:07.401" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and all producing the same result.""" start="00:15:11.540" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I think that's...""" start="00:15:14.040" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'm fairly proud of that accomplishment.""" start="00:15:14.768" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I was able to get the code written to the point""" start="00:15:17.100" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""where it actually runs on multiple implementations.""" start="00:15:21.201" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You can also try making it for other Scheme compilers""" start="00:15:24.880" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""like &quot;schemacs-mitscheme&quot; for example,""" start="00:15:30.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""but this will fail.""" start="00:15:35.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You can try building it for &quot;schemacs-chez&quot;,""" start="00:15:40.020" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Let's try Chez... there we go.""" start="00:15:46.680" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And it will use Akku,""" start="00:15:51.801" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and it will fetch the necessary dependencies.""" start="00:15:54.234" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But it fails, and I haven't been able to""" start="00:15:58.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""debug that quite yet.""" start="00:16:03.434" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Stklos fails for a similar reason.""" start="00:16:05.960" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Gambit... Chicken still doesn't build all the way yet.""" start="00:16:13.140" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The Makefile at least has places for it.""" start="00:16:21.700" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""If anyone can help me out and get Schemacs to compile""" start="00:16:27.121" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""on these other Scheme implementations,""" start="00:16:30.968" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'd appreciate it.""" start="00:16:32.734" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I can probably figure it out myself,""" start="00:16:34.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""but that will take more time.""" start="00:16:35.468" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And let me just show you quickly""" start="00:16:37.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the test program.""" start="00:16:40.121" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Basically this is the Emacs Lisp test program""" start="00:16:41.721" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""that I was just running, and it produces an error.""" start="00:16:44.501" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""All it does is it loads these files here in this order,""" start="00:16:48.581" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and it fails right around here.""" start="00:16:53.221" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So it's able to load these two.""" start="00:16:55.181" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And yeah, that's what I've accomplished""" start="00:16:58.320" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""on the Emacs Lisp side of things.""" start="00:17:01.361" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""GUI framework""" start="00:17:06.200" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""The next thing I want to show you is the GUI framework""" start="00:17:06.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""that I've written, which I'm fairly proud of so far.""" start="00:17:09.120" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So this is the GUI framework""" start="00:17:13.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""(oops, I better launch it again, OK...)""" start="00:17:15.834" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and let me show you the tests.""" start="00:17:19.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So here in the tests, you can start to see""" start="00:17:22.601" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""some examples of how you use it.""" start="00:17:25.701" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So here is a &quot;counter&quot; test, and this is kind of like""" start="00:17:29.068" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the &quot;hello world&quot; of reactive programming frameworks,""" start="00:17:31.834" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""where you have a state variable,""" start="00:17:35.941" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""sometimes called an &quot;observable.&quot;""" start="00:17:38.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'm calling it &quot;number&quot;,""" start="00:17:41.660" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and it uses &quot;=&quot; to check if the state has updated.""" start="00:17:43.440" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""If an update occurs and the new value is different""" start="00:17:49.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""from the old value according to the &quot;=&quot; function,""" start="00:17:52.821" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""then trigger a state update in the GUI as well.""" start="00:17:55.033" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Initialize to 0, bound to &quot;number&quot;.""" start="00:17:59.233" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I have a &quot;button&quot; function which creates a simple button.""" start="00:18:03.100" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""It takes a label and an action.""" start="00:18:06.133" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Right here you see the &quot;div&quot; command.""" start="00:18:07.833" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This is what creates a &quot;div&quot;.""" start="00:18:10.866" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Using the properties, I describe that this div is a""" start="00:18:13.040" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""push-button and the &quot;on-button-push&quot; is an action.""" start="00:18:19.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The action is to update the variable &quot;number&quot;""" start="00:18:22.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""using whatever function or lambda was provided to it.""" start="00:18:25.266" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And then the content that you see on screen,""" start="00:18:30.400" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""that you will see on screen when it runs,""" start="00:18:31.966" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""is here. You create a &quot;div-pack cut-vertical&quot;.""" start="00:18:34.034" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""You declare two buttons and then you declare""" start="00:18:38.668" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""this &quot;use-vars&quot; which will take the content""" start="00:18:43.234" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""of this variable here, this observable,""" start="00:18:46.801" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and place it into the GUI next to the buttons here.""" start="00:18:48.834" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So what you will see on screen is""" start="00:18:51.734" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""a &quot;plus&quot; button which increments,""" start="00:18:54.234" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""here is the &quot;increment&quot; function,""" start="00:18:57.068" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""a &quot;minus&quot; button which decrements,""" start="00:18:59.321" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and then the content of the variable that is""" start="00:19:02.780" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""being incremented and decremented.""" start="00:19:05.480" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The advantage of these reactive frameworks is that""" start="00:19:09.700" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""with very few lines of code""" start="00:19:11.866" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""you can create fairly complex interfaces.""" start="00:19:13.066" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The less code you have to write,""" start="00:19:16.033" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the fewer chances you have to make mistakes.""" start="00:19:18.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So let's just run this program.""" start="00:19:21.233" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""This was the &quot;counter-test.&quot;""" start="00:19:23.968" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And that is the debug window. Here's the &quot;counter.&quot;""" start="00:19:33.293" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'm sorry it's not much larger than this.""" start="00:19:35.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""But here's the &quot;plus&quot; button, the &quot;minus&quot; button,""" start="00:19:38.453" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and here's the &quot;number&quot;, 0.""" start="00:19:41.133" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And I can increment or decrement as much as I like.""" start="00:19:43.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So yeah, that's kind of the hello world""" start="00:19:49.793" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""of reactive programming. (I'll reboot the REPL...)""" start="00:19:51.101" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The next thing I want to show you is this layout test.""" start="00:19:55.240" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And I'll just run the test first.""" start="00:19:58.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So here we have basically""" start="00:20:02.193" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""a tiling window manager kind of thing,""" start="00:20:05.020" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""where you can resize the tiles""" start="00:20:08.540" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and then by clicking on these buttons here,""" start="00:20:11.280" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""you can change the layout.""" start="00:20:12.934" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So you can do two on the right,""" start="00:20:16.940" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""two up above, or three up above. So, yeah.""" start="00:20:20.168" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Those tiling windows, as you can see,""" start="00:20:27.101" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""once I work this branch into the main branch of Schemacs,""" start="00:20:30.268" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I can use that to implement""" start="00:20:33.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the split window functionality for Schemacs,""" start="00:20:35.274" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""the editor. So here's what this split...""" start="00:20:38.266" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Here's the layout test that you just saw.""" start="00:20:42.466" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Let me make it a bit smaller""" start="00:20:44.866" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""so that it all fits on one screen.""" start="00:20:46.733" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So basically we have the &quot;button&quot; command again,""" start="00:20:48.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and then these are the button actions""" start="00:20:51.366" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""which basically just changes the layout,""" start="00:20:54.133" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and then I have the layout. So this layout is a &quot;div.&quot;""" start="00:20:57.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The first div just places three buttons in a row.""" start="00:21:01.460" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""The next layout is a div within a div.""" start="00:21:04.920" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So we have one div which places the button""" start="00:21:07.533" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""called &quot;two right&quot; buttons, and the div above it,""" start="00:21:13.000" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""which places the &quot;three in a row&quot; button""" start="00:21:18.633" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""or the &quot;two above&quot; buttons.""" start="00:21:21.493" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""And here's the next... So there's three different""" start="00:21:22.661" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""layouts, and clicking on one of their associated buttons""" start="00:21:26.001" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""will just change the layout.""" start="00:21:30.601" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""As you can see, very little code""" start="00:21:32.101" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""to create a somewhat complex user interface.""" start="00:21:33.434" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""That's the advantage of using reactive or declarative""" start="00:21:38.501" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""UI programming paradigms.""" start="00:21:42.868" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So yeah, this has not been merged into Schemacs""" start="00:21:44.234" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""at the time of this recording,""" start="00:21:47.233" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""but will be soon hopefully.""" start="00:21:48.701" video="mainVideo-schemacs" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:21:51.520" video="mainVideo-schemacs" id="subtitle"]]</div>[[!template text="""So yeah, I think I've already gone on for 20 minutes.""" start="00:21:51.520" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So I guess I'll just end my presentation here.""" start="00:21:55.166" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I have lots more to talk about.""" start="00:21:59.140" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I guess I will say one last thing before I go:""" start="00:22:00.466" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""that I would very much like for others""" start="00:22:03.980" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""to try and contribute to this project.""" start="00:22:07.066" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I will do my best to try and help teach anybody""" start="00:22:09.200" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""or work with anybody, especially even""" start="00:22:14.233" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""if you don't have much experience with Scheme.""" start="00:22:16.833" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I'd like to help everybody try to contribute.""" start="00:22:18.600" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Basically I want to get this proof of concept working.""" start="00:22:22.760" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""I want to get a stable user interface up and running,""" start="00:22:26.240" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""and then we can start working on""" start="00:22:30.674" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""improving the Emacs Lisp interpreter all together.""" start="00:22:33.066" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""There are close to 1,400 built-in functions""" start="00:22:36.700" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""which need to be implemented.""" start="00:22:41.066" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""We don't need to get all of them""" start="00:22:43.660" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""in order to be able to run probably most of ELPA,""" start="00:22:44.966" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""but as much as possible.""" start="00:22:48.466" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""We would like to clone Emacs Lisp and I need help.""" start="00:22:50.866" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""So get a hold of me. My project is on Codeberg.""" start="00:22:54.800" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""Well, (oh, I can't show this here),""" start="00:23:02.580" video="mainVideo-schemacs" id="subtitle"]]
+[[!template text="""but I will end it there. Thank you for listening.""" start="00:23:06.920" video="mainVideo-schemacs" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+<div class="transcript transcript-qanda"><a name="schemacs-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""[oops, forgot to start] object protocol has a scheme implementation.""" start="00:00:00.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Does this mean schemacs will be""" start="00:00:03.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""meta object changeable in practice?""" start="00:00:07.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So I don't actually need the meta object protocol so far.""" start="00:00:11.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""In the reference implementation for Guile,""" start="00:00:16.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Guile has its own object-oriented system called Goops.""" start="00:00:19.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'm sorry, I'm hearing a delay.""" start="00:00:27.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Anyway, I'm going to turn off my stream quick. There we go.""" start="00:00:29.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, um. Yes, uh, I, I don't I wasn't aware of the, um.""" start="00:00:32.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""the meta-object protocol that you have mentioned here,""" start="00:00:39.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but I will look into it.""" start="00:00:43.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I know that there isn't really a standard""" start="00:00:45.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""meta-object protocol for Scheme.""" start="00:00:48.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That was an issue for me""" start="00:00:52.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because I'm trying to make this cross-platform,""" start="00:00:53.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and so I've done all of my work so far""" start="00:00:56.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""without a meta-object protocol""" start="00:00:59.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because that's the easiest way to make it work""" start="00:01:00.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""on multiple Scheme implementations.""" start="00:01:02.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But if there is a nice portable one""" start="00:01:04.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that works on many implementations, I would use that, yes.""" start="00:01:07.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's just that so far it hasn't been necessary.""" start="00:01:12.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I've been doing mostly functional reactive programming""" start="00:01:15.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and React.js-like framework.""" start="00:01:19.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I've created that for the GUI front end.""" start="00:01:21.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And that's all the more I've needed so far.""" start="00:01:23.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, yeah. Oh, yeah, please, next question. Sure.""" start="00:01:26.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So how will the GUI display code be R7RS compliant?""" start="00:01:33.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""As far as I know, there's no DL open in R7RS. That's right.""" start="00:01:39.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, R7RS small is extremely small""" start="00:01:45.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and does not have any features at all.""" start="00:01:48.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But it does provide a conv expand macro.""" start="00:01:50.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And this allows you to load in different code""" start="00:01:54.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""depending on which scheme implementation you're using.""" start="00:01:57.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So basically, I'll have to write a different back end""" start="00:02:00.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""for each scheme implementation.""" start="00:02:03.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I think that's really""" start="00:02:05.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""the only way is possible at all,""" start="00:02:06.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because there's no standardization.""" start="00:02:10.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So essentially, the libraries""" start="00:02:12.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that I've written for schemacs""" start="00:02:14.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""will become kind of a platform-independent way""" start="00:02:15.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""of writing GUIs for Scheme.""" start="00:02:22.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's just a matter of,""" start="00:02:25.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""will your Scheme implementation""" start="00:02:27.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""support the Schemacs GUI protocol?""" start="00:02:28.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So I've kind of written my own protocol,""" start="00:02:32.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and it's entirely R7 RSML compliant.""" start="00:02:34.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's all done with record,""" start="00:02:36.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""what are they called, record types.""" start="00:02:38.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Do you think some of the Schemacs""" start="00:02:43.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""could be extracted into SFRIs since you've made it portable""" start="00:02:46.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""between scheme implementations?""" start="00:02:50.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yes, I would definitely like to do that.""" start="00:02:52.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Probably first thing I'll do is start splitting up""" start="00:02:55.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and publishing independent libraries""" start="00:02:59.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""on the Aku package manager.""" start="00:03:01.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""This is a kind of a package manager ecosystem for Scheme,""" start="00:03:04.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and in particular R7RS Scheme.""" start="00:03:07.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And it's also mirrored on the other package manager,""" start="00:03:11.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Snowfort, just by the way.""" start="00:03:15.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But yeah, and then I might be also,""" start="00:03:18.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I've considered creating a SRFI for the lens library,""" start="00:03:21.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""which is based on the Haskell lens library.""" start="00:03:25.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I don't think that exists yet in Scheme,""" start="00:03:27.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""so I thought that might make a good SRFI.""" start="00:03:29.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Is there a recommended Scheme implementation?""" start="00:03:34.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Guile is the reference implementation.""" start="00:03:36.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's the only one that works with GUI,""" start="00:03:44.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but as I demonstrated in my presentation,""" start="00:03:47.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""the Emacs Lisp interpreter""" start="00:03:51.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""works on multiple schemes so far,""" start="00:03:52.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and I've had trouble with some of the scheme compilers.""" start="00:03:55.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But yeah, I would recommend Guile.""" start="00:04:00.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But how would schemacs deal with""" start="00:04:04.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Emacs's re-display architecture""" start="00:04:07.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""will be having its own display architecture?""" start="00:04:10.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And if so, how will you handle""" start="00:04:13.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""things like overlays and images?""" start="00:04:15.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, definitely. That's to be determined.""" start="00:04:18.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So basically, the scheme way of doing things""" start="00:04:25.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, I've created this React-like programming framework.""" start="00:04:31.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's like ReactJS or Vue.js.""" start="00:04:36.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That is just the API of how you write GUI code in Scheme.""" start="00:04:41.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And each Scheme implementation""" start="00:04:45.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""will have its own GUI backend,""" start="00:04:49.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""which implements that Protocol.""" start="00:04:52.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And so when it comes time to link""" start="00:04:55.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""the Emacs Lisp built-in functions""" start="00:04:59.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that do these things like overlays and so on,""" start="00:05:03.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""we're going to have to come up with some way""" start="00:05:08.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""of modeling that""" start="00:05:11.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""using the scheme framework that I've designed.""" start="00:05:12.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I may have to make alterations""" start="00:05:15.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""specifically to support Emacs Lisp.""" start="00:05:17.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I don't know yet. I haven't got that far.""" start="00:05:22.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""You were saying that you would like""" start="00:05:28.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to get the most out of the 1300""" start="00:05:30.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and something Emacs packages that exist.""" start="00:05:33.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Are there technical blockers to doing them all""" start="00:05:36.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""or just a problem of getting enough people to jump into it?""" start="00:05:38.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, it's just a matter of implementing enough""" start="00:05:44.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""of the Emacs built-in functions.""" start="00:05:48.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Right now, there's kind of a big bug.""" start="00:05:50.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I mentioned this also in the presentation.""" start="00:05:57.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""The stacks trace that you saw during my presentation,""" start="00:05:59.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that is the biggest bug right now""" start="00:06:02.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that's preventing me from running most other code.""" start="00:06:05.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I don't think other people""" start="00:06:08.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""will be able to contribute to the code base""" start="00:06:10.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""until I get that bug fixed,""" start="00:06:13.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because it doesn't capture closures correctly.""" start="00:06:14.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""it doesn't behave like Emacs Lisp does,""" start="00:06:18.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and that's the big problem.""" start="00:06:22.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So once I get that worked out,""" start="00:06:26.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""then it's just a matter of implementing enough""" start="00:06:31.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""of the EmacsLisp built-in functions,""" start="00:06:35.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""these are the functions that are mostly implemented in C,""" start="00:06:37.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""implementing those in Scheme.""" start="00:06:40.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And that, yeah, that's the thing""" start="00:06:42.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that I'm going to need a lot of help with""" start="00:06:45.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because there's quite a few of those APIs.""" start="00:06:47.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But I imagine, I have no idea, no way of knowing,""" start="00:06:49.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but I imagine we don't need 100% of them""" start="00:06:53.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""in order to run most of Elpa.""" start="00:06:56.460" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""We probably can get some of the important large Elpa packages""" start="00:06:58.168" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""like Magit and Org mode with just enough of the Emacs Lisp""" start="00:07:05.085" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""built-in functions to handle that.""" start="00:07:12.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But we won't really know until we've tried.""" start="00:07:14.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So yeah, I'll try to get this bug fixed right away.""" start="00:07:19.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That way we can all start working on it together, hopefully.""" start="00:07:22.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Highly relatable answer there.""" start="00:07:24.980" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""We'll burn that bridge when we're on it or something.""" start="00:07:27.127" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""What are your thoughts on chicken scheme?""" start="00:07:31.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Will that be a good fit? Do you think?""" start="00:07:34.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think it will be, um, I, I did show""" start="00:07:37.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""trying to run chicken scheme in my, um, presentation""" start="00:07:41.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and, uh, I ran up against some kind of issue,""" start="00:07:44.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""which I really don't know how to debug.""" start="00:07:48.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Um, it's probably something to do with the, uh, pattern matcher.""" start="00:07:51.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Um, I'm using the pattern matcher,""" start="00:07:55.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""uh, written by Alex shin,""" start="00:07:58.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""which seems to be the most portable.""" start="00:08:00.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Pattern matcher, uh, for our seven RS scheme.""" start="00:08:02.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But not all scheme compilers implement, what is it called?""" start="00:08:05.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""The macro, I can't remember what it's called.""" start="00:08:13.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""There's the macro expansion system for R7 RS small.""" start="00:08:19.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""All of these scheme implementations""" start="00:08:24.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""seem to have a slightly different take on how they work.""" start="00:08:27.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And so that macro expander has been, for pattern matching,""" start="00:08:29.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""has been the biggest difficulty""" start="00:08:33.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""in making this code portable.""" start="00:08:35.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And so I'm thinking of ways of maybe trying to ditch pattern matching,""" start="00:08:37.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but that's such a useful feature and it's hard.""" start="00:08:42.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So I don't know, we'll see if I can,""" start="00:08:45.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""if somebody can help me get it to work on chicken team,""" start="00:08:49.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'd really appreciate it.""" start="00:08:52.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Can this implementation be used by Guile's Emacs Lisp mode?""" start="00:08:56.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Guile's Emacs list mode. Okay. Yeah, good question.""" start="00:09:01.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I did mention this last year in my presentation.""" start="00:09:08.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Emacs list in Guile is totally different""" start="00:09:10.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""from what I've done.""" start="00:09:13.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That implementation was written about 10 or 15 years ago.""" start="00:09:16.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I can't remember exactly when. It is quite incomplete.""" start="00:09:21.293" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I don't think it even runs most of the macro expanding code.""" start="00:09:26.502" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Some of the code that is written""" start="00:09:36.543" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""for GNU Emacs in Emacs Lisp,""" start="00:09:39.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""where GNU Emacs is initializing itself,""" start="00:09:42.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""it can't even get the first file in that code.""" start="00:09:45.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It hasn't been touched in 10 or 15 years.""" start="00:09:51.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Initially, when I first started this project,""" start="00:09:53.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I was using the parser""" start="00:09:57.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""for Guile's Emacs Lisp implementation,""" start="00:09:59.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but it didn't give me things like source locations,""" start="00:10:02.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""so I had to rewrite that. And also, it wasn't portable.""" start="00:10:05.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So yeah, because I want it to be portable,""" start="00:10:10.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""it's necessarily going to be not reliant""" start="00:10:14.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""on anything that's inside of the Guile library,""" start="00:10:16.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""including the Emacs LISP interpreter that's there.""" start="00:10:19.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Maybe I could replace the Emacs LISP interpreter in Guile""" start="00:10:21.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""if Andy Wingo would be interested. All right.""" start="00:10:24.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I see we've got a few people""" start="00:10:29.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that did jump into the BBB.""" start="00:10:31.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'm just going to quickly, oops.""" start="00:10:34.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""quickly try to make my text a little bigger""" start="00:10:37.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""so I can read a question that came here.""" start="00:10:40.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I wonder if we can do some sort of pragmatic analysis""" start="00:10:42.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""on popular Emacs packages""" start="00:10:48.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to see what list of functions they tend to depend on""" start="00:10:49.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""while a function calls down to the lower level.""" start="00:10:52.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, that would be good.""" start="00:10:54.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Somebody please do that for me. Awesome.""" start="00:10:57.210" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Somebody's raising their hand. Divya.""" start="00:11:02.252" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Let's see. Yeah, can you hear me?""" start="00:11:05.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yes, I can. Yeah, go ahead. Hello, thank you.""" start="00:11:08.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, this is really awesome.""" start="00:11:12.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I use Guile, and I love Guile,""" start="00:11:14.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and I also love functional programming,""" start="00:11:16.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""so this is really nice that you took""" start="00:11:18.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""the declarative approach.""" start="00:11:21.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""One thing that I'm interested in is,""" start="00:11:22.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""are you also considering Racket in the scheme group?""" start="00:11:26.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Because I know a lot of people do not consider Racket""" start="00:11:29.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""as a sort of scheme thing, because it grew out of it.""" start="00:11:32.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Do you think you'll take something from Racket?""" start="00:11:36.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Because I think Racket has""" start="00:11:39.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""a lot of good ideas that can be used.""" start="00:11:42.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, I briefly looked at Racket's GUI library,""" start="00:11:44.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but it's very, very heavily dependent""" start="00:11:48.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""on Racket's macro expander,""" start="00:11:51.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""which is, well, yeah, the macro expander""" start="00:11:53.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is extremely complex for Racket,""" start="00:11:57.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and I don't think it's possible to port it to any other scheme,""" start="00:11:59.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""as far as I know. But Racket is based on SheaScheme.""" start="00:12:02.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I am making an effort to port my code to Shea's scheme.""" start="00:12:07.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I mentioned this earlier,""" start="00:12:14.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but there's the Gwen Weinholdt Aku system,""" start="00:12:18.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""which allows you to translate R7RS to R6RS.""" start="00:12:22.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And since Shea is an R6RS compiler,""" start="00:12:25.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I did at one point get the Emacs Lisp interpreter""" start="00:12:28.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to compile for Shea,""" start="00:12:33.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""although I think There's been a change""" start="00:12:34.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""either to Aku or somewhere in my own code base.""" start="00:12:38.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It doesn't build anymore, and I'm not sure why.""" start="00:12:40.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But I would also very much like to run this on Che.""" start="00:12:42.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I guess in that sense, we'll be able to work on Racket as well.""" start="00:12:47.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""There's also one other option.""" start="00:12:54.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Alexis King has written an R7RS language package for Racket.""" start="00:12:56.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I have not yet tried.""" start="00:13:03.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""running my package on R7RS for Racket.""" start="00:13:05.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But that would be something interesting.""" start="00:13:08.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yes, I would like to try that.""" start="00:13:11.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, it'll be interesting.""" start="00:13:12.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I do have some experience with chairs.""" start="00:13:13.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, uh, if I can find some time,""" start="00:13:15.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'll, I'll, I'll certainly like to, I would appreciate.""" start="00:13:17.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yes. Yeah. Go ahead. Yeah.""" start="00:13:21.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Another question I have is, like,""" start="00:13:24.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""what exactly is sort of, like, the, the approach is that""" start="00:13:26.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""you'll 1st want to do the interpreter""" start="00:13:29.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and then have enough list functions.""" start="00:13:31.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Uh, getting the max list functions""" start="00:13:33.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""interpreted or interpretable.""" start="00:13:36.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And then go for GUI or do you want""" start="00:13:38.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to sort of like go hand in hand""" start="00:13:41.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is like we have the interpreter working on""" start="00:13:42.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and we have also the GUI""" start="00:13:45.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and we sort of use one for the other.""" start="00:13:46.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, I consider the two tasks to be parallel.""" start="00:13:53.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So I'm actually doing the GUI separately.""" start="00:13:56.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""The reason why is because the GUI for Schemacs""" start="00:13:59.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is really just a clone of the look and feel of Emacs.""" start="00:14:05.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's not like an actual clone of the low-level C code""" start="00:14:10.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that puts everything on screen.""" start="00:14:14.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I'm actually not really that interested""" start="00:14:16.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""in the low-level details""" start="00:14:18.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""of how Emacs draws things on screen either.""" start="00:14:21.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think it has a lot of historical baggage,""" start="00:14:23.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and I'm actually trying to move away from that.""" start="00:14:26.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So that was part of the reason why I started""" start="00:14:28.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""with this React.js or Vue.js-like Reactive GUI framework.""" start="00:14:31.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So that GUI part is completely separate.""" start="00:14:36.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I want to worry about the details""" start="00:14:39.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""of how we make the GUI look and feel""" start="00:14:42.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""similar in Schemacs, similar to GNU Emacs.""" start="00:14:46.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""In Schemacs, using the Emacs programming language,""" start="00:14:50.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think that's something that we should worried about""" start="00:14:54.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""after we have enough of the Emacs list implemented.""" start="00:14:59.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, that makes sense.""" start="00:15:03.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""There are sort of, I'm a bit worried.""" start="00:15:04.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, I don't know if, so one of my presentations""" start="00:15:06.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is going to be tomorrow.""" start="00:15:10.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'm working on something called Emacs Viewer.""" start="00:15:11.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's a document viewer in Emacs.""" start="00:15:13.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And essentially one of the issues that I'm up against""" start="00:15:15.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is that Emacs's display system""" start="00:15:17.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is sort of very let's say, not flexible.""" start="00:15:20.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""When trying to analyze where this inflexibility comes from,""" start="00:15:25.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I don't think it's just the display architecture.""" start="00:15:31.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think parts of eLISP itself""" start="00:15:35.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""are connected to the display architecture.""" start="00:15:38.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""The notion of a cell in a buffer,""" start="00:15:43.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""itself is connected tightly to""" start="00:15:48.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""how the re-display architecture works.""" start="00:15:52.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So I think you'll have to sort of figure out""" start="00:15:54.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""what exactly you can salvage from ELISP""" start="00:15:57.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""without taking the display architecture baggage.""" start="00:16:00.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That's right. I do anticipate""" start="00:16:05.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that's going to be fairly challenging.""" start="00:16:08.002" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's all Turing-complete,""" start="00:16:09.877" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""so I imagine we're probably going to end up""" start="00:16:14.585" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""creating something like an emulator""" start="00:16:17.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""for the Emacs Lisp display architecture in Scheme""" start="00:16:21.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that will somehow translate down""" start="00:16:24.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to the React-like protocol that I've written.""" start="00:16:27.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But yeah, I don't I haven't that's nice.""" start="00:16:30.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""No, this is this is very exciting. Yeah. Oh Yes, it is.""" start="00:16:32.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, I'm glad so like a lot of people have told me""" start="00:16:36.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that they really Are excited to see this project""" start="00:16:39.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and this really helps me""" start="00:16:41.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""You know keep focused on this project""" start="00:16:42.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because a lot of people are very interested.""" start="00:16:46.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So It's so I'd like to move on""" start="00:16:48.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to a couple of questions from the past.""" start="00:16:50.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""We're starting to build up a good backlog.""" start="00:16:52.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Thank you for that. Yeah Next question from the pad I have.""" start="00:16:54.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Can you tell us more about the show stopping bug?""" start="00:16:59.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""How to squash it? How can people help?""" start="00:17:02.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""OK, well, that one, unfortunately, I think,""" start="00:17:04.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""unless you're really a scheme genius""" start="00:17:08.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and you can really read my code""" start="00:17:11.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and immediately understand how it all works,""" start="00:17:13.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I don't think you'd be able to help.""" start="00:17:15.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It shouldn't be too difficult for me to fix.""" start="00:17:18.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So it has to do with how closures work.""" start="00:17:22.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And a closure is basically an object""" start="00:17:26.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that can be created with stuff that's on the stack.""" start="00:17:30.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And this is a feature, I think,""" start="00:17:33.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that was introduced with Emacs 27.""" start="00:17:37.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I can't remember exactly,""" start="00:17:39.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but it's actually a relatively recent feature.""" start="00:17:40.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It was ever since they introduced""" start="00:17:43.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""lexically scoped variable bindings in Emacs Lisp.""" start="00:17:45.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And so yeah, the problem is that""" start="00:17:51.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""when you create like a let structure""" start="00:17:54.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and you could declare a variable in the let.""" start="00:17:59.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And then you create inside of that a second let structure,""" start="00:18:01.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and you have a lambda inside of that.""" start="00:18:05.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And the lambda references or uses a variable""" start="00:18:07.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that was declared in the outer let binding.""" start="00:18:11.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That outer let binding is somewhere on the stack.""" start="00:18:14.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And the lambda you can actually return it as a value.""" start="00:18:18.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So when you do return that lambda,""" start="00:18:23.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""it has to have a note somewhere inside""" start="00:18:25.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that says, by the way, I'm using that variable.""" start="00:18:27.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So you need to capture it and restore it to the stack""" start="00:18:31.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""whenever this lambda is applied, whenever you execute it.""" start="00:18:34.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And that is where the error is.""" start="00:18:38.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's not capturing the stack variable properly.""" start="00:18:40.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I think what I'm going to do,""" start="00:18:44.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I haven't looked into it in detail yet""" start="00:18:46.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because I've gone back to GUI stuff recently,""" start="00:18:49.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but what I'm going to do, I think,""" start="00:18:53.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is just do a static analysis""" start="00:18:55.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""of the code inside of the Lambda""" start="00:18:57.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and see which symbols are being used,""" start="00:18:59.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and then just capture all of those""" start="00:19:02.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and place those into the record type""" start="00:19:05.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that stores the lambda.""" start="00:19:07.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That's how I'm going to fix that, I think.""" start="00:19:09.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I hope anyway that's going to work.""" start="00:19:12.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""You never know with bugs.""" start="00:19:16.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""They're always a little bit tricky. Okay, next question.""" start="00:19:17.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Are there performance concerns""" start="00:19:21.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""with implementing certain C primitives in PeerScheme?""" start="00:19:23.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So who is it? The famous computer scientist that said""" start="00:19:28.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""premature optimization is the root of all evil.""" start="00:19:32.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think it was the guy who invented the A star algorithm.""" start="00:19:35.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""His name escapes me at the minute.""" start="00:19:39.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But yeah, I'm not concerned about performance yet,""" start="00:19:42.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""although most of the scheme compilers that I have seen,""" start="00:19:49.360" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""especially Shea and Gambit""" start="00:19:52.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""have extremely good performance characteristics.""" start="00:19:57.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And so I think there won't be""" start="00:20:02.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""too much difficulty with performance,""" start="00:20:03.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""even implementing some of the C stuff.""" start="00:20:05.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And besides, a lot of the GUI stuff""" start="00:20:08.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is already written in C anyway.""" start="00:20:10.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I mean, it would be cool""" start="00:20:12.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""if we had a scheme GUI library""" start="00:20:14.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that painted to a canvas,""" start="00:20:16.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""maybe for a Wayland implementation or something.""" start="00:20:18.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""But I don't know. It's not a concern for me, performance.""" start="00:20:21.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Okay, there are a few more questions. I do want to mention""" start="00:20:29.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that the stream has cut away at this point,""" start="00:20:32.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but we're still recording live.""" start="00:20:33.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""All of this will be put up on the website""" start="00:20:36.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and so on like that.""" start="00:20:38.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, I appreciate all the enthusiastic questions""" start="00:20:40.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and you're kind of tanking through them all.""" start="00:20:44.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Me too. I love how many questions I'm getting.""" start="00:20:47.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""This is very encouraging""" start="00:20:52.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and it really makes me want to keep on working on it.""" start="00:20:54.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So it's great.""" start="00:20:56.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'm so glad to hear that because that's exactly the message""" start="00:20:56.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think you should be receiving.""" start="00:21:00.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""This is a fantastic project. Thank you so much.""" start="00:21:01.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'll just say so myself. If the project is successful,""" start="00:21:04.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""are you worried about a possible split in the community""" start="00:21:08.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""between Schemacs and GNU Emacs?""" start="00:21:11.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Oh, I have thought about that.""" start="00:21:15.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I really don't know what's going to happen.""" start="00:21:18.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""There seems to be already a huge demand""" start="00:21:24.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""for a scheme-based, a modern scheme-based editor.""" start="00:21:26.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""You know, the Edwin scheme for MIT scheme""" start="00:21:30.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""hasn't been touched since like 1987 or something,""" start="00:21:33.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""maybe 1993 or, but anyway.""" start="00:21:37.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""There seems to be huge demand.""" start="00:21:41.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And so I guess a lot of people""" start="00:21:43.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""who are currently using GNU Emacs""" start="00:21:45.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""will probably just switch over""" start="00:21:47.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""because they've been wanting""" start="00:21:49.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""something like this for a very long time.""" start="00:21:50.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And then, I mean, is that going to cause fragmentation?""" start="00:21:53.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Is it really a big deal, though?""" start="00:21:56.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I mean, it's all GPL-licensed code.""" start="00:21:58.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I mean, I think a rising tide raises all the ships at the same time.""" start="00:22:02.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, yeah, also, the last thing I want to say about that""" start="00:22:08.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is I would like to contribute some of what I do in Schemacs""" start="00:22:13.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""back into GNU Emacs, if I can. So, for example, I'm going""" start="00:22:19.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to be working on like a canvas library""" start="00:22:24.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""where you can have interactive canvases""" start="00:22:25.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and you know you can actually like draw pictures""" start="00:22:27.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and put things with the mouse and drag things around.""" start="00:22:30.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I was thinking you know""" start="00:22:33.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""if if I can figure out how that works""" start="00:22:36.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""maybe I can write something like that for Emacs""" start="00:22:37.668" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""or GNU Emacs using the Cairo library, you know,""" start="00:22:41.918" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""SVG rendering library that they have.""" start="00:22:47.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, you know, if I have time,""" start="00:22:49.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I would like to continue contributing to GNU Emacs as well.""" start="00:22:51.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'm sorry, what was the name of the library you mentioned?""" start="00:22:55.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Oh, Cairo, like Cairo.""" start="00:22:57.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Oh, Cairo, yeah. Absolutely. I spelled that poorly.""" start="00:23:01.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""The dream of never needing to change to the web browser.""" start="00:23:07.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Would schemacs bring us closer to that? I hope so.""" start="00:23:12.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That's also a dream of mine.""" start="00:23:18.377" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""The part of the reason why I wanted to work, you know,""" start="00:23:21.710" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""make sure I had a really good workable GUI framework""" start="00:23:26.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""is so that I could, you know,""" start="00:23:31.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""we could write apps like, you know,""" start="00:23:32.627" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""they have a mastodon client written in Emacs Lisp.""" start="00:23:34.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that would be so nice to have this, you know,""" start="00:23:38.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""a really nice Mastodon client""" start="00:23:42.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that was right inside of, you know, our scheme environment""" start="00:23:43.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""where we were doing our text editing and other stuff.""" start="00:23:47.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I've always wanted something like that,""" start="00:23:50.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""or it would be cool to have""" start="00:23:52.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""just a slightly nicer GUI for Magit.""" start="00:23:53.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, yeah, I mean, like, yeah, being able to avoid the web entirely""" start="00:23:56.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and just be able to like, you know, do social networking""" start="00:24:04.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and do your GitHub stuff,""" start="00:24:08.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""everything from within Emacs or Schemacs in this case,""" start="00:24:11.440" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that's a dream of mine as well.""" start="00:24:14.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And so I hope that that's where we end up in a couple of years.""" start="00:24:16.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""The sooner the better. Anything, just double checking.""" start="00:24:20.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Anything specific other than minimalism""" start="00:24:30.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that made you choose Scheme over Commonwealth?""" start="00:24:33.320" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Oh, yeah, it's kind of a philosophical question.""" start="00:24:35.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So a couple of things. First of all, it was a conversation""" start="00:24:40.200" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I had with William Byrd,""" start="00:24:45.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and he's a guy who makes the Mini Conran framework for Scheme.""" start="00:24:47.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It was his PhD thesis.""" start="00:24:50.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""He worked with, I'm sorry, I just can't remember his name.""" start="00:24:52.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""He worked at the University of Indiana.""" start="00:24:57.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Another famous Scheme or Lisp person was there.""" start="00:24:59.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Friedman, Dan Friedman was his advisor.""" start="00:25:03.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, big name in Lisp.""" start="00:25:06.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Anyway, so I was talking with William Byrd,""" start="00:25:09.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and I'm a huge Haskell fan,""" start="00:25:12.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and he told me why he didn't like Haskell at all,""" start="00:25:14.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and kind of convinced me to try Scheme out.""" start="00:25:16.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And what I really like about Scheme is,""" start="00:25:19.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""yeah, like you said, the minimalism,""" start="00:25:22.760" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but it's more that it is very close""" start="00:25:25.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to the mathematical framework of lambda calculus.""" start="00:25:29.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Haskell is probably the most pure""" start="00:25:34.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""lambda calculus that I've ever used,""" start="00:25:38.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but Scheme is like the simply typed lambda calculus,""" start="00:25:39.920" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and That just appeals to me.""" start="00:25:45.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think, you know, if you have this tiny, tiny core language""" start="00:25:47.800" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""from which all of the computing can be defined,""" start="00:25:50.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think it's kind of a shame""" start="00:25:55.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""that so far we just haven't explored that space yet.""" start="00:25:57.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I mean, there's compared to JavaScript or Python,""" start="00:26:00.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""there's very little scheme code out there""" start="00:26:03.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and it could be doing so much. And I would just like to try""" start="00:26:05.880" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and expand the scheme ecosystem""" start="00:26:08.240" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and see just what this tiny little language can do.""" start="00:26:10.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And I think we haven't even seen""" start="00:26:13.000" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""a fraction of what it can do.""" start="00:26:14.480" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""That's why I've chosen scheme.""" start="00:26:16.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Divya, I see you've got a bunch more comments.""" start="00:26:22.400" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think we're just about close to our time here,""" start="00:26:24.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""but if you wanted to jump back in,""" start="00:26:26.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'm sorry, I had to cut you off a little before.""" start="00:26:28.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""No, it's fine. No, it's fine.""" start="00:26:30.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I think I agree with most of what he said.""" start="00:26:33.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, yeah, thank you so much.""" start="00:26:36.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Um, closing thoughts, Ramin.""" start="00:26:40.680" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Yeah, I guess everybody, please, if you're interested,""" start="00:26:45.160" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""keep watching my Mastodon and keep watching my Codeberg.""" start="00:26:51.640" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'm going to try and squash this bug as quickly as I can.""" start="00:26:56.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I hope early next year,""" start="00:27:01.560" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""hopefully not much later than February,""" start="00:27:03.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""I'll actually be able to start taking in contributions""" start="00:27:07.520" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""for some of the Emacs Lisp built-ins in the code base.""" start="00:27:12.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""So, please keep watching. The pace of my development""" start="00:27:16.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""has increased pretty rapidly recently,""" start="00:27:21.960" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and I think we're pretty close""" start="00:27:24.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""to getting something that we can all use together.""" start="00:27:25.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Thank you once again for your amazing talk,""" start="00:27:29.120" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""for your exceptional work,""" start="00:27:31.720" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and for jumping in, doing the live Q&A,""" start="00:27:34.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""rolling with us here as we have yet another""" start="00:27:36.600" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""We'll See How It Goes conference.""" start="00:27:40.040" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""It's been just amazing so far,""" start="00:27:42.080" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""and this talk is no small part of that. Thank you.""" start="00:27:44.280" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""Oh, thank you so much. Yeah. OK, cool.""" start="00:27:46.840" video="qanda-schemacs" id="subtitle"]]
+[[!template text="""And thanks for all the questions, everyone.""" start="00:27:50.280" video="qanda-schemacs" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20schemacs%3A%20One%20year%20progress%20update%20Schemacs%20%28formerly%20Gypsum%29)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/schemacs-before.md b/2025/info/schemacs-before.md
new file mode 100644
index 00000000..8c91e627
--- /dev/null
+++ b/2025/info/schemacs-before.md
@@ -0,0 +1,30 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 24-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-schemacs>
+Etherpad: <https://pad.emacsconf.org/2025-schemacs>
+Status: TO_REVIEW_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-schemacs"><source src="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--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="mainVideo-schemacs" data="""
+02:07.200 The scope of the project
+04:24.760 Difference with Robin Templeton's project (Guile-Emacs)
+05:49.720 Progress made since last year
+07:28.040 Portable React-like GUI
+09:06.040 Demo
+11:48.700 Additional changes
+14:12.020 Other Scheme implementations
+17:06.200 GUI framework
+21:51.520 Wrapping up
+
+"""]]<div></div>Duration: 23:14 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-schemacs">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.opus">Download --main.opus (10MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--main.webm">Download --main.webm (63MB)</a></li><li><a href="https://youtu.be/KmMeLfYn1xY">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-schemacs"><source src="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 31:11 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-schemacs">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.json">Download --answers.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.m4v">Download --answers.m4v (101MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-schemacs--one-year-progress-update-schemacs-formerly-gypsum--ramin-honary--answers.webm">Download --answers.webm (102MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/schemacs-nav.md b/2025/info/schemacs-nav.md
new file mode 100644
index 00000000..e867d2ef
--- /dev/null
+++ b/2025/info/schemacs-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/bookclub-tapas">Bookclub tapas</a>
+Next by track: <a href="/2025/talks/juicemacs">Juicemacs: exploring speculative JIT compilation for ELisp in Java</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/sun-close-after.md b/2025/info/sun-close-after.md
new file mode 100644
index 00000000..e84ce984
--- /dev/null
+++ b/2025/info/sun-close-after.md
@@ -0,0 +1,235 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="sun-close-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""screen. That screen. Yes. All right. Thank you so much.""" start="00:00:00.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""We have made it thus far. It is the end of EmacsConf 2025.""" start="00:00:17.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Oh, I better remember to open this""" start="00:00:22.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""in case anyone wants to join me in this room.""" start="00:00:24.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Hang on a sec. And normally all this stuff""" start="00:00:49.460" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""gets done automatically by my scripts,""" start="00:00:51.140" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so I'm doing it manually. Ah, there you go.""" start="00:00:52.960" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Okay, now people can join. Hooray, we made it!""" start="00:00:55.251" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Today was great, and yesterday was great too,""" start="00:00:58.126" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""with so many fascinating talks and conversations.""" start="00:01:01.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I'm really, really glad that it all worked out,""" start="00:01:06.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""despite some running around""" start="00:01:09.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and figuring things out on the fly,""" start="00:01:12.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""we all managed to get there.""" start="00:01:14.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I actually have some of the live""" start="00:01:18.560" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""talks recordings up already""" start="00:01:20.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""on media.emacsconf.org and YouTube, assuming things work.""" start="00:01:22.960" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I'm just going to republish it from Emacs naturally.""" start="00:01:28.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""As you can see, I was e-debugging things""" start="00:01:33.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""to the very last minute.""" start="00:01:36.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Yeah, feel free to spread the word.""" start="00:01:37.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I check the Emacs hashtag every week""" start="00:01:39.800" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""as part of the Emacs news process anyway.""" start="00:01:42.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So if you have any favorite talks,""" start="00:01:45.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""that's a great way to share the ideas with more people,""" start="00:01:47.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and then even more conversations can happen.""" start="00:01:52.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""The prerecorded talks, as I mentioned,""" start="00:01:54.560" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""are already up on the wiki""" start="00:01:58.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and at the media emacsconf.org slash 2027 website.""" start="00:02:00.240" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Sorry, 2025. We're not in the time machine. 2025 site.""" start="00:02:05.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And they should already be on YouTube as well.""" start="00:02:10.960" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I will upload the late submissions""" start="00:02:13.800" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and the live talks and the Q&A sessions""" start="00:02:16.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""over the next week or two.""" start="00:02:19.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I usually get that done very quickly.""" start="00:02:20.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I didn't even finish this sentence.""" start="00:02:23.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I'll post an update to the Emacs Conf Discuss mailing list,""" start="00:02:27.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so feel free to subscribe to that if you'd like an update.""" start="00:02:31.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""If you've got ideas for making things better,""" start="00:02:34.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""then feel free to drop them into the Etherpad""" start="00:02:37.560" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so that we can make next year's conference even smoother.""" start="00:02:40.960" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I had a lot of people watching, so thank you for that.""" start="00:02:45.760" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And of course, thanks to all the speakers""" start="00:02:51.120" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""who put hours and hours into their presentations,""" start="00:02:53.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""the volunteers who helped both before and during the conference""" start="00:02:56.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and who will help in the days ahead""" start="00:03:01.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""as we get everything extracted and packaged and transcribed even,""" start="00:03:03.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and a nice chapter indices on the Q&A""" start="00:03:08.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so you can jump to when a specific question was answered,""" start="00:03:11.240" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""all that good stuff.""" start="00:03:14.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and to all those other people in their lives""" start="00:03:16.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""whose patience and support make all of this possible.""" start="00:03:19.800" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So thank you so much for that.""" start="00:03:23.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""This year's host, you saw Corwin and you saw,""" start="00:03:26.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I mean, what's, why am I,""" start="00:03:30.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""wait, I'm like buzzing all over the place""" start="00:03:32.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""as people are mentioning my nick on IRC.""" start="00:03:34.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""All right, now that I'm in do not disturb mode.""" start="00:03:37.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So thank you to the hosts""" start="00:03:40.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and thank you to other volunteers,""" start="00:03:42.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""JC and Trico and James and Amitav and Rodion and Jaybird and Indra.""" start="00:03:43.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and Yang3, and Bhavin, and Michael, and Ian,""" start="00:03:49.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and Jamie, and Ihor, and FlowyCoder,""" start="00:03:55.120" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and probably other people""" start="00:03:57.880" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""that I have forgotten to copy out of my conference.org file""" start="00:03:58.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and into this, but thank you anyway.""" start="00:04:02.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Thank you to the Free Software Foundation.""" start="00:04:05.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""They host the mailing list, they host the media server,""" start="00:04:08.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and of course, they've got like Emacs, so that's awesome.""" start="00:04:12.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""To make things easier, our streams are actually not on my computer.""" start="00:04:16.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""We use OBS and a server,""" start="00:04:23.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""a fairly beefy one that Ry P shares with us.""" start="00:04:26.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So then I can VNC into it and control OBS""" start="00:04:30.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and stream to IceCast and all that other goodness.""" start="00:04:33.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And I don't have to worry about my computer stressing out.""" start="00:04:36.240" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""It's all good. And so we use a whole lot of free""" start="00:04:39.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and open source software in the stack.""" start="00:04:43.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So we are very, very grateful""" start="00:04:45.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""for all the users and contributors""" start="00:04:47.120" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""who make all of that possible.""" start="00:04:49.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Things like Emacs and Org Mode and ERC and Tramp and Magit""" start="00:04:50.760" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and BigBlueButton and Etherpad and IckyWicky and IceCast""" start="00:04:55.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and OBS and TheLaunch and LiberaChat and FFmpeg""" start="00:04:59.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and OpenAI Whisper, WhisperX, different interface.""" start="00:05:02.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""The Aeneas forced alignment tool, site transfer for uploads,""" start="00:05:05.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""subed for editing the subtitles,""" start="00:05:09.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""sub-seg for cutting the subtitles into nice chunks""" start="00:05:11.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so that you're not like trying to read a whole lot in one line,""" start="00:05:14.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Mozilla Firefox, MPV and TamperMonkey""" start="00:05:17.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so that everything gets automatically logged in""" start="00:05:22.760" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""when the stream switches to like a big blue button room, it's handy.""" start="00:05:25.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and of course, many other tools and services""" start="00:05:30.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""that we use to prepare and host this year's conference.""" start="00:05:33.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Thanks to Shoshin for the music.""" start="00:05:35.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""He's an Emacs geek as well.""" start="00:05:37.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""If you also have music that you'd like to share with us""" start="00:05:39.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""under the Creative Commons Attribution License,""" start="00:05:42.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""please feel free to let me know""" start="00:05:45.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""or I should put in my email address here.""" start="00:05:47.240" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Yeah, sacha@sachachua.com.""" start="00:05:50.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So let us know in case you have music""" start="00:05:57.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""or other things you want to share.""" start="00:05:59.560" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Thanks to the people who donated""" start="00:06:01.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""via the FSF working together program.""" start="00:06:03.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""It costs like I think less than a hundred dollars""" start="00:06:06.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""to run this whole thing""" start="00:06:09.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""that the biggest thing really is people's time.""" start="00:06:11.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And thank you so much for sharing that with us.""" start="00:06:14.880" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So yes, but thank you specifically to Scott and Jonathan""" start="00:06:17.120" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and the other anonymous donors""" start="00:06:20.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""through the Working Together program.""" start="00:06:23.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And that's where we are so far. Feel free to join me.""" start="00:06:26.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I can be here until the kiddo says""" start="00:06:30.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I have not given her enough hugs for today.""" start="00:06:32.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""But if you want to like do a quick recap of your favorite talks""" start="00:06:34.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""or how you're excited to take things going forward""" start="00:06:40.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and all that stuff.""" start="00:06:43.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""You can join me in this as Sunday closing.""" start="00:06:45.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""If you look at the talk page,""" start="00:06:47.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""there's going to be theoretically""" start="00:06:49.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""a big blue button link there that you can join.""" start="00:06:52.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""But thank you for this. And now it's like awkward silence.""" start="00:06:55.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I'm wondering what you learned most""" start="00:07:04.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""from this conference this year.""" start="00:07:07.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Because I'm running around so much,""" start="00:07:09.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I don't get a lot of the live stuff.""" start="00:07:11.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Like, for example, when I was listening to your Q&A,""" start="00:07:23.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I had it in one ear and I had Christian's dental casting Q&A in the other ear,""" start="00:07:30.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so that just in case he had questions also.""" start="00:07:34.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""which kind of just meant I was listening for silences""" start="00:07:36.880" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and that meant I had to read the next question out loud.""" start="00:07:39.560" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""But I love going through the videos and captioning them.""" start="00:07:43.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And I'm really excited about the kinds of conversations""" start="00:07:46.880" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""that people have been having on the etherpacks and IRC.""" start="00:07:50.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So I think the biggest thing that I'm learning""" start="00:07:53.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""is that people are having a lot of fun with Emacs.""" start="00:07:57.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Which is no surprise, of course.""" start="00:08:01.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""But it's always so exciting to see people bump into other people""" start="00:08:05.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""whose minds work the same way.""" start="00:08:09.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And then who knows where that will go over the next year, over the next years.""" start="00:08:11.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""That's sort of an interesting topic,""" start="00:08:17.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""is like how to keep the conversations""" start="00:08:22.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""going between the conferences, you know?""" start="00:08:24.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""is where do people hang out and discuss these things?""" start="00:08:27.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Reddit's one place. IRC. I figure it's... Sorry, go ahead. I'm done.""" start="00:08:33.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I think it's rather...""" start="00:08:49.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I like to think of it as the start of the conversation.""" start="00:08:54.880" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And so we have around 100 people,""" start="00:08:59.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""more than 100, around 200 people yesterday,""" start="00:09:08.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""around 100 today joining us.""" start="00:09:12.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And those are a lot of conversations,""" start="00:09:15.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""but then they're the conversations that happen""" start="00:09:17.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""when people look up the videos and the captions""" start="00:09:18.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and the resources that people have shared.""" start="00:09:22.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And so I think it gives us a lot of material,""" start="00:09:25.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""a lot of exciting points""" start="00:09:30.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""for plenty of other conversations this year.""" start="00:09:31.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Yeah, it's a great community. Oh, yes, I should mention,""" start="00:09:34.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""the conversation doesn't stop here""" start="00:09:41.120" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""because there are mailing lists.""" start="00:09:42.800" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Thank you, Rudy, for the reminder.""" start="00:09:44.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""If you're looking for more of this kind of sense of community,""" start="00:09:46.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""there's like, well, Emacs Develop course has a lot of technical discussions going on,""" start="00:09:50.760" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""but the Org Mode mailing list is very nice.""" start="00:09:56.880" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""There are also lots of meetups.""" start="00:10:00.560" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""There's definitely a meetup every month.""" start="00:10:02.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Org Meetup, in fact, is happening in a couple of days.""" start="00:10:05.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""If you look on the Emacs wiki for user groups,""" start="00:10:10.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""or you check my Emacs news,""" start="00:10:13.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""or you check, if you look for like Emacs calendar,""" start="00:10:14.720" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""which I think I put on like emacslife.com slash calendar,""" start="00:10:16.960" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""then you'll find upcoming meetups.""" start="00:10:20.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so that you can keep reconnecting with people.""" start="00:10:22.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""And if you come up with something cool,""" start="00:10:27.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""you don't have to wait until the next Emacs Con""" start="00:10:29.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""to show it to everybody.""" start="00:10:33.760" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""You can also go to these meetups and start sharing it""" start="00:10:35.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and get feedback and make it even better and so on.""" start="00:10:43.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Great, thank you. Rudy says, the Emacs bugs mailing list""" start="00:10:53.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""is surprisingly interesting as well.""" start="00:10:56.400" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Lots of discussion on there, various details""" start="00:10:58.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and upcoming little features every single day.""" start="00:11:01.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Oh yes, Maddie would like another shout out for Emacs Carnival""" start="00:11:04.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""which is a monthly blogging people share topics""" start="00:11:38.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so that people can all write about the same thing""" start="00:11:41.320" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and then discover other people's perspectives on it.""" start="00:11:47.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""There have been quite a few now.""" start="00:11:52.440" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So if you want, you can go through the Emacs Carnival page""" start="00:11:54.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""in the Emacs wiki and start exploring the past issues.""" start="00:11:57.760" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""The host will have a list of links""" start="00:12:01.240" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""to the people who've submitted. So it's a great way to see""" start="00:12:04.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""what other people in the community""" start="00:12:07.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""have been thinking about something.""" start="00:12:09.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Also, people are very curious about the fonts and templates""" start="00:12:11.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""that people use for their presentations.""" start="00:12:18.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""It's always, that's one of the things""" start="00:12:20.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""I love about presentations.""" start="00:12:22.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""You kind of get this, you pick up so much more""" start="00:12:23.960" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""when you're looking over someone's shoulder,""" start="00:12:26.360" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""the things that they would forget to even mention""" start="00:12:28.600" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""because it's not the point of their talk""" start="00:12:32.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""or they take it for granted.""" start="00:12:34.200" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So, yes. if the presenters can share their fonts""" start="00:12:36.840" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and setups and themes and stuff like that.""" start="00:12:40.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Or if you as a viewer have been watching something""" start="00:12:44.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and you see someone do this really cool keyword shortcut""" start="00:12:47.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and you have no idea how they did that,""" start="00:12:50.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""because of course, you know, it just flies by too quickly""" start="00:12:53.280" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""and it's part of their muscle memory,""" start="00:12:56.120" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""so they don't even explain it anymore.""" start="00:12:57.640" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Go ahead and ask the speakers, hey,""" start="00:12:59.240" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""that command that you did, that just did the magic, how?""" start="00:13:01.800" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So yes, please feel free to go back over the videos,""" start="00:13:05.800" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""look at them slowly,""" start="00:13:11.760" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""look for interesting things you want to learn more about.""" start="00:13:12.680" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""All right, it sounds like we are""" start="00:13:45.080" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""pretty much ready to wrap up.""" start="00:13:49.160" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""So thank you, everyone, for coming.""" start="00:13:53.240" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""See you next year and also in the months in between""" start="00:13:59.000" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""because there are meetups,""" start="00:14:01.520" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""which you're going to go check out and have fun at.""" start="00:14:02.480" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Thank you for this.""" start="00:14:04.040" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Yes, thank you for this nice Emacs weekend.""" start="00:14:05.880" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""Thanks for putting it all together, Sacha and everyone.""" start="00:14:07.920" video="mainVideo-sun-close" id="subtitle"]]
+[[!template text="""That's great. Bye!""" start="00:14:14.320" video="mainVideo-sun-close" id="subtitle"]]
+
+</div>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/2025/info/sun-close-before.md b/2025/info/sun-close-before.md
new file mode 100644
index 00000000..a5507453
--- /dev/null
+++ b/2025/info/sun-close-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 16-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-sun-close>
+Etherpad: <https://pad.emacsconf.org/2025-sun-close>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-sun-close"><source src="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-sun-close--sunday-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: 15:33 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sun-close">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--main.m4v">Download --main.m4v (53MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.json">Download --original.json</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.m4v">Download --original.m4v (49MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.tsv">Download --original.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.txt">Download --original.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-close--sunday-closing-remarks--original.vtt">Download --original.vtt</a></li><li><a href="https://youtu.be/NsQLN-A5gTo">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/sun-close-nav.md b/2025/info/sun-close-nav.md
new file mode 100644
index 00000000..718dbf69
--- /dev/null
+++ b/2025/info/sun-close-nav.md
@@ -0,0 +1,6 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/sat-close">Saturday closing remarks / open session</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/sun-open-after.md b/2025/info/sun-open-after.md
new file mode 100644
index 00000000..d30936b4
--- /dev/null
+++ b/2025/info/sun-open-after.md
@@ -0,0 +1,143 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="sun-open-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Tracks""" start="00:00:00.000" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""Welcome to EmacsConf, where we have fun""" start="00:00:00.000" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""exploring just how much we can do with a text editor.""" start="00:00:02.247" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""There's a General track and a Development track,""" start="00:00:05.485" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""but really, you'll probably find""" start="00:00:07.925" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""interesting things on both tracks""" start="00:00:09.484" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""no matter what your level of experience is,""" start="00:00:11.079" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so don't feel limited to one or the other.""" start="00:00:13.216" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Watching and participating""" start="00:00:16.000" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""The best parts of EmacsConf are the conversations.""" start="00:00:16.000" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The wiki has a page on how to watch and participate,""" start="00:00:19.393" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and I'll give you a quick overview as well.""" start="00:00:22.486" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can watch both streams at live.emacsconf.org""" start="00:00:24.910" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""using free and open source software.""" start="00:00:28.885" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Using a streaming media player like mpv""" start="00:00:31.186" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""seems to be the best way to watch in terms of performance""" start="00:00:34.388" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""but there are also web-based players""" start="00:00:37.275" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""just in case that's all you've got.""" start="00:00:39.241" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The schedule shows the General track on top""" start="00:00:41.378" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and the Development track on the bottom,""" start="00:00:44.064" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so you can see what else is going on.""" start="00:00:45.603" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""As you're watching the talks,""" start="00:00:47.820" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""you can refer to the schedule in another window.""" start="00:00:49.819" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Hover over the boxes to see the times and titles,""" start="00:00:52.355" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and click on the boxes in the schedule""" start="00:00:55.601" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""to jump to the talk's page for more details.""" start="00:00:57.614" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Other schedule formats""" start="00:01:00.607" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""You can also get the schedule as an iCalendar file""" start="00:01:00.607" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""or as an Org file in different time zones.""" start="00:01:03.587" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The Org file has some links to talk resources""" start="00:01:05.621" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and might be handy as a starting point for your notes.""" start="00:01:08.255" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""BigBlueButton""" start="00:01:10.601" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""Many talks will be followed by""" start="00:01:10.601" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""live Q&A web conferences with the speaker,""" start="00:01:12.145" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""which will be done in BigBlueButton or BBB.""" start="00:01:14.572" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""These are indicated with a solid border on the schedule""" start="00:01:17.734" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and by Q&A: BBB on the schedule page.""" start="00:01:20.819" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can join the web conference room""" start="00:01:24.001" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""by clicking on the BBB link""" start="00:01:25.901" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""on the schedule page or the talk's webpage.""" start="00:01:27.467" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Then you can ask your questions yourself when the Q&A starts.""" start="00:01:30.176" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""To improve performance, please keep your webcam off""" start="00:01:34.215" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and stay muted until it's your turn to talk.""" start="00:01:37.211" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you don't like Javascript,""" start="00:01:39.890" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""you can still ask questions via IRC""" start="00:01:41.692" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and the hosts can read them out for you.""" start="00:01:43.643" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""On and off the stream""" start="00:01:46.036" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""We're probably going to automatically switch""" start="00:01:46.036" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""between talks and Q&A sessions,""" start="00:01:47.895" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so the transitions on the stream might be a little sudden.""" start="00:01:49.483" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""People in the BigBlueButton room""" start="00:01:52.897" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""can continue the conversation""" start="00:01:54.439" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""even after the talk moves off-stream,""" start="00:01:55.862" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and you can also reach out to the speakers""" start="00:01:58.220" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""using the contact information on the talk page.""" start="00:02:00.271" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Etherpad and IRC""" start="00:02:03.217" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""Other talks will have Q&A via Etherpad or IRC,""" start="00:02:03.217" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""depending on what the speakers prefer.""" start="00:02:06.302" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""This is indicated in the schedule with a dashed border""" start="00:02:08.542" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and on the schedule page as well.""" start="00:02:11.380" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The schedule pages have quick shortcuts so that you can""" start="00:02:13.510" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""find out more about talks, open the Etherpads,""" start="00:02:16.543" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and join the Q&A sessions.""" start="00:02:19.053" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The watch page has more tips""" start="00:02:21.204" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""on how to make the most of Q&A.""" start="00:02:23.366" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Etherpad""" start="00:02:25.456" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""If you can, please add notes and ask questions""" start="00:02:25.456" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""in the Etherpad for the talk.""" start="00:02:28.330" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""That makes it easier""" start="00:02:30.133" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""for everyone to share their notes,""" start="00:02:31.598" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and speakers and hosts can read the questions from there.""" start="00:02:33.130" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""We'll copy the notes to the talk pages afterwards.""" start="00:02:36.355" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""We have one pad for each talk,""" start="00:02:39.622" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""so you can follow the links to get to the next one""" start="00:02:41.497" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""or go back to the schedule and get the link from there.""" start="00:02:43.773" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you have general feedback about""" start="00:02:46.828" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""the conference itself, please put it in""" start="00:02:48.423" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""pad.emacsconf.org/emacsconf.""" start="00:02:50.668" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can also use this as a community message board""" start="00:02:54.593" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""for things like Help Wanted.""" start="00:02:57.550" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""IRC""" start="00:02:59.440" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""Internet Relay Chat or IRC can be another great way""" start="00:02:59.440" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""to be part of lots of conversations.""" start="00:03:02.800" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can use chat.emacsconf.org to join the IRC channels""" start="00:03:05.176" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""through your web browser.""" start="00:03:09.451" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The tabs on the left can help you""" start="00:03:11.046" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""switch between the different channels.""" start="00:03:12.857" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""There's #emacsconf-gen for the General track""" start="00:03:14.892" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and #emacsconf-dev for the Development track.""" start="00:03:17.611" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you need to reach us, you can join #emacsconf-org""" start="00:03:20.490" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""or e-mail emacsconf-org-private@gnu.org.""" start="00:03:23.957" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can use #emacsconf for hallway conversations.""" start="00:03:29.475" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Captions""" start="00:03:32.778" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""Once again, we're going to be streaming with open captions""" start="00:03:32.778" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""for most of the talks this year, thanks to our speakers and""" start="00:03:35.588" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""captioning volunteers.""" start="00:03:38.480" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""The captioned talks are indicated on the schedule,""" start="00:03:39.896" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and with any luck, we'll be posting""" start="00:03:42.523" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""videos and transcripts on talk pages""" start="00:03:44.313" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""shortly after the talks start.""" start="00:03:46.124" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If you need additional accommodations, please let us know""" start="00:03:47.884" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""in #emacsconf-org and we'll see""" start="00:03:51.070" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""if we can make things happen.""" start="00:03:54.017" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""status.emacsconf.org""" start="00:03:55.238" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""If something goes down, we'll update status.emacsconf.org.""" start="00:03:55.238" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""If it doesn't look like we've noticed yet,""" start="00:03:59.918" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""please let us know in the #emacsconf-org IRC channel,""" start="00:04:01.744" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""where we will be quietly panicking.""" start="00:04:05.263" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Guidelines for conduct""" start="00:04:07.282" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""In all of these conversations, please keep in mind""" start="00:04:07.282" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""our guidelines for conduct.""" start="00:04:09.705" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You can find them on the wiki,""" start="00:04:11.239" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and they basically boil down to: please be nice. Thank you!""" start="00:04:12.620" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Videos""" start="00:04:16.020" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""If all goes well, the prerecorded talks and transcripts""" start="00:04:16.020" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""should be available from the talk pages""" start="00:04:18.892" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""shortly after they start playing,""" start="00:04:20.538" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and we'll post the recordings of live talks""" start="00:04:22.039" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and Q&A sessions within the next few weeks.""" start="00:04:24.144" video="mainVideo-sun-open" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Let's get started!""" start="00:04:26.776" video="mainVideo-sun-open" id="subtitle"]]</div>[[!template text="""All right, let's get going.""" start="00:04:26.776" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""You might see Leo Vivier, Corwin Brust,""" start="00:04:28.248" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and Amin Bandali hosting the various tracks.""" start="00:04:31.215" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""I will run around mostly backstage,""" start="00:04:33.954" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""and you'll probably meet us in the closing remarks.""" start="00:04:35.768" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""That's also where we get to thank""" start="00:04:37.794" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""all the people and organizations""" start="00:04:39.244" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""who make EmacsConf possible.""" start="00:04:40.660" video="mainVideo-sun-open" id="subtitle"]]
+[[!template text="""Let's have fun at EmacsConf!""" start="00:04:42.550" video="mainVideo-sun-open" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+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/2025/info/sun-open-before.md b/2025/info/sun-open-before.md
new file mode 100644
index 00000000..ad99d4e0
--- /dev/null
+++ b/2025/info/sun-open-before.md
@@ -0,0 +1,28 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 5-min talk ; Q&A: Etherpad
+Etherpad: <https://pad.emacsconf.org/2025-sun-open>
+Status: Q&A finished, IRC and pad will be archived on this page
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-sun-open"><source src="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-sun-open--sunday-opening-remarks--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-sun-open--sunday-opening-remarks--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="mainVideo-sun-open" data="""
+00:00.000 Tracks
+00:16.000 Watching and participating
+01:00.607 Other schedule formats
+01:10.601 BigBlueButton
+01:46.036 On and off the stream
+02:03.217 Etherpad and IRC
+02:25.456 Etherpad
+02:59.440 IRC
+03:32.778 Captions
+03:55.238 status.emacsconf.org
+04:07.282 Guidelines for conduct
+04:16.020 Videos
+04:26.776 Let's get started!
+
+"""]]<div></div>Duration: 04:51 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-sun-open">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.opus">Download --main.opus (2.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-sun-open--sunday-opening-remarks--main.webm">Download --main.webm (15MB)</a></li><li><a href="https://youtu.be/0B9lsD8Z_6M">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/sun-open-nav.md b/2025/info/sun-open-nav.md
new file mode 100644
index 00000000..2f6390d4
--- /dev/null
+++ b/2025/info/sun-open-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/open-mic">Open session</a>
+Next by track: <a href="/2025/talks/modern">Some problems of modernizing Emacs</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/swanky-after.md b/2025/info/swanky-after.md
new file mode 100644
index 00000000..53c84315
--- /dev/null
+++ b/2025/info/swanky-after.md
@@ -0,0 +1,387 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="swanky-mainVideo-transcript"></a><h1>Transcript</h1>
+
+[[!template text="""Hello everyone, I'm Scott""" start="00:00:00.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and I'll be talking about Swanky Python,""" start="00:00:02.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which is a development environment for Python""" start="00:00:04.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""based on Emacs' Slime package.""" start="00:00:06.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So what is that and why might you find it interesting?""" start="00:00:08.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""SLIME is the Superior Lisp Interaction Mode for Emacs.""" start="00:00:11.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""It's an Emacs package for developing Common Lisp,""" start="00:00:15.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and it's a bit different from the way we develop most languages""" start="00:00:18.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""in that you're always connected""" start="00:00:20.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""to a running instance of your application,""" start="00:00:22.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and you kind of build up your application, piece by piece,""" start="00:00:25.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""modifying one expression at a time""" start="00:00:27.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""without ever having to restart your application.""" start="00:00:30.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So why might you want to develop this way?""" start="00:00:34.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""One advantage is that you can get a faster feedback loop.""" start="00:00:36.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""For some kinds of software, it doesn't make a big difference.""" start="00:00:40.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Like, if you're developing a web backend""" start="00:00:42.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""where all state is stored externally in a database,""" start="00:00:43.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""then you can have a file watcher""" start="00:00:48.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that just restarts the whole Python process""" start="00:00:50.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""whenever you make any edit,""" start="00:00:52.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and you're not really losing anything,""" start="00:00:54.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""because all the state is stored outside the Python process""" start="00:00:56.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""in a database. So it works great.""" start="00:00:59.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But for other kinds of software, like""" start="00:01:01.720" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""let's say you're developing an Emacs package""" start="00:01:03.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""or a video game,""" start="00:01:05.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""then it can be a real pain to restart the application""" start="00:01:07.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and recreate the state it was in before""" start="00:01:10.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""just to test the effect of each edit you want to make.""" start="00:01:12.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Another advantage is the runtime introspection you have available.""" start="00:01:17.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So since you're always connected""" start="00:01:21.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""to a running instance of your application,""" start="00:01:22.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""you can inspect the values of variables,""" start="00:01:25.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""you can trace functions, and all sorts of other information""" start="00:01:27.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""to help you understand your application better.""" start="00:01:30.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""And lastly, it's just a lot of fun to develop this way,""" start="00:01:36.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""or at least I find it fun developing with SLIME,""" start="00:01:39.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""so I wrote a SLIME backend for Python""" start="00:01:43.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""so I could have more fun when I'm coding in Python.""" start="00:01:45.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""As for the name swanky-python, within SLIME,""" start="00:01:48.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""swank is the name of the Common Lisp backend""" start="00:01:52.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that runs within your Common Lisp application""" start="00:01:56.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and connects to Emacs. So I'm not too creative.""" start="00:01:59.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""swanky-python is just a swank implementation in Python.""" start="00:02:02.920" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demo""" start="00:02:08.000" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""So let's see it in action. So we started up with M-x slime.""" start="00:02:08.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""And what that does is it starts a Python process,""" start="00:02:15.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""starts swanky-python within it, and connects to it from Emacs.""" start="00:02:19.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""And you can configure how exactly it runs Python.""" start="00:02:25.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Or you can start swanky python manually""" start="00:02:29.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""within a Python application running on a remote server""" start="00:02:32.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and forward the port locally""" start="00:02:35.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and connect to it in Emacs, from Emacs remotely.""" start="00:02:36.614" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Within the README, there's more documentation""" start="00:02:40.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""on other ways to start it.""" start="00:02:43.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But just M-x slime is the basic way that works most of the time.""" start="00:02:45.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So within the REPL, the first thing you'll notice is that""" start="00:02:52.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""REPL outputs are clickable buttons,""" start="00:02:55.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""what SLIME calls presentations.""" start="00:02:58.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So you can do things like inspect them.""" start="00:03:02.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""And for each presentation, in the Python backend,""" start="00:03:04.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it holds on to the reference to the object.""" start="00:03:09.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So for an int, it's not too interesting,""" start="00:03:12.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but let's do a more complex object like a file.""" start="00:03:14.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Then we can inspect the file.""" start="00:03:20.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can describe it, which will bring up documentation""" start="00:03:22.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""on that class. We can use it in further expressions""" start="00:03:26.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""like if we copy it, it will use the actual Python object""" start="00:03:33.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""in this expression.""" start="00:03:39.432" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can assign it to a variable.""" start="00:03:43.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""SLIME uses presentations everywhere""" start="00:03:48.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that a Python object would be displayed.""" start="00:03:51.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So instead of just their string representation,""" start="00:03:53.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""when you have a backtrace on an exception,""" start="00:03:56.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""or you... within the inspector or anywhere else really,""" start="00:04:00.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""anywhere that the string representation""" start="00:04:03.966" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""of an object would be displayed,""" start="00:04:06.020" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it displays a presentation that you can go on to""" start="00:04:07.941" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""inspect, reuse, or send to the REPL and so on.""" start="00:04:10.741" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""One useful utility function is pp for print presentation.""" start="00:04:14.961" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We haven't imported it yet.""" start="00:04:23.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So when we get a name error exception""" start="00:04:25.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and SLIME sees that that name is available for import somewhere,""" start="00:04:29.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it'll give us the option of importing it.""" start="00:04:33.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Since it's available for import from multiple modules,""" start="00:04:38.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it'll prompt us for which one we want to import it from.""" start="00:04:40.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We want to import it from swanky-python,""" start="00:04:43.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""not from the standard library.""" start="00:04:45.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Then it will print a presentation of that object.""" start="00:04:48.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Within the REPL, this is not really useful""" start="00:04:52.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""because all REPL outputs are already presentations.""" start="00:04:55.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But I use this now whenever I would use print debugging,""" start="00:04:58.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""just whenever I would use insert print statements in my program""" start="00:05:02.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""to see what's going on, I have it print a presentation""" start="00:05:05.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""because that way I can go back and inspect it later,""" start="00:05:08.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""copy it to the REPL and further manipulate it and so on.""" start="00:05:11.200" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Inspector""" start="00:05:16.600" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Next up, let's look at the inspector more.""" start="00:05:16.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""If we go back and inspect the file object,""" start="00:05:20.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""you can write custom inspector views""" start="00:05:25.580" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""for different kinds of objects.""" start="00:05:27.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So far, I just have a couple. One for sequences,""" start="00:05:28.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""one for mappings, and one for every other kind of object.""" start="00:05:32.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Like if we inspect a mapping, there's a shortcut""" start="00:05:36.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""inspect last result, which is what I normally use""" start="00:05:45.980" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""to open the inspector. Then we see the values,""" start="00:05:48.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and each value in the inspector is a presentation""" start="00:05:52.380" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that we can go on to inspect, and so on.""" start="00:05:56.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Let's go back to inspecting the file object.""" start="00:05:58.420" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Again, we can inspect each of the values,""" start="00:06:03.980" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""we can copy them back to the REPL and so on.""" start="00:06:06.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""It just displays all the attributes for the class""" start="00:06:10.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and their values.""" start="00:06:13.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can configure what attributes we want to show.""" start="00:06:15.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""There's a transient menu where we can toggle""" start="00:06:18.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""if we want to show private attributes, dunder attributes,""" start="00:06:21.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""doc strings, so on, or everything,""" start="00:06:23.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which is a bit much to show by default.""" start="00:06:26.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So we'll reset it to the default.""" start="00:06:28.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""In the future, I want to add graphical inspector views""" start="00:06:33.720" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""for different kinds of objects, and also support""" start="00:06:37.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""showing plots in both the inspector and the REPL,""" start="00:06:40.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but that's future work I haven't started on yet.""" start="00:06:43.000" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Evaluating Python""" start="00:06:47.720" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Let's look at the different options for evaluating Python.""" start="00:06:47.720" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So we can evaluate a whole file.""" start="00:06:52.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can evaluate just a class.""" start="00:06:59.100" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can evaluate just the method we're working on.""" start="00:07:00.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can evaluate a Python statement,""" start="00:07:03.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and it will show the result in an overlay next to the cursor.""" start="00:07:06.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can select some code and just evaluate the highlighted region.""" start="00:07:11.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can sync the REPL to the active file.""" start="00:07:17.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So now everything we evaluate in the REPL will be in the""" start="00:07:24.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""context of the eval_demo module.""" start="00:07:27.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can also set the module that the REPL is in.""" start="00:07:29.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can go back to main.""" start="00:07:35.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But let's go back to the eval_demo module for now.""" start="00:07:38.280" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Updating""" start="00:07:43.680" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""One useful thing is when you update a class or a function,""" start="00:07:43.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it updates old instances of that class or function.""" start="00:07:49.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So right now, f.bar is foobar.""" start="00:07:54.540" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But if we edit that class, it will actually edit the code""" start="00:07:58.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""for the old instance of that class.""" start="00:08:03.720" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""And that's provided by code I copied""" start="00:08:05.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""from IPython's autoreload extension.""" start="00:08:07.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""It helps when you're trying to develop in Python""" start="00:08:12.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""without having to restart the Python process""" start="00:08:14.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""whenever you make a change.""" start="00:08:16.499" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Auto reload in Python is a big topic""" start="00:08:20.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that I don't really have time to go into here,""" start="00:08:22.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but right now it is more limited""" start="00:08:26.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""than what is done in Common Lisp.""" start="00:08:29.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Like for example, if you have a data class in Python""" start="00:08:32.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and you add a new field to the data class,""" start="00:08:35.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it won't automatically update old instances""" start="00:08:37.620" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""of the data class with a new field.""" start="00:08:41.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So there's more that needs to be done with that,""" start="00:08:43.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but I am perhaps naively optimistic""" start="00:08:46.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that Python's runtime is quite dynamic and flexible,""" start="00:08:50.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and that I can fully implement autoreload in Python,""" start="00:08:54.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but there's still work to be done,""" start="00:08:59.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and it's a big topic to go into.""" start="00:09:02.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Next up, let's look at the backtrace buffer.""" start="00:09:05.420" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But as it is right now, autoreload is actually useful.""" start="00:09:08.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""I mostly develop in Python without having to restart the process""" start="00:09:12.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and without running into issues from old state""" start="00:09:16.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that hasn't been updated properly.""" start="00:09:19.600" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Backtraces""" start="00:09:22.900" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""So if we go on to look at the backtrace buffer,""" start="00:09:22.900" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""whenever we get an exception in Python...""" start="00:09:26.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Let's go back to it.""" start="00:09:32.820" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Whenever we get an exception, it will...""" start="00:09:37.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""let's change the code so that it actually""" start="00:09:41.420" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""gets an exception...""" start="00:09:43.699" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""we will get an interactive backtrace buffer""" start="00:09:49.966" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""where we can browse the source code for the different stack frames""" start="00:09:52.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and the local variables within the stack frames,""" start="00:09:57.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which are all presentations that we can inspect and so on.""" start="00:10:00.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can also open a REPL in the context of any stack frame.""" start="00:10:04.340" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Or we can, when we go to the source for a given stack frame,""" start="00:10:10.620" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""we can select some Python code and evaluate it""" start="00:10:16.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""within the context of that stack frame.""" start="00:10:20.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""One major limitation compared to SLIME for Common Lisp""" start="00:10:25.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""is that in Common Lisp, you have the option to""" start="00:10:30.700" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""restart or resume execution from a given stack frame""" start="00:10:33.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""after an exception happens, where in Python,""" start="00:10:38.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""what we have right now is pretty much equivalent to""" start="00:10:42.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""the postmortem debugger.""" start="00:10:45.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""You can view the state that the call stack was in""" start="00:10:47.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""at the time of the exception,""" start="00:10:50.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but you can't actually resume execution,""" start="00:10:51.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which you often might want to do,""" start="00:10:55.660" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""because when you're coding in a dynamic language,""" start="00:10:57.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""you're going to get runtime errors.""" start="00:10:59.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So if you're writing a script that does like some sort of""" start="00:11:01.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""long-running computation or processes a ton of files""" start="00:11:04.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and gets an exception parsing one file halfway through,""" start="00:11:08.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""normally you'd have to fix the script, and then rerun it""" start="00:11:11.940" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and have it process all the same files all over again,""" start="00:11:16.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and lose a bunch of time for every bug you run into""" start="00:11:19.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and fix you have to make.""" start="00:11:23.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So right now we've got a kind of mediocre workaround""" start="00:11:24.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which is you can add the restart decorator to a function""" start="00:11:28.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and then... where in the case of a script""" start="00:11:34.020" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""processing a bunch of files,""" start="00:11:37.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""you would add the restart decorator to the function""" start="00:11:38.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that processes a single file.""" start="00:11:41.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""You'd add it to the function""" start="00:11:43.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that represents kind of the smallest unit of work""" start="00:11:45.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that might fail with an exception,""" start="00:11:47.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Then, when you get an exception,""" start="00:11:50.220" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""you can actually edit the function.""" start="00:11:54.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Like, if we edit it so it doesn't throw an error,""" start="00:11:57.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and then we can resume execution,""" start="00:12:01.020" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""then it will return from foo using the""" start="00:12:07.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""the new version of baz,""" start="00:12:12.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""without having to run the script from the beginning again.""" start="00:12:15.041" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So in the example of a script that processes a bunch of files,""" start="00:12:18.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that would let you,""" start="00:12:22.380" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""as you run into files that cause an exception,""" start="00:12:24.300" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""fix your code to deal with it""" start="00:12:27.620" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and resume execution without having to restart the script""" start="00:12:29.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""from the beginning.""" start="00:12:31.881" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But this is obviously a pretty terrible hack,""" start="00:12:33.081" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""having to add the restart decorator to the function.""" start="00:12:36.121" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""I would like it to be able to restart from any function.""" start="00:12:38.841" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""without needing the decorator, as you can in Common Lisp,""" start="00:12:46.740" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but I think that will require patching CPython""" start="00:12:49.632" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and I really have no idea how to do that.""" start="00:12:54.032" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So if you do know anything about CPython internals""" start="00:12:56.580" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and are interested in helping, please reach out.""" start="00:13:00.532" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""pydumpling""" start="00:13:03.721" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Another feature we have with the backtrace buffer is""" start="00:13:03.721" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""there's this library called PyDumpling""" start="00:13:07.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which can serialize a traceback and store it to a file.""" start="00:13:09.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So you can use PyDumpling with your applications running in""" start="00:13:14.660" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""production to serialize a traceback""" start="00:13:17.860" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""whenever they have an exception and save it to a file.""" start="00:13:21.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Then you can transfer the file locally""" start="00:13:24.900" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and load it into your local Emacs with slime-py-load-pydumpling.""" start="00:13:28.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""This will load the same backtrace buffer,""" start="00:13:38.860" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and you see all the same local variables""" start="00:13:41.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""at the time of the exception.""" start="00:13:44.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""You can inspect them and get a REPL""" start="00:13:45.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""in the context of the stack frame.""" start="00:13:48.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Well, this will only work for variables""" start="00:13:51.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that can be serialized with pickle.""" start="00:13:54.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Or actually, the library uses dill,""" start="00:13:57.620" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which can serialize a bit more than pickle can.""" start="00:13:59.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But yeah so this can help you inspect and debug errors""" start="00:14:03.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""for applications running in production remotely""" start="00:14:10.201" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that you don't want to have SLIME connected to 24-7.""" start="00:14:12.881" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Documentation browser""" start="00:14:20.060" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Next up, let's look at the documentation browser.""" start="00:14:20.060" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can bring up documentation for any module,""" start="00:14:24.860" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and all this information is generated""" start="00:14:29.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""from runtime introspection,""" start="00:14:33.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""from the doc strings for the module""" start="00:14:35.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and the classes and so on.""" start="00:14:37.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So you won't see documentation for libraries""" start="00:14:39.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that you don't have actually loaded""" start="00:14:41.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""into your running Python process.""" start="00:14:43.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Then you can go browse to classes.""" start="00:14:45.940" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""It'll show all the attributes, their methods, and so on.""" start="00:14:50.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""By each method to the right, it will show""" start="00:14:54.720" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""the base class where the method was originally inherited from.""" start="00:14:57.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""You can also bring up a screen with all the Python packages""" start="00:15:02.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that are installed, and browse that with imenu,""" start="00:15:09.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and bring up information on any package and so on.""" start="00:15:14.440" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Thread view""" start="00:15:20.360" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Next up, let's take a look at the thread view.""" start="00:15:20.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So let's run this and then bring up the thread view""" start="00:15:28.500" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and this will show information on all running threads.""" start="00:15:31.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""You can configure it to refresh after a given interval,""" start="00:15:35.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""like every second, but I don't have that set up right now,""" start="00:15:38.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""so I have to manually refresh it.""" start="00:15:41.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Probably the most useful thing is that""" start="00:15:45.660" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""you can bring up a backtrace for any thread""" start="00:15:47.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which won't pause the thread or anything,""" start="00:15:49.740" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but will just give you the call stack""" start="00:15:51.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""at the time you requested the backtrace.""" start="00:15:53.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""You can again view the stack frames, local variables,""" start="00:15:55.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""open a REPL in the context of the thread, and so on.""" start="00:15:59.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""There's also a viewer for async tasks,""" start="00:16:04.140" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but I'm not going to demo that right now,""" start="00:16:07.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""because for that to work, you have to start swanky-python""" start="00:16:10.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""after the async event loop has started,""" start="00:16:14.160" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""from within the same thread.""" start="00:16:16.600" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""If you go to the project readme,""" start="00:16:18.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""there's a demo of how to use the async task viewer""" start="00:16:20.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""with a fastapi project.""" start="00:16:23.920" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Tracing functions""" start="00:16:27.440" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Next up, let's look at tracing functions.""" start="00:16:27.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So here we got some random error,""" start="00:16:33.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""because this is still very much a work in progress.""" start="00:16:36.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But it looks like it executed""" start="00:16:39.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""correctly this time.""" start="00:16:42.360" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So now let's mark the fibonacci function""" start="00:16:43.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""for tracing and execute it.""" start="00:16:47.566" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can see, every time the function is called,""" start="00:16:50.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""all its arguments and return values.""" start="00:16:56.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Again, there are presentations that we can inspect and so on.""" start="00:16:58.240" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But let's inspect a more complex object, like a file object.""" start="00:17:02.900" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""If we trace the count_lines function and run that code,""" start="00:17:06.080" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""then we can inspect the file it was passed, or the file object.""" start="00:17:11.340" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""One pitfall is that in Python, objects are mutable.""" start="00:17:15.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So in the trace buffer, the string representation""" start="00:17:21.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that's printed is the string representation""" start="00:17:25.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""at the time it was passed to the function.""" start="00:17:27.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But when we go to inspect it,""" start="00:17:31.220" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""we're inspecting the object as it is right now,""" start="00:17:32.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which can be different than it was at the time""" start="00:17:34.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""the function saw it. So for this file object, for example,""" start="00:17:37.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it's closed now, when it was open at the time""" start="00:17:41.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""the function used it.""" start="00:17:44.280" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""AI integrations""" start="00:17:47.800" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Next up, let's look at AI integrations.""" start="00:17:47.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So if you're used to SLIME with Common Lisp,""" start="00:17:50.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Emacs actually has a built-in AI that can help with the transition.""" start="00:17:54.520" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So it's just a joke, I actually really like Python.""" start="00:18:09.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""And for more serious AI integrations,""" start="00:18:14.560" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""I have some ideas for the future""" start="00:18:18.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but I haven't implemented anything yet.""" start="00:18:19.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""I think right now, people are mostly passing source code to LLMs""" start="00:18:21.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""but since we're embedded in the Python process at runtime,""" start="00:18:27.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""we have a lot of more information available,""" start="00:18:32.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""like maybe we can trace all calls to functions,""" start="00:18:35.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and when we have a bug,""" start="00:18:39.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""we can feed the trace to the LLM,""" start="00:18:41.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and the LLM can point out maybe""" start="00:18:46.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""when this function was called with these arguments,""" start="00:18:48.720" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""its return value doesn't make sense,""" start="00:18:51.960" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""so maybe that's the root cause of your bug.""" start="00:18:53.880" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""If you have any ideas of potential LLM or AI integrations,""" start="00:18:55.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""let me know. I'm happy to discuss.""" start="00:19:02.360" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""LSP-type features""" start="00:19:06.000" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""Next up, let's look at standard LSP-type features.""" start="00:19:06.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So we've got completions. It's fuzzy completions right now,""" start="00:19:09.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""so it's showing everything with a PR in the name.""" start="00:19:14.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can bring up documentation for each one.""" start="00:19:16.320" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""When we start calling a method in the minibuffer at the bottom""" start="00:19:21.780" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""it'll show the signature.""" start="00:19:26.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""There's some refactoring available.""" start="00:19:28.860" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""We can extract a function or variable,""" start="00:19:33.720" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""or rename something,""" start="00:19:37.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""like, let's rename fib to fib2,""" start="00:19:39.500" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and it will rename all the uses of it.""" start="00:19:42.920" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""All these features are based on Jedi,""" start="00:19:47.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""which is the Python library used by IPython.""" start="00:19:49.760" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But as it is right now,""" start="00:19:55.400" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""if you want the most complete Python development experience""" start="00:19:57.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""in Emacs, I'd probably recommend using LSP""" start="00:20:02.040" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""for everything LSP can do, and then just using swanky-python""" start="00:20:05.580" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""for the object inspector and backtrace buffer,""" start="00:20:10.440" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and the interactive features it has""" start="00:20:13.680" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""that an LSP can't provide.""" start="00:20:15.360" video="mainVideo-swanky" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:20:18.032" video="mainVideo-swanky" id="subtitle"]]</div>[[!template text="""And that's it really.""" start="00:20:18.032" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""Shortly we'll have questions and answers""" start="00:20:23.340" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""as part of EmacsConf, and later on,""" start="00:20:25.866" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""if you have any questions, ideas, or issues""" start="00:20:28.800" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""feel free to reach out over email""" start="00:20:31.200" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""or create an issue on the repository.""" start="00:20:34.640" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""I should probably warn you,""" start="00:20:38.000" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""if you want to try out the project:""" start="00:20:39.332" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""so far I'm probably the only user of it""" start="00:20:41.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""and I've only tested it on my own Emacs setup,""" start="00:20:45.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""so it's quite likely you'll run into issues""" start="00:20:48.280" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""trying to get it installed and working.""" start="00:20:50.840" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""But if you do run into problems, please reach out,""" start="00:20:53.480" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""let me know. I'm happy to help and try and fix them.""" start="00:20:56.120" video="mainVideo-swanky" id="subtitle"]]
+[[!template text="""So that's it. Thanks for listening.""" start="00:20:59.280" video="mainVideo-swanky" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+Questions or comments? Please e-mail [sczi@disroot.org](mailto:sczi@disroot.org?subject=Comment%20for%20EmacsConf%202023%20swanky%3A%20Swanky%20Python%3A%20Interactive%20development%20for%20Python)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/swanky-before.md b/2025/info/swanky-before.md
new file mode 100644
index 00000000..c10e2605
--- /dev/null
+++ b/2025/info/swanky-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 22-min talk ; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference Etherpad: <https://pad.emacsconf.org/2025-swanky>
+Etherpad: <https://pad.emacsconf.org/2025-swanky>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-swanky"><source src="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 21:03 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-swanky">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.opus">Download --main.opus (18MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-swanky--swanky-python-interactive-development-for-python--scott-zimmermann--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/fy0ofT1I54U">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/swanky-nav.md b/2025/info/swanky-nav.md
new file mode 100644
index 00000000..4d44523b
--- /dev/null
+++ b/2025/info/swanky-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/juicemacs">Juicemacs: exploring speculative JIT compilation for ELisp in Java</a>
+Next by track: <a href="/2025/talks/python">Interactive Python programming in Emacs</a>
+Track: <span class="sched-track Development">Development</span>
+</div>
diff --git a/2025/info/weights-after.md b/2025/info/weights-after.md
new file mode 100644
index 00000000..d8714c35
--- /dev/null
+++ b/2025/info/weights-after.md
@@ -0,0 +1,567 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="weights-mainVideo-transcript"></a><h1>Transcript (unedited)</h1>
+
+[[!template text="""And you're ready to go. All right, perfect.""" start="00:00:00.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Hello, my name is Zachary Romero""" start="00:00:05.820" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and today I'll be giving a talk""" start="00:00:07.876" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""on how I'm using Emacs for Android""" start="00:00:08.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to replace my fitness app I normally use.""" start="00:00:12.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So it goes without saying""" start="00:00:15.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that a lot of the mobile ecosystem these days""" start="00:00:17.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""are pretty hostile to the interest of its users.""" start="00:00:21.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So there's privacy policies""" start="00:00:25.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that are constantly collecting your data and selling it.""" start="00:00:27.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""without your consent, bombardment of ads.""" start="00:00:32.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then there's a lot of features that are locked.""" start="00:00:36.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Sometimes features that the app gives you,""" start="00:00:38.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they're put behind paywalls.""" start="00:00:40.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so a lot of the ecosystem""" start="00:00:42.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""isn't in the best interest of users.""" start="00:00:45.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And obviously there are apps like on F-Droid""" start="00:00:49.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and the Android ecosystem that do try to address this,""" start="00:00:51.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but the solutions overall are lagging""" start="00:00:56.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""behind maybe desktop computers.""" start="00:00:59.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""One option that has come in the past few years""" start="00:01:05.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""is Emacs on Android. It's just a normal Emacs build,""" start="00:01:14.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and so it can do everything, in theory, that Emacs can do.""" start="00:01:17.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so I got to thinking how could I, how I could use Emacs""" start="00:01:21.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to replace some of the proprietary apps""" start="00:01:24.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that I use on a daily basis.""" start="00:01:27.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So I just went thinking about the apps,""" start="00:01:28.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""the apps that Emacs can replace.""" start="00:01:31.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Some of them seem quite easy.""" start="00:01:33.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Some of them... maybe might take a little effort but seem doable""" start="00:01:35.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then obviously there's a whole class of apps""" start="00:01:39.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that would be pretty impossible to emulate on Emacs.""" start="00:01:41.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So I mean besides like to-do lists, note taking, org mode,""" start="00:01:47.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""one thing that came to mind was my fitness tracking app.""" start="00:01:52.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is an app I use pretty often""" start="00:01:55.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and in theory Emacs should be quite usable for this case.""" start="00:01:59.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So weightlifting tracking is,""" start="00:02:06.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so it's normally used to record""" start="00:02:09.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""what exercises you do at what intensity""" start="00:02:13.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""in order to progress week by week.""" start="00:02:17.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So you might plan on like slowly increasing""" start="00:02:20.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""the amount of effort you put into""" start="00:02:25.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""your various workouts from week to week,""" start="00:02:27.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then maybe you'll have put some rest weeks in there.""" start="00:02:30.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so you want a detailed plan""" start="00:02:34.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and recording of what you do throughout the week.""" start="00:02:37.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so I guess way back, normally""" start="00:02:40.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""this would have been done on pen and paper.""" start="00:02:43.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So you would take your notebook""" start="00:02:45.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and just write down on paper what you did.""" start="00:02:48.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And this obviously works, and a lot of people do do this.""" start="00:02:51.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""But these days, there are quite a few apps""" start="00:02:56.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that make this process quite seamless and effortless.""" start="00:02:59.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So just as an example, really fast.""" start="00:03:02.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So this is one of the popular apps out these days""" start="00:03:06.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that has such a feature.""" start="00:03:09.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So you can save all your workout routines""" start="00:03:10.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and this nice interface.""" start="00:03:13.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so you click a button and then it starts,""" start="00:03:14.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you have the workout interface and then""" start="00:03:18.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""You can kind of, you go through your workout""" start="00:03:20.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then you can input,""" start="00:03:23.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you can input like what things you do.""" start="00:03:25.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then it has this like fancy timer at the bottom.""" start="00:03:27.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So like, this is kind of like the,""" start="00:03:29.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""kind of like what a lot of people use these days,""" start="00:03:30.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just for, just for, to make it as frictionless as possible.""" start="00:03:35.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So obviously you can do like this bare bone text editing in Emacs.""" start="00:03:39.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""You just have to open up an org mode file and just right away.""" start="00:03:44.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So, but there are a number of problems with this.""" start="00:03:46.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So like, especially on mobile,""" start="00:03:48.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""character by character editing,""" start="00:03:50.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just like writing all these, this text out manually,""" start="00:03:52.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""maybe some formatting, it can be pretty tedious""" start="00:03:55.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and not, maybe not something you want to, you want to have to do,""" start="00:03:58.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""especially if you're like exhausted or tired.""" start="00:04:01.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So, I mean, there's also like the problem""" start="00:04:04.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""of like remembering which, where in your workout you are,""" start="00:04:06.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like how many of these, these, like which,""" start="00:04:09.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""which, like where are you, where you are,""" start="00:04:11.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like, um like which set number set number are you on""" start="00:04:13.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""are you on the first second""" start="00:04:17.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then also like maybe you failed""" start="00:04:17.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""maybe you weren't able to like perform this""" start="00:04:19.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and maybe you have to make a note that so like""" start="00:04:22.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so that's even more text editing you would have to do""" start="00:04:24.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""um also some things like unit conversions""" start="00:04:28.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like you could use calc""" start="00:04:30.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but then you know you'd have to like open up the calc,""" start="00:04:31.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then number, unit conversion, switch buffers.""" start="00:04:35.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So it's doable, but it takes a little effort.""" start="00:04:39.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then also the rest timer.""" start="00:04:42.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So if you want to make sure you're resting""" start="00:04:43.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""in between these exercises you do,""" start="00:04:45.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you'd have to maybe open up another app,""" start="00:04:47.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""or maybe you'd have to bring your watch.""" start="00:04:51.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So that's another thing that""" start="00:04:52.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""these apps normally would do for you.""" start="00:04:53.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So writing some Elisp, I created a package""" start="00:04:58.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to try to emulate that experience""" start="00:05:02.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I showed you on that other app.""" start="00:05:04.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So let me just demo this real fast.""" start="00:05:06.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So here, the package is called org-fit.""" start="00:05:08.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so here, I'm going to start a new workout.""" start="00:05:13.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then here, I'm prompted by a list of routines""" start="00:05:17.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that I have pre-written in org mode.""" start="00:05:19.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So the header name is the routine name.""" start="00:05:22.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so I can, out of all these routines I've written,""" start="00:05:25.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I can select one and then also I can have it populate.""" start="00:05:29.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So here it's populating preset weights I had for it.""" start="00:05:35.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, so basically this is my current attempt""" start="00:05:41.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to emulate that experience.""" start="00:05:45.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So here we can, so here like the arrows and the tabs,""" start="00:05:47.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they only go through like the, editable fields I can so""" start="00:05:51.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""on the notes section you see you see here in the table""" start="00:05:55.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""this is like the my plan for the day""" start="00:05:58.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so I can press space to easily""" start="00:06:00.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just fill out the data tab""" start="00:06:02.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""go the next the next the next set""" start="00:06:03.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I can press quote to copy from above""" start="00:06:06.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""There's also some interesting things with Android,""" start="00:06:10.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like you can bind the volume down key.""" start="00:06:13.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So here I have the volume down key""" start="00:06:15.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just like inputting the data automatically""" start="00:06:17.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and going to the next field.""" start="00:06:21.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So you see there it's quite seamless input of information.""" start="00:06:22.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Notice also when all the sets""" start="00:06:26.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""of a single exercise are done,""" start="00:06:30.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it marks that heading as done.""" start="00:06:31.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Also, if you notice at the top, on the left,""" start="00:06:34.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you have the session time for the workout.""" start="00:06:37.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then on here, we have the rest timer.""" start="00:06:42.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So the rest timer is actually just defined as an org mode property.""" start="00:06:44.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So here it's saying that, okay,""" start="00:06:48.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you should start the auto rest timer""" start="00:06:50.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""for three minutes every time you do a set.""" start="00:06:52.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So here, let's fill it in, go to the next one.""" start="00:06:54.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And now the rest timer is set for three minutes.""" start="00:06:58.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so here I have, I can just rest""" start="00:07:00.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I just have the information right here.""" start="00:07:03.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Also, you'll notice here we have""" start="00:07:05.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""some calculations at the bottom.""" start="00:07:08.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is something also that those apps provide,""" start="00:07:09.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like in order to make sure you're tracking""" start="00:07:12.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""on certain levels of intensity.""" start="00:07:14.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Let's see, what else do we have?""" start="00:07:16.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""We can add warmups, automatic warmup set inserting, unit conversions,""" start="00:07:22.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then Something else to know""" start="00:07:30.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""is that all of these actions I'm doing,""" start="00:07:33.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they're all bound to a single key""" start="00:07:35.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to make things as effortless as possible.""" start="00:07:37.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, that's the app in a nutshell.""" start="00:07:40.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then, so how is this done?""" start="00:07:43.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So the philosophy behind this is to use org mode as a base.""" start="00:07:47.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So all the functionality, the timer for the session,""" start="00:07:51.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that's just clock in or clock in.""" start="00:07:55.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""The various, all the data you fill in,""" start="00:08:00.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""the exercises, routines, those are just org headings,""" start="00:08:05.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like with nested entries.""" start="00:08:09.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, and then all the movement,""" start="00:08:12.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like a lot of the editing stuff""" start="00:08:14.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""is just going off of the org mode API.""" start="00:08:16.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So like here, my upper field, is actually just using the,""" start="00:08:18.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so it's using like the org table go to line function.""" start="00:08:22.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Adding a no is org table put.""" start="00:08:26.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So like all of my functions I'm using,""" start="00:08:29.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they're just building off of the org mode API.""" start="00:08:31.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And I found that this pattern worked work pretty well.""" start="00:08:33.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So you get the benefits of org mode""" start="00:08:38.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then the ease of using it on mobile.""" start="00:08:41.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so I guess in the last few minutes of this talk,""" start="00:08:48.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I'll just go over some quick things""" start="00:08:51.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""about working with Android that might come up.""" start="00:08:53.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So the first thing is notifications.""" start="00:08:56.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is actually an interesting feature.""" start="00:08:58.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So In the Android build for Emacs,""" start="00:09:01.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you have the function android notifications notify.""" start="00:09:03.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so here, this is how you can send a notification.""" start="00:09:05.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So my rest timer, for example, utilizes this function""" start="00:09:09.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to let you know when your rest is over.""" start="00:09:12.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And the cool thing about this is that the build for Emacs""" start="00:09:14.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""lets you, so here in the app settings, under notifications,""" start="00:09:22.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so here you can actually pick a notification group,""" start="00:09:29.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""which is here set, which is, yeah, so it's set right here""" start="00:09:33.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and you can just customize it.""" start="00:09:36.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So like what sound do you want it to make?""" start="00:09:38.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Do you want it to vibrate?""" start="00:09:39.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Do you want to show on the screen?""" start="00:09:40.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so this way, like you can easily,""" start="00:09:41.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so if you are resting, you will get a notification.""" start="00:09:43.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It will vibrate.""" start="00:09:46.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it might make a really loud noise if you want it to.""" start="00:09:47.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so this is all customizable.""" start="00:09:50.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And the cool thing is that if you have other packages""" start="00:09:51.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that utilize these notifications,""" start="00:09:54.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""all of the notification groups,""" start="00:09:55.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they're all customizable separately. So, and there we go.""" start="00:09:57.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So that notification you see on the top""" start="00:10:01.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""is actually from the Emacs app.""" start="00:10:02.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So you notice here, we're not even running Emacs""" start="00:10:05.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and yet we got that rest timer is over.""" start="00:10:07.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So that's one thing. Next, keyboard.""" start="00:10:09.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So just when working with Emacs,""" start="00:10:13.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I found using the unexpected keyboard, in particular,""" start="00:10:15.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to be really helpful with all the keybinding.""" start="00:10:19.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So if you just want to try out Emacs""" start="00:10:22.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""from F-Droid or something,""" start="00:10:25.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I would recommend using a keyboard like this""" start="00:10:27.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to let you use the meta keys and the control keys.""" start="00:10:30.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then yeah, using this keyboard,""" start="00:10:34.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I haven't really noticed any problems""" start="00:10:37.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""with Emacs key bindings.""" start="00:10:39.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then lastly, just like my setup.""" start="00:10:41.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So SyncThinkFork is another app I rely on heavily.""" start="00:10:45.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So as I mentioned, all the, this is org-fit files,""" start="00:10:49.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they're all org-mode files.""" start="00:10:54.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So I use SyncThinkFork to synchronize them""" start="00:10:55.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""between my laptop and my Android.""" start="00:10:57.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then also like to get this package,""" start="00:10:59.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just syncing a list folder might be helpful""" start="00:11:04.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""if you want to easily edit your init file""" start="00:11:06.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""on Android on your machine.""" start="00:11:10.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, SyncThinkPort is another helpful thing""" start="00:11:12.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that you might wanna look into""" start="00:11:15.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""if you're exploring Android, the Emacs build of Android.""" start="00:11:17.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, Emacs on Android does actually have the potential""" start="00:11:22.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to replace a decent number of common use cases.""" start="00:11:26.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And org mode can be a solid foundation""" start="00:11:30.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""for any of these applications that you're thinking of.""" start="00:11:35.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And yeah, I highly recommend giving giving Emacs on Android a shot.""" start="00:11:39.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And that concludes this presentation.""" start="00:11:45.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Thank you so much, Zachary. That was an awesome talk,""" start="00:11:49.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and I appreciate your preparing it for us.""" start="00:11:56.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""A couple questions on the pad, if anybody wants to jump in""" start="00:11:59.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and throw in your questions or comments.""" start="00:12:03.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Of course, happy to read them out on screen here.""" start="00:12:05.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think when we were talking backstage before,""" start="00:12:08.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you had asked me to kind of read them out,""" start="00:12:12.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but feel free to jump in and kind of""" start="00:12:14.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""take over at any point.""" start="00:12:17.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is the You Show. I'm kind of...""" start="00:12:19.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So the first question we had was a comment.""" start="00:12:25.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is very cool.""" start="00:12:30.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It would be nice to build up some""" start="00:12:31.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""org rep max calculation formula into calc.""" start="00:12:33.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Is that something that you've thought about?""" start="00:12:38.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Um, well, I mean, um, one rep max. Yeah.""" start="00:12:42.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I mean, not in honesty,""" start="00:12:47.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I'm not sure about the, like the, like, uh,""" start="00:12:48.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""extending calc itself.""" start="00:12:52.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Like if there's, you know, if like,""" start="00:12:53.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""what are the ways of extending calc itself,""" start="00:12:56.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but this, this package, um, or fit,""" start="00:12:59.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I mean, it does have the one rep max.""" start="00:13:02.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Like I kind of had to dig into that, like, um, uh,""" start="00:13:04.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I can find the code, but yeah, I mean, it does,""" start="00:13:11.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I mean, you know, so this is specifically this package,""" start="00:13:20.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but yeah, you can use the various one rep max formulas for this.""" start="00:13:25.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Extend this clock report. Yes, yeah, exactly.""" start="00:13:33.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Graphical reports. These are all something that,""" start="00:13:37.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It currently doesn't have, and these nice apps do have.""" start="00:13:39.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""They have charts of all kinds.""" start="00:13:43.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""You can see your progress from week to week""" start="00:13:45.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""on various exercise.""" start="00:13:48.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""They have like charts galore, all these like fancy apps.""" start="00:13:49.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And in theory, it wouldn't be hard at all to like,""" start="00:13:54.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""cause like, you know, there's a GNU plot.""" start="00:14:00.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""There's those, and then they have like""" start="00:14:03.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""very good packages on any of them.""" start="00:14:07.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So, I mean, I assume integration would be pretty seamless.""" start="00:14:10.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yes, that is definitely on the list""" start="00:14:13.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""of things I want to do.""" start="00:14:16.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Have you ever wanted to modify""" start="00:14:17.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""the functionality of your mobile device""" start="00:14:21.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""while working out any good""" start="00:14:23.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""or challenging experiences or tips with that?""" start="00:14:26.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Yeah, that's actually funny.""" start="00:14:28.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""There was a time where, yeah, I mean, like debugging,""" start="00:14:30.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""there was like some bug I was having with my code.""" start="00:14:37.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so I have, in the middle of a workout,""" start="00:14:41.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""yeah, start, like, open up the debugger and kind of,""" start="00:14:44.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and the cool thing is that, I mean,""" start="00:14:48.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""the biggest thing, like, the biggest thing by far""" start="00:14:50.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""is unexpected keyboard.""" start="00:14:53.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Like, I can't state how,""" start="00:14:54.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I don't know how much unexpected keyboard is,""" start="00:14:56.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""because, like, with unexpected, with the unexpected,""" start="00:14:58.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""with that keyboard, you can literally just, like,""" start="00:15:01.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it's, it's not hard at all to, like,""" start="00:15:03.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you can do meta x or uh control meta x""" start="00:15:06.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""or you know control u control meta x""" start="00:15:11.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to like you know debug like you can do all the key bindings""" start="00:15:13.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""with unexpected keyboard there's so there's no problem""" start="00:15:15.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""whatsoever whatsoever""" start="00:15:18.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""with that part the only part is muscle memory like like""" start="00:15:20.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it's because you get the muscle memory""" start="00:15:23.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""of like the emacs key binding""" start="00:15:25.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and so you have to kind of like yeah""" start="00:15:26.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""i mean that translation is actually kind of""" start="00:15:28.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you have to think about it like, like, okay,""" start="00:15:31.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""what was that key binding again?""" start="00:15:35.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And you have to kind of like do it with your fingers.""" start="00:15:36.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And it was like doing it on the, on Android is,""" start="00:15:39.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I mean, it takes a little longer""" start="00:15:41.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and it's just a different, yeah,""" start="00:15:44.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""different set of different muscle memory.""" start="00:15:45.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Gotcha. Sorry, if you've covered this,""" start="00:15:47.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""does the rest timer end with an audible notification?""" start="00:15:51.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""That's the cool thing.""" start="00:15:55.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So with the Emacs, with the Android notification settings,""" start="00:15:58.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you can, I can show that again in more detail.""" start="00:16:02.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So bonus settings, apps, pick the app, notifications.""" start="00:16:06.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then here we get that Org Fit Restover.""" start="00:16:17.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so here you can set, for example,""" start="00:16:21.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""whether it's a silent notification.""" start="00:16:22.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so this won't, this won't make it make noise you can do""" start="00:16:24.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""or like make it have a noise""" start="00:16:27.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and so you can have it make sure""" start="00:16:29.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it's pop on this way the screen""" start="00:16:31.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then yeah you can just pick you can just pick whatever ringtone you want""" start="00:16:33.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and you can make it look like yeah""" start="00:16:37.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then obviously you have like the whole uh volume setting""" start="00:16:38.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so you can like when you're when you're uh when you're working""" start="00:16:42.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you know you can just set the volume pretty high""" start="00:16:44.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so if you set if you do happen""" start="00:16:50.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to set your phone kind of away You set the volume high,""" start="00:16:51.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""maybe make a really annoying sound,""" start="00:16:55.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""a loud sound you won't miss. And then, yeah, you'll be set.""" start="00:16:57.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So that works.""" start="00:17:00.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""That was actually one of the biggest surprises.""" start="00:17:02.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I wasn't expecting that to work so nice.""" start="00:17:04.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""One of the next question relates to the unexpected keyboard.""" start="00:17:08.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Question is, have you tried other keyboards,""" start="00:17:17.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""such as Hacker's Keyboard?""" start="00:17:19.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Not recently. I haven't, so I couldn't compare them.""" start="00:17:20.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Fair enough. Another keyboard question.""" start="00:17:27.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Have you tried Flickboard on F-Droid?""" start="00:17:31.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""The commenter says, this is the craziest keyboard.""" start="00:17:34.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""You use one thumb. Oh, that is interesting. Let me see.""" start="00:17:37.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Flickboard. Flickboard. Yeah, I'll have to try that.""" start="00:17:44.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I'm curious to get the key bindings done.""" start="00:17:48.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I wonder if the key bindings and all that work.""" start="00:17:53.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I hope that's interesting. I'll definitely look into that.""" start="00:17:57.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So I'll hold on just a moment""" start="00:18:01.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""as people are typing in more questions.""" start="00:18:02.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""A good moment to just thank you for the talk.""" start="00:18:04.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It's personally, it's one of my favorite things""" start="00:18:06.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to see at EmacsConf is, you know, a glimpse into a world""" start="00:18:09.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that kind of isn't mine, right?""" start="00:18:14.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but it shows how, you know, Emacs is sort of""" start="00:18:17.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""the bazaar in the cathedral""" start="00:18:22.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and bazaar sense of we're all just here""" start="00:18:26.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""sort of hauling our bags of toys""" start="00:18:28.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""into the center square and, you know, making a,""" start="00:18:31.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you know, I don't know if it's a house of cards""" start="00:18:35.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""or what exactly it is,""" start="00:18:38.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but it, you know, it's managing to keep me afloat personally.""" start="00:18:40.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And I just appreciate your, you know,""" start="00:18:43.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""kind of expanding my world.""" start="00:18:47.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It's pretty cool. Yeah, definitely. Yeah, I mean, I agree.""" start="00:18:48.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""There's a lot of different, yeah. So, next commenter.""" start="00:18:53.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I'm curious, oh, sorry, I skipped one here.""" start="00:19:01.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This user interface is simplified,""" start="00:19:05.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but still keyboard based.""" start="00:19:07.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Have you thought about ways to make it more touch-based?""" start="00:19:09.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Good question. Yeah, yeah, yeah.""" start="00:19:11.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So the only thing currently, I think,""" start="00:19:16.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""of specific touch-based functionality I have,""" start="00:19:19.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""which, so this is like, so let's see,""" start="00:19:22.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it's Control X, Control Plus,""" start="00:19:25.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think that's the, okay, that wrong,""" start="00:19:37.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that key binding wrong, what was it? Okay, whatever.""" start="00:19:40.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Yeah, so in terms of touch command,""" start="00:19:42.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""so pressing on a headline will actually unfold it""" start="00:19:45.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and move your cursor to the next field that you,""" start="00:19:47.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""yeah, so like, yeah, at the beginning of the table.""" start="00:19:50.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So like, there's that, yeah, and so.""" start="00:19:54.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It sounds like that is something you're thinking about.""" start="00:19:56.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Yeah, exactly.""" start="00:20:02.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Like, you know, maybe like a little thing at the bottom,""" start="00:20:03.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like, so this thing has the, this app has this,""" start="00:20:06.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""if you notice, like, if you do something,""" start="00:20:09.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it has this rest timer at the bottom.""" start="00:20:10.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So I mean, it wouldn't be,""" start="00:20:12.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it wouldn't be pretty, it wouldn't be,""" start="00:20:14.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it seems quite doable to just have like,""" start="00:20:16.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""maybe something at the bottom,""" start="00:20:18.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like for a timer,""" start="00:20:19.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then you can just like plus 15 seconds or cancel it""" start="00:20:21.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""or, you know, just,""" start="00:20:24.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then those could all be just like touch based.""" start="00:20:25.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so, yeah. And then obviously just like,""" start="00:20:27.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just like classic Emacs, the Emacs,""" start="00:20:30.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like clicking actions, they just, yeah,""" start="00:20:36.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they work just fine.""" start="00:20:43.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Like, so there's no like weird Android touch thing""" start="00:20:44.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you have to worry about.""" start="00:20:47.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So let me ask a question of my own here.""" start="00:20:48.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Just thinking about that myself, how would you, you know,""" start="00:20:52.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""ideally approach that as that you'd most prefer""" start="00:20:57.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to sort of dive into yourself?""" start="00:21:00.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Or would you think about factoring that out into""" start="00:21:02.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like some kind of org touch higher level API or?""" start="00:21:07.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Oh, I mean, personally, personally, I mean, I mean,""" start="00:21:12.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think just like the clicking""" start="00:21:19.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and just like adding a lambda to it. That works.""" start="00:21:21.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I mean, that feels like it works just fine.""" start="00:21:28.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And you can add the code, like the command right there.""" start="00:21:35.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So it's all like, yeah, it's all, I mean,""" start="00:21:41.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and that's kind of a nice thing is like having everything like close,""" start="00:21:45.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just like not having those, a lot of layers of abstraction.""" start="00:21:49.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It's just like, you have a Lambda to the click and then just do.""" start="00:21:54.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Yeah, just do. That was my experience too.""" start="00:22:03.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is a few years several years ago at ENAC's conference,""" start="00:22:06.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""we were shocked to learn just how usable,""" start="00:22:09.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""this is echoing a comment I see from Elip Energo on IRC,""" start="00:22:13.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""who says, touch seems so wildly usable nowadays,""" start="00:22:18.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that's so awesome.""" start="00:22:21.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And that was really my experience too with Dungeon.""" start="00:22:22.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""We were just working on it, we got the fog of war going,""" start="00:22:25.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then just took it onto a touchscreen laptop at the time,""" start="00:22:28.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and we're just shocked to learn,""" start="00:22:32.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you know, everything just worked. Yeah.""" start="00:22:33.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Maybe like the hardest thing""" start="00:22:37.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""is actually just the default font size.""" start="00:22:38.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""You know, you have to like, you can't,""" start="00:22:40.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you can't have your font too small or you'll,""" start="00:22:42.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you'll like, you'll touch, you'll,""" start="00:22:44.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you'll miss touch things a lot. Yeah.""" start="00:22:46.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Well, there's no font size""" start="00:22:48.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""large enough to make me, you know,""" start="00:22:50.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""to make me comfortable on a smart device, unfortunately.""" start="00:22:53.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""But, but that, I think it may be a me problem.""" start="00:22:58.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think this question we might've missed. So the file sync.""" start="00:23:00.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Yeah, so the file sync in terms of what's worked for me,""" start="00:23:04.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I did have to play around with this a lot.""" start="00:23:12.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Let me go ahead and read it out.""" start="00:23:14.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""You mentioned file sync, what have you found works well for you?""" start="00:23:16.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Sorry. Yeah, yeah, yeah.""" start="00:23:18.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So in terms of what, yeah, I did have to play around with this a lot,""" start="00:23:21.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but sync thing fork is what I eventually settled on.""" start="00:23:25.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I mean, this is another thing that, I mean, I don't,""" start="00:23:28.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it wouldn't nearly be as usable,""" start="00:23:34.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like Emacs wouldn't be nearly usable without it.""" start="00:23:36.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So syncing fork essentially, okay.""" start="00:23:39.680" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And then I also have like a droplet on DigitalOcean,""" start="00:23:41.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just like, so that's kind of like the whole,""" start="00:23:44.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that's kind of like what bridges it together.""" start="00:23:47.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So like, so my Emacs can sync to that,""" start="00:23:49.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then my machine also syncs to that.""" start="00:23:52.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so like, I don't have to have them""" start="00:23:56.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""both on the same time. It's just there, that copy.""" start="00:24:00.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And so that works pretty well.""" start="00:24:06.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I also found that editing code in general,""" start="00:24:09.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think this also goes""" start="00:24:13.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""with the development experience question.""" start="00:24:15.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So I'm curious about the development experience.""" start="00:24:19.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Do you do everything on the phone? And that's the thing.""" start="00:24:22.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""None of my development in general is done on the phone.""" start="00:24:24.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just because, for one, my muscle memory isn't there,""" start="00:24:27.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and two, just in general, typing on a virtual keyboard on the phone,""" start="00:24:32.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it's just really slow.""" start="00:24:38.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, all the development is done on my machine,""" start="00:24:40.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but then there's the problem of you have to have an init.l in your Android,""" start="00:24:47.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and so you're going to have to write, you know,""" start="00:24:52.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I found like you'd have to like,""" start="00:24:55.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""when you first get Emacs set up,""" start="00:24:56.920" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""you might have to like write some, I don't know,""" start="00:24:58.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like you'll kind of have to like get into your init file""" start="00:25:01.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then just like,""" start="00:25:03.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""maybe just like start to put things together.""" start="00:25:04.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""But the cool thing is with SyncThinkFork,""" start="00:25:07.000" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I'm syncing my, I'm setting it to load off of a sync directory.""" start="00:25:09.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Like this, this init file,""" start="00:25:15.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""my Android file is synced with my machine.""" start="00:25:18.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So if I wanted to, I could just edit it on my machine""" start="00:25:21.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and just have that synced automatically.""" start="00:25:24.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So that makes like the whole, like in it,""" start="00:25:25.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""cause like it's, it's such a, like, that is one of the,""" start="00:25:28.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it's just like getting,""" start="00:25:31.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""sit writing your init L and M in Emacs on Android""" start="00:25:33.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""is just kind of a.""" start="00:25:36.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""We do have one more question.""" start="00:25:37.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I can't help but throw in a comment there.""" start="00:25:39.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think that's like.""" start="00:25:41.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""That's an extremely good tip, right?""" start="00:25:43.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""That if we're, as we're exploring Android,""" start="00:25:47.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""we want to think about that as""" start="00:25:49.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""adding support for another port of Emacs.""" start="00:25:52.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So the whole dance of, oh, I took, you know,""" start="00:25:55.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I took, you know, I took my init""" start="00:25:58.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and I wanted to use it on BSD""" start="00:26:01.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""after mostly using GNU Linux.""" start="00:26:04.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Now we're going in and we're looking at our Emacs.""" start="00:26:06.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""all of our Emacs and it stuff""" start="00:26:09.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and thinking about compatibility,""" start="00:26:11.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""turning features on and off""" start="00:26:13.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""based on the OS that we're running underneath and so on.""" start="00:26:15.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think that's pretty heads up advice.""" start="00:26:19.960" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Let me read out this other question.""" start="00:26:22.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Have you thought about integrating cardio tracking""" start="00:26:24.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like time runs, bike rides, and so on?""" start="00:26:28.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Yes, I definitely thought about that.""" start="00:26:30.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""And that might be another thing""" start="00:26:34.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""where a touch interface might be helpful.""" start="00:26:36.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I don't know if I can easily pull it up,""" start="00:26:38.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but the app itself, oh yeah, here it is.""" start="00:26:41.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So you can see kind of how they have,""" start="00:26:47.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and you can kind of see how this fits.""" start="00:26:50.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is like an org, you can see""" start="00:26:53.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that these are just tables, right?""" start="00:26:55.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""This is just like this whole interface in general,""" start="00:26:57.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""just like kind of screams like an org mode,""" start="00:26:59.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""file with you have you have your different headings""" start="00:27:02.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like here's a warm-up heading""" start="00:27:05.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then you have the tables""" start="00:27:06.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and you know you could just like envision""" start="00:27:07.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""how you could have a org table""" start="00:27:09.880" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""with one of the columns called time""" start="00:27:12.840" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then you could just imagine like there'd be a button there""" start="00:27:15.040" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and you can just just have it click,""" start="00:27:18.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and then you'd have a timer in the background""" start="00:27:21.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that would update this timer.""" start="00:27:24.280" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""It's so, I mean, conceptually, there's nothing really,""" start="00:27:25.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""it conceptually maps really well to this.""" start="00:27:32.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, I mean, that's definitely something.""" start="00:27:35.800" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""That's awesome. Great answer.""" start="00:27:41.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So I think we're just at about 90 seconds left.""" start="00:27:44.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Perfect amount of time, I think, to just wrap up.""" start="00:27:47.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Closing thoughts. I'll share mine first.""" start="00:27:50.120" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Really appreciate you, Zach.""" start="00:27:52.200" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Thank you for putting this talk together.""" start="00:27:53.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I think this is the type of talk""" start="00:27:56.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that's really going to tie the room together""" start="00:27:59.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""for people that may be, you know, not sure how they can take""" start="00:28:01.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""although they've been interested in that,""" start="00:28:07.560" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""this can be a really good way to kind of open up the world.""" start="00:28:12.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Thank you. Thank you for putting it together.""" start="00:28:16.400" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Yeah, yeah, yeah, yeah, I would just say""" start="00:28:20.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like definitely just try things out.""" start="00:28:22.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""Like if you think, you know,""" start="00:28:24.160" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""they're just like random ideas,""" start="00:28:25.360" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like a book tracking app or like a recipe app,""" start="00:28:26.440" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""like, you know, there's a lot of things""" start="00:28:30.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that you do on your mobile device""" start="00:28:33.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that aren't like banking apps that you could easily,""" start="00:28:35.600" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""that seem like they could be done in Emacs.""" start="00:28:37.720" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""So yeah, just try different things out""" start="00:28:39.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and I would love to hear what other people do. Bravo.""" start="00:28:42.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I appreciate it once again, you're coming together""" start="00:28:47.240" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and especially you're doing it live.""" start="00:28:52.520" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""I know that as a conference, we have a lot of preference""" start="00:28:56.640" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""for those recorded talks""" start="00:29:00.080" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and getting the captioning together,""" start="00:29:01.480" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""but I just have a special place in my heart""" start="00:29:02.760" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""for the energy that comes with a live talk""" start="00:29:05.320" video="mainVideo-weights" id="subtitle"]]
+[[!template text="""and I appreciate you doing it. Thanks for putting this on.""" start="00:29:07.680" video="mainVideo-weights" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [zacromero@posteo.com](mailto:zacromero@posteo.com?subject=Comment%20for%20EmacsConf%202023%20weights%3A%20Weightlifting%20tracking%20with%20Emacs%20on%20Android)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/weights-before.md b/2025/info/weights-before.md
new file mode 100644
index 00000000..6556f147
--- /dev/null
+++ b/2025/info/weights-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 31-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-weights>
+Etherpad: <https://pad.emacsconf.org/2025-weights>
+Status: TO_REVIEW_QA
+
+
+
+
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-weights"><source src="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--original.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 30:05 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-weights">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.opus">Download --main.opus</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.vtt">Download --main.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-weights--weightlifting-tracking-with-emacs-on-android--zachary-romero--main.webm">Download --main.webm (106MB)</a></li><li><a href="https://youtu.be/0fwZtg-7wKE">View on Youtube</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/weights-nav.md b/2025/info/weights-nav.md
new file mode 100644
index 00000000..21a106a1
--- /dev/null
+++ b/2025/info/weights-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/reader">An introduction to the Emacs Reader</a>
+Next by track: <a href="/2025/talks/completion">corfu+yasnippet: Easier than I thought</a>
+Track: <span class="sched-track General">General</span>
+</div>
diff --git a/2025/info/writing-after.md b/2025/info/writing-after.md
new file mode 100644
index 00000000..f2f66379
--- /dev/null
+++ b/2025/info/writing-after.md
@@ -0,0 +1,7 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+Questions or comments? Please e-mail [jeremy@jeremyfriesen.com](mailto:jeremy@jeremyfriesen.com?subject=Comment%20for%20EmacsConf%202023%20writing%3A%20A%20writing%20day%20in%20the%20life%20with%20Org-Mode)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/writing-before.md b/2025/info/writing-before.md
new file mode 100644
index 00000000..d9c35617
--- /dev/null
+++ b/2025/info/writing-before.md
@@ -0,0 +1,13 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 20-min talk cancelled
+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/2025/info/writing-nav.md b/2025/info/writing-nav.md
new file mode 100644
index 00000000..f413029d
--- /dev/null
+++ b/2025/info/writing-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by time: <a href="/2025/talks/gnus">Reading and writing emails in GNU Emacs with Gnus</a>
+Next by time: <a href="/2025/talks/bookclub-tapas">Bookclub tapas</a>
+Track: <span class="sched-track General">General</span> - <strong><a href="https://emacsconf.org/2025/watch/gen">Watch</a></strong>
+</div>
diff --git a/2025/info/zettelkasten-after.md b/2025/info/zettelkasten-after.md
new file mode 100644
index 00000000..e7dec77c
--- /dev/null
+++ b/2025/info/zettelkasten-after.md
@@ -0,0 +1,1845 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="zettelkasten-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:01.400" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""Hello there, fellow basement dwellers.""" start="00:00:01.400" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I'm Christian and you are watching &quot;""" start="00:00:03.939" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Zettelkasten for Regular Emacs Hackers,&quot;""" start="00:00:05.959" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""my Emacs Conference 2025 talk submission.""" start="00:00:08.520" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""In this presentation,""" start="00:00:12.921" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I'll be showing you a couple of things""" start="00:00:14.001" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""about Zettelkasten, very basic mechanics and habits""" start="00:00:15.701" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that you can pick up and implement in Emacs,""" start="00:00:18.702" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""the most malleable of all environments,""" start="00:00:21.623" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to make a thinking environment happen in your life""" start="00:00:24.443" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that stays with you potentially forever.""" start="00:00:27.824" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The subtitle &quot;For Regular Emacs Hackers&quot; implies at least""" start="00:00:32.435" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""the possibility of irregular Emacs hackers""" start="00:00:36.056" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and regular Emacs non-hackers, so the target audience here""" start="00:00:38.357" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""is people who are comfortable tweaking their setup""" start="00:00:42.499" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""when they run into issues and use Emacs to write,""" start="00:00:45.120" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""no matter if it's prose or code.""" start="00:00:47.981" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So that's regular Emacs hacking.""" start="00:00:49.981" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You don't need to be an irregular Emacs hacker,""" start="00:00:53.632" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for example, being a core maintainer or whatever.""" start="00:00:55.615" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You just need to be a normal user""" start="00:00:58.760" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""who also modifies the setup.""" start="00:01:01.244" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""However, you should probably not be an Emacs non-hacker.""" start="00:01:06.680" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Or maybe you shouldn't stay an Emacs non-hacker,""" start="00:01:10.302" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""someone who is not tweaking their setup ever.""" start="00:01:12.782" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So, if you just open your application""" start="00:01:16.003" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to write with a double click,""" start="00:01:18.821" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and it happens to be Emacs, this may not be for you,""" start="00:01:20.241" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but you ultimately be the judge there.""" start="00:01:23.284" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Advocating Freedoms""" start="00:01:25.534" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""It is my sacred duty to, of course,""" start="00:01:25.534" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""advocate all the essential freedoms during this presentation.""" start="00:01:28.745" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""These are the following.""" start="00:01:32.666" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You shall not be shackled by a proprietary tool.""" start="00:01:34.508" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""(You shall be shackled by Emacs. (Which is free software.))""" start="00:01:37.390" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You shall also not be shackled by an esoteric method""" start="00:01:40.792" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that turns out to be a grift""" start="00:01:44.115" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""where you need to visit annual workshops, walk on broken glass""" start="00:01:45.276" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and stuff to be a true &quot;&quot;knower&quot;&quot;.""" start="00:01:47.898" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You shall be empowered to do great things""" start="00:01:50.400" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for the rest of your life after this session alone.""" start="00:01:52.881" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This is not a sales pitch.""" start="00:01:55.884" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Finally, you should also not be shackled""" start="00:01:58.871" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""by whichever sources of information you rely on in the future.""" start="00:02:00.652" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You shall be free to think and explore new ideas,""" start="00:02:05.040" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""ideally forever, in an environment you built to your liking,""" start="00:02:07.854" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""without the degrading web searches and the dead internet""" start="00:02:12.176" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""getting in your way. No libraries, no dead trees.""" start="00:02:15.797" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's you and your knowledge base""" start="00:02:18.858" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that can truly produce magnificent things.""" start="00:02:21.539" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What Is This About?""" start="00:02:29.680" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""So what is this about? In the teaser text for this session,""" start="00:02:29.680" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I brought up that when people talk about Emacs""" start="00:02:33.587" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""pulling in everything that people do on their computer,""" start="00:02:36.149" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""it's usually things they used other software for in the past.""" start="00:02:38.932" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Like email, chat, playing music, browsing the web,""" start="00:02:42.615" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""managing tasks, you know, stuff like that.""" start="00:02:46.058" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""We don't have a good blueprint for thinking environments though.""" start="00:02:48.820" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So it's not a trivial task,""" start="00:02:51.762" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""just port this or that to Emacs""" start="00:02:53.264" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then you'll be happy and productive.""" start="00:02:54.745" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's different from doing your emails""" start="00:02:56.706" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""or task management or writing in Emacs,""" start="00:02:58.200" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""where we have a lot of experience with existing software""" start="00:03:00.329" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to adapt and deviate from, where we can essentially""" start="00:03:02.951" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""port the task to Emacs. We can practice to think,""" start="00:03:06.414" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""purposefully and productively, on complex things""" start="00:03:09.856" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""over long periods of time""" start="00:03:12.999" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""when we create bespoke environments that help with that.""" start="00:03:14.460" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The first assumption is this:""" start="00:03:19.060" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Writing is very important to form complex thought.""" start="00:03:20.468" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Without writing, you won't be able to cross""" start="00:03:24.059" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""a certain complexity threshold.""" start="00:03:26.280" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Thinking in your head alone without any externalization""" start="00:03:28.761" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""makes you prone to loops, repetitions,""" start="00:03:31.922" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and worst of all: jumps.""" start="00:03:34.262" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Jumps that get you to a point,""" start="00:03:36.143" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but not backed by reason or argument.""" start="00:03:38.563" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So you and your future and others cannot follow.""" start="00:03:40.724" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Written words direct thought.""" start="00:03:46.502" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The linearization or sequence-making of thoughts""" start="00:03:48.363" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""frames your next idea. That's the same for reading,""" start="00:03:51.985" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""which enables you to pick up existing ideas""" start="00:03:55.307" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and continue to write about them later.""" start="00:03:57.308" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So for &quot;good thinking&quot;, writing, reading,""" start="00:04:00.250" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and writing is mandatory.""" start="00:04:02.811" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Emacs is good at showing text to read.""" start="00:04:05.073" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's good at processing keyboard inputs to write.""" start="00:04:07.194" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So let's go. Let's set up an environment within Emacs""" start="00:04:09.635" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to make this thinking thing happen.""" start="00:04:13.177" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I'll walk you through some mechanics""" start="00:04:16.320" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""of the Zettelkasten machine and habits for you,""" start="00:04:18.060" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""dear thinker and regular Emacs hacker.""" start="00:04:20.882" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And for your reference, highlight these things""" start="00:04:22.901" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""as I present them in the bottom left corner of the screen.""" start="00:04:25.886" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So working with Zettelkasten as a thinking environment""" start="00:04:30.469" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""only requires very simple mechanics.""" start="00:04:33.191" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Write - Essential Mechanic""" start="00:04:36.534" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""First one is to write. I mentioned this.""" start="00:04:36.534" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It could be one large text file, could be many small ones.""" start="00:04:39.640" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""We use the power of Emacs and small files because Emacs is cool,""" start="00:04:42.489" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and individual files put boundaries around ideas""" start="00:04:46.360" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that force you to decide what goes where.""" start="00:04:49.355" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Most importantly though, write like you mean it.""" start="00:04:52.663" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The principle of &quot;garbage in and garbage out&quot; holds.""" start="00:04:55.687" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You don't need to use your novelist voice when taking notes,""" start="00:04:58.511" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but it also shouldn't be shorthand only,""" start="00:05:01.375" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""so that your future you has an easy time""" start="00:05:04.138" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""reading and digesting what you wrote.""" start="00:05:06.795" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Connect - Essential Mechanic""" start="00:05:09.601" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""Next mechanic, which is also essential, is to connect.""" start="00:05:09.601" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""We think in associations.""" start="00:05:13.525" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Connect notes to capture the associations that come to mind""" start="00:05:15.000" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and that you want the reader, which is the future you,""" start="00:05:18.640" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to make. Traveling a path of connections""" start="00:05:20.917" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""indirectly via tags or keywords""" start="00:05:24.075" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and directly with links""" start="00:05:25.836" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""can feel like reading an essay you make up as you go.""" start="00:05:27.097" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's where connections show their power.""" start="00:05:30.721" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Correct - Essential Habit""" start="00:05:34.268" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""The next essential habit is to read and correct""" start="00:05:34.268" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and reconnect as you go.""" start="00:05:38.261" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You spend time and effort at the writing stage,""" start="00:05:40.181" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you are the primary audience,""" start="00:05:42.312" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""so do your past self a favor and read what you wrote.""" start="00:05:43.793" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And then as you read it, make it better.""" start="00:05:46.896" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Make it better, continuously make things better""" start="00:05:50.479" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and capture new ideas as they come up as you read.""" start="00:05:52.341" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And things you can only now remember""" start="00:05:55.223" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""because you learned about things in the meantime.""" start="00:05:57.785" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You'll also get better at this whole thing with practice.""" start="00:06:00.928" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So improve old notes when you find them lacking in detail,""" start="00:06:03.430" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""their tone pretentious, their mere existence""" start="00:06:05.867" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""an insult to your intelligence.""" start="00:06:08.576" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Pay [knocks on table] attention [knocks again]""" start="00:06:10.896" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to pain points in using notes.""" start="00:06:11.736" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Yes, I knocked on my desk to emphasize.""" start="00:06:13.640" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And fix things on the fly.""" start="00:06:16.560" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""From this principle follows""" start="00:06:18.602" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""a lot of common practices and tips.""" start="00:06:19.803" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This principle truly is essential.""" start="00:06:22.064" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Too long and you didn't read it?""" start="00:06:24.126" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Add a summary at the beginning.""" start="00:06:25.547" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You can't understand what you wrote a year ago?""" start="00:06:27.228" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Do your best to rewrite it in your own words.""" start="00:06:30.090" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It only gets worse if you wait longer.""" start="00:06:32.512" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Can't find anything in the mess?""" start="00:06:35.100" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Collect links to what you could find""" start="00:06:37.116" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""in a new &quot;meta&quot; note so next time,""" start="00:06:39.138" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you have a navigational help.""" start="00:06:41.660" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This practice will form the basis""" start="00:06:43.241" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for structure notes, maps, and overviews,""" start="00:06:44.862" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""which we will come to later.""" start="00:06:46.734" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Design for Use - Habit""" start="00:06:49.434" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""The next habit, non-essential though,""" start="00:06:49.434" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""is to create notes with intent to use them.""" start="00:06:52.072" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's one thing to write about facts, capture information,""" start="00:06:55.333" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but all this is just collecting stuff.""" start="00:06:58.134" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's another thing altogether to write about""" start="00:07:01.355" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""a train of thought, about an argument you found compelling,""" start="00:07:03.616" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""about a model to understand the world, or yourself,""" start="00:07:06.557" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""in a better way. So collect to remember,""" start="00:07:09.859" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but work in your Zettelkasten to think.""" start="00:07:12.900" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""What does that even mean, though?""" start="00:07:16.261" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Recreate how intriguing books""" start="00:07:18.222" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""lay out their premises and arguments, for example.""" start="00:07:19.823" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""First this, then that, also that supports the premise,""" start="00:07:21.804" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and so on. That's the structure of an argument.""" start="00:07:24.886" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You can recreate it in list form, as a graph,""" start="00:07:27.408" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you can draw and import the image, whatever.""" start="00:07:30.550" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The structure of that argument is one thing,""" start="00:07:33.501" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and the details, like the evidence for each claim,""" start="00:07:36.113" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""can be separate things.""" start="00:07:38.334" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""These can become their own sub-networks over time.""" start="00:07:40.000" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Create Structure - Mechanic""" start="00:07:43.920" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""To facilitate all that,""" start="00:07:43.920" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you will be needing to create structures.""" start="00:07:45.471" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You've connected notes, so links already leave trails""" start="00:07:47.932" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to traverse between your notes.""" start="00:07:50.613" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Structures can emerge from these with a sheer volume,""" start="00:07:52.520" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but they also can be designed by you to be""" start="00:07:55.930" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""navigational hubs of similar shape and form over time.""" start="00:07:58.617" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Patterns like that reduce confusion""" start="00:08:02.259" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and improve feeling at home""" start="00:08:04.241" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and finding your way around, so that's worth investing in.""" start="00:08:05.801" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""For example, use outlines for complex topics.""" start="00:08:09.223" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Tables of contents of a book, for example,""" start="00:08:13.405" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that you love and processed in great detail.""" start="00:08:15.248" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Just recreate the table of contents,""" start="00:08:17.320" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""the nested structure of it, in your notes,""" start="00:08:19.493" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then you have something to hang your future thoughts onto.""" start="00:08:23.038" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Another example is a pro/contra table or list""" start="00:08:28.197" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to discuss opposing facets and perspective of a thing.""" start="00:08:31.518" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Another example would be models or metaphors""" start="00:08:35.479" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""like the iceberg model""" start="00:08:37.831" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""where you point out something has a hidden depth to it""" start="00:08:39.061" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""or the metaphor of a tree to model a thing""" start="00:08:42.182" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""as a branching and growing idea.""" start="00:08:44.382" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Start in the Zettelkasten - Mechanic""" start="00:08:47.968" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""Another habit which is also not essential""" start="00:08:47.968" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""is to start in your Zettelkasten.""" start="00:08:50.435" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Starting in your Zettelkasten removes the cost of deciding""" start="00:08:52.455" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""what goes in there and what doesn't.""" start="00:08:55.256" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It gets you moving and up to speed""" start="00:08:57.517" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""with the method and the tool much easier.""" start="00:08:59.637" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Importing stuff later into the Zettelkasten""" start="00:09:03.278" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""can feel like a chore,""" start="00:09:05.079" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but starting the work you need to do anyway in it?""" start="00:09:06.199" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That reduces the mental hurdle.""" start="00:09:09.260" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""As a regular Emacs hacker,""" start="00:09:11.561" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you'll eventually develop your own tools""" start="00:09:12.922" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to make initial exploration smoother over time,""" start="00:09:14.583" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""like do you start in a particular place""" start="00:09:17.304" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""or just create a new note from scratch somewhere.""" start="00:09:19.545" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You won't know this until you experience this stuff""" start="00:09:22.520" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for a while and try different things.""" start="00:09:25.027" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So don't worry and be open for change.""" start="00:09:26.868" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Start with a Link - Mechanic""" start="00:09:32.401" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""The final habit, also non-essential, is to start with a link""" start="00:09:32.401" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and not with the creation of a new file.""" start="00:09:36.370" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Start with a link, create the file later.""" start="00:09:38.452" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This avoids orphaned notes.""" start="00:09:40.513" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Orphaned notes are those no others are linking to.""" start="00:09:42.474" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""To these you can only get with a full-text search""" start="00:09:45.897" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""or maybe by accident when you browse your notes,""" start="00:09:48.458" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but there is no orderly way to get to them.""" start="00:09:51.300" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Recap""" start="00:09:54.568" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""To recap: Write. Don't be sloppy.""" start="00:09:54.568" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Put in effort early to get faster at this.""" start="00:09:58.534" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This is essential, because without putting effort""" start="00:10:00.601" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""into writing, you won't have anything to use.""" start="00:10:04.160" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Connect and leave trails to navigate.""" start="00:10:08.134" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That can tell a story when you traverse the trail later.""" start="00:10:10.501" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This is essential because without connection,""" start="00:10:13.620" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you will not get anywhere.""" start="00:10:16.541" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Correct and improve things as you go.""" start="00:10:18.601" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The last essential thing: well,""" start="00:10:20.301" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""don't worry about perfection, and then,""" start="00:10:21.840" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""be gentle to your past self.""" start="00:10:24.142" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Adapt to what you learn along the way.""" start="00:10:25.803" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's essential, because without this attitude,""" start="00:10:27.977" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you can easily get stuck in analysis paralysis,""" start="00:10:31.125" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""like where do I need to put this,""" start="00:10:33.746" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""or what would be the perfect way to phrase this.""" start="00:10:35.040" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Design for use. This helps both finding your voice,""" start="00:10:37.368" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and to have criteria for selecting""" start="00:10:40.734" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""what to spend time and effort on in the first place.""" start="00:10:42.820" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It takes into account the opportunity cost""" start="00:10:45.234" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""of high quality work from writing and connecting.""" start="00:10:47.350" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Create structures. You won't be able to scale""" start="00:10:50.251" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and stay organized and find your way around""" start="00:10:53.334" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""without structures. You can practice this early""" start="00:10:55.877" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and design structures deliberately,""" start="00:10:58.540" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but it's also okay to ignore this for a while and wing it.""" start="00:11:00.600" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So it's not marked essential,""" start="00:11:03.985" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""although it may hurt you sooner than later.""" start="00:11:05.747" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The habit to start in the Zettelkasten?""" start="00:11:08.940" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Well, do the work you need to do in a place""" start="00:11:10.892" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that can pay back dividends""" start="00:11:13.794" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""on the effort you put in.""" start="00:11:15.480" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's powerful, but also not essential.""" start="00:11:16.716" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You could just as well continue to write and think""" start="00:11:19.258" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and scribble somewhere else,""" start="00:11:21.620" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then do the Zettelkasten importing stuff later.""" start="00:11:23.461" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Start with a link.""" start="00:11:27.424" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's really useful practice,""" start="00:11:28.440" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but more like a lifehack and not an essential habit.""" start="00:11:30.246" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So you can also create new files from scratch""" start="00:11:33.207" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for ideas that come up as they come up""" start="00:11:35.348" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then try to connect them later.""" start="00:11:38.050" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Well, that's better than not writing at all, right?""" start="00:11:39.611" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So if you look at this, you may ask yourself,""" start="00:11:42.732" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""why is this create structure thing a mechanic and not a habit?""" start="00:11:44.748" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""What's the difference? It seems kind of random.""" start="00:11:48.320" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Well, do create structures as an imperative""" start="00:11:50.877" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""is a good habit, yes.""" start="00:11:53.919" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Structures facilitate growth of the Zettelkasten""" start="00:11:55.280" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and help you discover useful patterns""" start="00:11:57.982" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and the things you care about.""" start="00:11:59.563" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Patterns that work for you personally,""" start="00:12:00.680" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""which make navigation easier""" start="00:12:03.445" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""because they fit your personal expectations""" start="00:12:04.725" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for what is and what is not.""" start="00:12:07.606" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's something for you to do. That's a process.""" start="00:12:10.587" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""But from the perspective of the Zettelkasten as a system,""" start="00:12:13.848" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that's a mechanic or rather dynamic,""" start="00:12:18.149" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""the Zettelkasten grows organically.""" start="00:12:20.610" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Thanks to your constant intervention and usage of course.""" start="00:12:23.150" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's how time passes in your Zettelkasten.""" start="00:12:25.311" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's how a process of transformation enters the system.""" start="00:12:27.632" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The transformation affects the network.""" start="00:12:32.273" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Every new or updated note,""" start="00:12:34.801" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""every new connection changes the network.""" start="00:12:36.256" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The existing network then imposes demands""" start="00:12:38.558" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for new stuff to fit in, slowly solidifying""" start="00:12:40.719" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""how things are organized to be perceived as orderly.""" start="00:12:43.680" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This is calcifying.""" start="00:12:47.364" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's emergent creation of structure from use.""" start="00:12:49.085" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Structure here is expectation for what could come next.""" start="00:12:52.327" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""On top of this interplay of emergent structure""" start="00:12:56.269" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""in your notes and processes""" start="00:12:58.650" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that operate these constraints,""" start="00:13:00.191" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you can design and influence and architect""" start="00:13:01.872" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and have explicit structures and patterns,""" start="00:13:04.373" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and therefore you can influence what is expected,""" start="00:13:06.874" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""what is unexpected and what fits""" start="00:13:09.634" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and what needs to change to fit in.""" start="00:13:11.837" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So the time you spend designing these things""" start="00:13:14.258" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""will influence how the Zettelkasten""" start="00:13:18.140" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""will behave in the future.""" start="00:13:20.301" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Facilitate Growth""" start="00:13:22.034" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""To prepare for growth""" start="00:13:22.034" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you will probably encounter thresholds along your journey.""" start="00:13:24.062" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Like 1-10 notes, well,""" start="00:13:27.534" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you can easily remember all of them.""" start="00:13:29.268" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""10-100, you will have forgotten some details,""" start="00:13:31.301" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but will probably remember writing most of these notes""" start="00:13:34.334" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""in some way. 100-1000?""" start="00:13:37.068" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Bad luck, you will have a hard time going through everything""" start="00:13:40.240" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""one by one to find what you have. You will have to rely on""" start="00:13:42.920" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""filtering results. For example, with a full text search,""" start="00:13:46.440" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you will crave to use tags and keywords more""" start="00:13:50.088" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to group notes into more manageable departments or collections.""" start="00:13:53.493" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""By this mark, search results produce way too many results.""" start="00:14:02.040" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Popular tags become overcrowded,""" start="00:14:05.880" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and you have the same problem you had in the last stage,""" start="00:14:07.968" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but for each of these tags.""" start="00:14:10.070" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So manual structures will take you through this.""" start="00:14:12.520" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Anticipate growth pains by starting from structures.""" start="00:14:15.780" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's the recommendation here. Design your entry points""" start="00:14:18.920" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""into your current projects and research topics""" start="00:14:22.120" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and interests as 'departments' of your Zettelkasten.""" start="00:14:24.168" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Keep a list of, for example, 12 darlings,""" start="00:14:28.160" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""like Feynman did: a list of 12 things""" start="00:14:31.162" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that you can check mechanically""" start="00:14:34.125" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""where you capture something new,""" start="00:14:35.486" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then you can see whether the newfound knowledge""" start="00:14:36.927" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""can also push one of your darling projects forward.""" start="00:14:39.890" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Emacs demo""" start="00:14:46.140" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""Now, finally, let's get to the demonstration in Emacs.""" start="00:14:46.140" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Here is a very minimal init file.""" start="00:14:50.223" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I will share it with you in the show notes.""" start="00:14:52.335" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And this is the Denote default configuration.""" start="00:14:55.739" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Here I'm using the shortcut to create a new note""" start="00:14:59.540" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""immediately for this talk. And there you see.""" start="00:15:02.440" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's an empty new note. Here,""" start="00:15:08.595" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""sped up like two or three times the normal typing speed of me,""" start="00:15:10.497" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""is how I would process this very Emacs conference talk.""" start="00:15:16.421" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The essential mechanics and habits, additional habits,""" start="00:15:21.786" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""mechanics, and then from there after I capture everything.""" start="00:15:25.669" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Make sure that I have a reference.""" start="00:15:30.112" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This is not a thought-out implementation in Emacs,""" start="00:15:32.054" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""so this is just plain text. Christian Tietze,""" start="00:15:36.137" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Zettelkasten for Regular Emacs Hackers at the bottom.""" start="00:15:39.040" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You can use reference management systems that you like,""" start="00:15:42.147" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but I don't want to get into these details.""" start="00:15:46.586" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Here I'm creating a note with the denote shortcut.""" start="00:15:49.234" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Based on the selected text,""" start="00:15:54.368" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I'm starting a link. This link is creating the note for me.""" start="00:15:56.400" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's also default Denote functionality""" start="00:16:01.100" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and garbage in garbage out.""" start="00:16:04.641" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I needed to edit the title because the selected text""" start="00:16:05.721" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""became the note title. Didn't want that.""" start="00:16:08.023" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That was the abbreviation.""" start="00:16:10.044" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Notice that the default configuration does not in fact""" start="00:16:13.336" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""include auto-fill-mode, so the lines get infinitely long.""" start="00:16:16.221" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Looks a bit weird. Just garbage in, garbage out.""" start="00:16:20.528" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Processing this from Wikipedia.""" start="00:16:23.654" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So we have a detail note from this overview.""" start="00:16:27.921" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So that's an overview with one link already.""" start="00:16:31.864" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Starting from here, now I want to write more about my talk.""" start="00:16:34.266" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And next we create structure, types of structures, etc.""" start="00:16:38.669" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It creates a weird link, but I can edit this easily""" start="00:16:43.773" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""thanks to Emacs being so nice to work with.""" start="00:16:46.836" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""A couple of examples. I mentioned some of these""" start="00:16:51.923" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""in previous minutes of this conference talk,""" start="00:16:55.324" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""like position pair, one note for the pair,""" start="00:16:58.605" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""one note per pro and contra, table of contents,""" start="00:17:00.585" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""like lists of things you like,""" start="00:17:03.922" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to talk about recreating a book's content,""" start="00:17:06.406" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""table of contents so you can process the book in detail,""" start="00:17:10.608" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""argument structures, I believe I mentioned these.""" start="00:17:14.309" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Look at this up if you're not into arguments,""" start="00:17:16.840" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but arguments are very well structured, usually.""" start="00:17:19.371" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""A table of things like two-dimensional table or grid.""" start="00:17:22.913" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Graphics. You can also include graphics, images,""" start="00:17:26.134" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then write about these. And then there are metaphors.""" start="00:17:28.335" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And into one metaphor that I'm presenting here,""" start="00:17:31.637" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""iceberg, black box, and then atom, molecule, and organism,""" start="00:17:33.798" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I want to get into this. Atom, molecule, organism.""" start="00:17:37.539" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's a composition and recursion""" start="00:17:40.401" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""because I have Big Ideas there. Atom, smallest part;""" start="00:17:43.924" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""molecule, comprised of atoms;""" start="00:17:47.800" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and organism is comprised of molecules.""" start="00:17:49.568" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Different level of analysis. Because this is irreducible.""" start="00:17:51.969" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""In fact, if you have no clue about reducibility,""" start="00:17:56.433" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""irreducibility -- that doesn't mean much to you? --""" start="00:17:59.155" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but look this up. You can go very deep""" start="00:18:02.197" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""with this kind of stuff. It's basically that if you""" start="00:18:05.979" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""decompose organs into atoms,""" start="00:18:10.618" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you cannot get back to the organs.""" start="00:18:12.523" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You just have a bunch of atoms. There's information loss,""" start="00:18:14.126" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""more or less.""" start="00:18:17.073" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Here you see that I create a new thing at the end""" start="00:18:19.880" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""so that I can write about Denote. The tool doesn't matter,""" start="00:18:24.247" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but when you use Emacs, use Denote because, well, why?""" start="00:18:26.950" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Let's get into this. Fix the link.""" start="00:18:31.835" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""These are good reasons to use Denote.""" start="00:18:35.458" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Denote is very simple. Denote has a couple of sane defaults.""" start="00:18:37.280" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That makes life easier. Backlinks.""" start="00:18:44.380" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""We will see a backlink view at the end.""" start="00:18:47.079" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I have to create a couple of things.""" start="00:18:51.141" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I'm copying the source code there, the Elisp source,""" start="00:18:52.398" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""so that you can see, hey, this is just an Org Mode file.""" start="00:18:55.965" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You can style it to your liking""" start="00:19:01.668" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then you can even execute the code if you want.""" start="00:19:03.630" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Very powerful. Create notes as links first to avoid orphans.""" start="00:19:06.752" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Forward link again.""" start="00:19:13.295" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""At least I wanted to create a forward link.""" start="00:19:14.676" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""I pressed the wrong shortcut.""" start="00:19:16.016" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""But anyway, I can fix this easily.""" start="00:19:17.037" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You see, there's no link. Dammit.""" start="00:19:19.738" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Now I need to create the link after the fact.""" start="00:19:23.480" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Here's a list of shortcuts. The denote keymap.""" start="00:19:26.762" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's a recommended practice by me,""" start="00:19:33.280" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""starting your note with a link.""" start="00:19:35.166" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You've heard this all just a couple of minutes ago.""" start="00:19:36.767" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It reduces orphans and supposedly teaches you""" start="00:19:40.640" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""about thinking in connections early.""" start="00:19:42.855" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""It's a good practice to practice.""" start="00:19:45.575" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""So with that note, trying to switch back.""" start="00:19:53.100" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Denote note switching, that wasn't as smooth,""" start="00:19:55.939" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""but inserting links is.""" start="00:20:00.120" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And there you go. Here's a backlink view. And that's it.""" start="00:20:01.320" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""In a somewhat self-documenting way,""" start="00:20:10.180" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""here you see a structure note""" start="00:20:12.652" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""which is an overview that represents the gist""" start="00:20:14.868" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""of this Emacs conference talk,""" start="00:20:17.683" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""with a couple of links to details.""" start="00:20:19.564" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""From these details, as you've seen,""" start="00:20:21.840" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""you can go into even more detail. That's all there is to it.""" start="00:20:24.108" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Repeat this for infinity,""" start="00:20:27.892" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and you get really really complex networks""" start="00:20:30.134" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and can do a lot of amazing things in parallel""" start="00:20:32.876" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""without interference.""" start="00:20:35.859" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Learn, Share, Grow""" start="00:20:39.068" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""I just want to stress that the Zettelkasten""" start="00:20:39.068" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""can help you to learn when you publish, when you share,""" start="00:20:42.440" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and when you grow it and yourself in the process.""" start="00:20:47.033" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Again, design the Zettelkasten to be used.""" start="00:20:51.182" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Publish something, write a blog, share stuff with co-workers.""" start="00:20:54.084" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That's powerful and that's so rewarding.""" start="00:20:58.160" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This can in turn influence how you do it""" start="00:21:00.486" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""the next time in your Zettelkasten,""" start="00:21:04.040" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""because now you can anticipate these kinds of arguments,""" start="00:21:06.034" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""maybe I can do this early on,""" start="00:21:09.381" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then you're prepared even more for the future""" start="00:21:11.980" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to share what you learn.""" start="00:21:15.134" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""You are also invited very warmly to our""" start="00:21:17.480" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""community of practice in the Zettelkasten forums.""" start="00:21:20.160" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Just share your journey, write about your projects,""" start="00:21:23.320" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""ask questions. Everyone's welcome, newbie to pro.""" start="00:21:26.156" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Just get in touch with people, talk about the processes,""" start="00:21:29.794" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""improve them, and eventually you'll figure out, well,""" start="00:21:32.675" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""reaching enlightenment in that regard may not be that hard after all,""" start="00:21:35.362" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and then you're fine and good to go for the next projects""" start="00:21:39.980" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that you tackle. Most importantly is to make this thing your own.""" start="00:21:42.954" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The Zettelkasten, the method, the environment.""" start="00:21:48.560" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Create a thinking environment for you.""" start="00:21:50.747" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Create your own tools to think with.""" start="00:21:53.475" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""This goes back to the meme of Shuhari,""" start="00:21:56.878" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""which is basically imitate and then deviate and innovate.""" start="00:21:59.379" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And this invitation here is to imitate what I just laid out.""" start="00:22:02.801" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Imitate for a couple of years. One, two, three years.""" start="00:22:07.124" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""The time goes by faster [snaps fingers] than you think.""" start="00:22:10.587" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And then figure out ways to deviate from the doctrine,""" start="00:22:12.928" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""to figure out ways to improve""" start="00:22:16.449" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and change the processes to fit you better.""" start="00:22:18.910" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""But you need to try to manifest""" start="00:22:22.031" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""the best practices in your life first,""" start="00:22:24.452" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for a while, to then figure out, well,""" start="00:22:26.653" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""they are not that best after all""" start="00:22:28.834" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and I need to change some of them.""" start="00:22:30.854" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""But you wouldn't know if you didn't try. So do try.""" start="00:22:33.055" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Yeah, and with that I want to thank you.""" start="00:22:37.065" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Thank you so much for watching. That's it.""" start="00:22:38.640" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""That was the conference talk,""" start="00:22:40.250" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""my short introduction to the Zettelkasten mechanics and habits.""" start="00:22:41.532" video="mainVideo-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Outro""" start="00:22:45.297" video="mainVideo-zettelkasten" id="subtitle"]]</div>[[!template text="""I want to thank you so much for watching""" start="00:22:45.297" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and spending time with me on this topic,""" start="00:22:46.679" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""on these two topics actually,""" start="00:22:48.381" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""that are very near and dear to my heart.""" start="00:22:50.144" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Do share questions, ask questions in the etherpad.""" start="00:22:52.547" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""And if you watch this after the conference""" start="00:22:55.400" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""and all the live participation is long over,""" start="00:22:57.609" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""step into the forums and ask around there.""" start="00:23:01.191" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Thanks also to Sacha and team for organizing EmacsConf 2025,""" start="00:23:04.633" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""for having me. Well, I'm looking forward to hearing from""" start="00:23:09.235" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""every one of you. So that's it.""" start="00:23:11.596" video="mainVideo-zettelkasten" id="subtitle"]]
+[[!template text="""Peace out and see you in the next one.""" start="00:23:14.257" video="mainVideo-zettelkasten" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
+<div class="transcript transcript-qanda"><a name="zettelkasten-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""Yes. All right. Take it away. Thank you, Christian. Thank you, too.""" start="00:00:00.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you could have the pad open at the same time,""" start="00:00:07.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you can read the questions.""" start="00:00:09.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Or I can start reading some to you while I'm here.""" start="00:00:11.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Oh, no. I can read them.""" start="00:00:13.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I was wondering whether I should maybe copy them into a new buffer.""" start="00:00:14.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So they are also on screen. Increase the font size a bit.""" start="00:00:21.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I'm trying to do this on the fly.""" start="00:00:30.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe a bad idea. Let's see.""" start="00:00:39.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Of course, you're going to capture it""" start="00:00:41.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""into your Zettelkasten then. Is that what's happening?""" start="00:00:42.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Well, I can start you off.""" start="00:00:45.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The first question is, I wonder what they use for the fancy animations.""" start="00:00:49.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I was thinking about this because that's the first question""" start="00:00:56.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I was thinking about this""" start="00:00:59.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""while I copied this stuff over.""" start="00:01:00.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What part is the fancy part?""" start="00:01:02.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I can recommend books, like if anyone wants to have book recommendations""" start="00:01:09.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for how to make presentations with PowerPoint-like software""" start="00:01:13.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in a very simple way, we taught this at university.""" start="00:01:18.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""was it now, some 15 years ago,""" start="00:01:23.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to students to make animation abuse""" start="00:01:25.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where everything was flashy and typed in or something.""" start="00:01:28.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Don't do this, but instead do a couple of very simple tasteful things""" start="00:01:32.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like fading through colors like filmmakers do, right?""" start="00:01:36.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Fading through black to make a scene cut""" start="00:01:41.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or just fade between things, the fanciness.""" start="00:01:44.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Presentation software stack, the fanciness.""" start="00:01:47.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I didn't dial fanciness up,""" start="00:01:53.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I just resorted to a very simple fade animations,""" start="00:01:55.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like fading stuff in and wipe, I think, for text effects.""" start="00:02:00.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That was it, more or less.""" start="00:02:04.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And for the lines, maybe the lines are fancy.""" start="00:02:06.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I was using Apple Keynote because I'm fastest with that,""" start="00:02:09.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I also usually, we taught this workshop with PowerPoint""" start="00:02:14.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I think the LibreOffice stack got much better with that""" start="00:02:19.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""as well in the recent years,""" start="00:02:23.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I haven't tried that in a long time""" start="00:02:24.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to like fiddle around and find all the knobs to dial.""" start="00:02:26.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Because the Apple presentation thingy has this nice feature""" start="00:02:31.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you draw an arrow with a tip,""" start="00:02:34.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you have a special animation for line drawing,""" start="00:02:37.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which is only available for line art.""" start="00:02:41.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then it draws the arrow that moves around like that.""" start="00:02:42.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So yeah, presentation stack, Apple Keynote,""" start="00:02:45.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""probably not of interest for anyone here.""" start="00:02:48.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I usually don't use plain text presentation stuff, right?""" start="00:02:52.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I tried this, I tried this with markdown presentations,""" start="00:02:56.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""slidey things, org presentation.""" start="00:03:03.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's always not enough control for the fiddly things""" start="00:03:08.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that I'm interested in to make the experience great.""" start="00:03:12.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I wonder what are the fancy animations.""" start="00:03:17.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And the stack, the stack is Apple Keynote, sorry.""" start="00:03:20.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Okay, that's enough. Thank you for capturing.""" start="00:03:25.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Are you not a fan? Okay. You saw this in the recording.""" start="00:03:30.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Why on earth is autofill mode not enabled? I don't know.""" start="00:03:37.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I thought it is the default, but apparently it isn't.""" start="00:03:43.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I could also use visual line mode.""" start="00:03:48.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's built in as well, right? Visual line mode.""" start="00:03:52.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's so weird to be in this vanilla setup""" start="00:03:55.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and not have all my key bindings""" start="00:03:58.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and my normal stuff ready, so.""" start="00:04:00.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I am not a fan of using asterisk headings in org mode.""" start="00:04:04.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's interesting to see how people have different styles of writing org content.""" start="00:04:08.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Am I not? What exactly? What did I do?""" start="00:04:12.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And nodes, just open one of these.""" start="00:04:22.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Okay. I could see how you could, in examples like this,""" start="00:04:25.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""use org-mode to read-only.""" start="00:04:33.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Why? How you could use org-mode to use headings for this,""" start="00:04:36.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because it's an outliner first and foremost,""" start="00:04:44.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so outlining is very natural.""" start="00:04:48.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But when I do in my personal setup,""" start="00:04:50.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I also have this what's called start indentation thingy.""" start="00:04:53.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""enabled, so that means that everything""" start="00:04:58.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""would be indented one level from the start.""" start="00:05:01.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I would probably fiddle around""" start="00:05:04.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with that to not get like crazy.""" start="00:05:05.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But also, I don't see, I don't see,""" start="00:05:07.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like really see when I look at this,""" start="00:05:12.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I didn't see a potential to create subheadings,""" start="00:05:13.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I mean, or even headings.""" start="00:05:17.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The only heading here is the title,""" start="00:05:19.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like in my perception of this node,""" start="00:05:21.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and it's one, It's two lists.""" start="00:05:24.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You could group these in headings.""" start="00:05:27.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I didn't. That's right. Where's another one?""" start="00:05:28.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I opened the autosave file because I'm stupid.""" start="00:05:40.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""OK. So this one could also be probably subdivided.""" start="00:05:42.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But I'm also not sure.""" start="00:05:46.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm also not sure if I would gain anything structurally""" start="00:05:48.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if I do it like this because then I'm in a structural level""" start="00:05:52.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the stuff that just flows naturally""" start="00:05:55.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""as a sequence of text paragraphs,""" start="00:05:58.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this here, it's not disconnected.""" start="00:06:01.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It wasn't meant to be under organism""" start="00:06:07.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I need to create a new same level thing""" start="00:06:10.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to say, hey, these are, I don't know, details or whatever.""" start="00:06:16.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So that's maybe the real reason.""" start="00:06:23.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm fine with writing snippets that are self-contained""" start="00:06:26.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and essentially one or two or three or five or whatever,""" start="00:06:28.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how many paragraphs,""" start="00:06:31.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but it's not like, it's always an outline form.""" start="00:06:32.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I don't resort to this.""" start="00:06:36.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""My onSettle custom is usually written in Markdown.""" start="00:06:38.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I use subheadings for actual headings""" start="00:06:41.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to subdivide like I would subdivide an essay""" start="00:06:44.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or an article, blog post.""" start="00:06:47.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But that's the mode of writing that I'm in here.""" start="00:06:49.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's like blog post writing.""" start="00:06:52.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I wouldn't start with four headings for this.""" start="00:06:54.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I'm not doing that. That's a thing.""" start="00:06:56.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Okay, I guess I'm going to read the questions,""" start="00:06:58.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I'm going to stop copying them in because I lose time.""" start="00:07:04.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I want to reply to you, folks.""" start="00:07:07.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Didn't see a need for a rack constructor.""" start="00:07:09.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Thank you for capturing this. Next question.""" start="00:07:11.480" video="qanda-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Can you use org files and all its features inside Denote?""" start="00:07:13.720" video="qanda-zettelkasten" id="subtitle"]]</div>[[!template text="""Can you use org files and all its features inside Denote?""" start="00:07:13.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yes. Like this is, this is an org file""" start="00:07:17.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and Denote uses org headings instead of,""" start="00:07:22.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with Markdown, you get YAML front meta.""" start="00:07:25.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And with org, you get these attributes,""" start="00:07:28.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""value attribute thingies""" start="00:07:32.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that are then the metadata for the node.""" start="00:07:36.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So yeah, the answer is yes. You get everything and on top,""" start="00:07:40.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""a small layer of a link, link management.""" start="00:07:45.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's all there is.""" start="00:07:48.160" video="qanda-zettelkasten" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Where or how do you like to capture fleeting notes?""" start="00:07:49.000" video="qanda-zettelkasten" id="subtitle"]]</div>[[!template text="""Next question is, where or how do you like to capture fleeting notes?""" start="00:07:49.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Oh, fleeting notes. If you say fleeting notes,""" start="00:07:55.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you also need to say non-fleeting notes""" start="00:07:58.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and figure out what these are.""" start="00:08:01.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And when you say non-fleeting notes,""" start="00:08:02.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and fleeting notes exist, because it's a distinction,""" start="00:08:05.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and there's something on both sides of this distinction.""" start="00:08:07.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you say there's a distinction, there are two sides,""" start="00:08:10.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe you want to subdivide the non-fleeting notes further,""" start="00:08:12.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because, well, it's a non-fleeting note""" start="00:08:14.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""isn't very descriptive. So what else do you say there?""" start="00:08:16.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And people have said a couple of things""" start="00:08:21.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to define non-fleeting nodes, for example, permanent nodes.""" start="00:08:24.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I guess that's a Sonke Ahrens,""" start="00:08:28.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""permanent nodes is the most popular.""" start="00:08:33.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Let's stay with that, stick with that.""" start="00:08:35.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So if you have permanent nodes and fleeting nodes,""" start="00:08:36.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""now we have two types of nodes. The thing is, in books,""" start="00:08:38.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the only, when we would talk about note-taking""" start="00:08:41.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and you would ask me, hey Christian,""" start="00:08:46.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how do you take fleeting notes?""" start="00:08:47.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I imagine the discussion would be in German""" start="00:08:49.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because that's how people usually talk to me.""" start="00:08:53.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I would pull out a book,""" start="00:08:55.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this is Object-Oriented Software Engineering,""" start="00:08:56.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""interesting book by Iva Jacobson or Iva, Iva,""" start="00:08:59.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not sure because, you know,""" start="00:09:03.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's an English or American person.""" start="00:09:06.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And inside I have these fleeting notes like these""" start="00:09:08.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""are actual paper notes square what are these three by something inch""" start="00:09:14.420" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""American standard size I guess""" start="00:09:18.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and A6 minus the tariff part""" start="00:09:21.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""from from another notepad these are notes i took engagement notes""" start="00:09:24.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you will like engagement notes""" start="00:09:29.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because the margins of the book don't suffice to take""" start="00:09:32.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and this is related to i need more space so this is more space""" start="00:09:35.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""these are fleeting""" start="00:09:38.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and as you see I have them in my pile of books""" start="00:09:41.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""right next to me in the shelf""" start="00:09:45.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and folded them in this piece of paper,""" start="00:09:46.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""labeled it with the author because I lost them.""" start="00:09:52.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""couple of times they just fell out""" start="00:09:54.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when I reached for the book""" start="00:09:57.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and this is an envelope I shove it into the book""" start="00:09:58.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then forget about processing the book again""" start="00:10:01.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for five or ten years. So what do I do with fleeting notes?""" start="00:10:04.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I do fleeting notes on paper or if I'm using an e-reader""" start="00:10:08.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe with an e-reader software annotation tool""" start="00:10:12.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but fleeting in the most like simple non contrived sense,""" start="00:10:14.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""fleeting notes are meant as engagement notes""" start="00:10:21.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you do something with them""" start="00:10:23.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or like I just showed you,""" start="00:10:26.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you don't because life's short, right?""" start="00:10:27.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Time runs out, then you need to forget,""" start="00:10:29.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you need to remember""" start="00:10:31.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how to restructure everything in your head""" start="00:10:33.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to make sense of the notes again""" start="00:10:36.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because they were fleeting,""" start="00:10:37.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""they were just little scribbles and it's""" start="00:10:38.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's basically ballast or waste.""" start="00:10:41.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm just carrying this with me for years""" start="00:10:44.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and maybe never get around to using these.""" start="00:10:46.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But also, I put stuff on there, maybe I do.""" start="00:10:50.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It doesn't hurt to keep them in there.""" start="00:10:53.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's just an odd collector's habit I can't get rid of.""" start="00:10:55.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""fleeting notes, I just capture them wherever""" start="00:10:58.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then either I process them or try to throw them away""" start="00:11:03.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or forget about them""" start="00:11:05.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because they're in some inbox file on a smartphone""" start="00:11:07.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then, you know, they might as well not exist,""" start="00:11:10.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""they're just there to engage me during the reading""" start="00:11:13.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and if I don't process them in time,""" start="00:11:15.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""meh like, chance is up, it sucks""" start="00:11:17.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Next question, like fleeting notes, permanent notes.""" start="00:11:22.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not going to talk about these""" start="00:11:26.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""unless someone asks a question.""" start="00:11:27.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Zettelkasten feels like a very cagey approach""" start="00:11:29.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to note-taking and knowledge management.""" start="00:11:32.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Doesn't it restrict one to think in certain ways""" start="00:11:34.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""rather than what feels natural to someone?""" start="00:11:36.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Well, yes, but so does wearing underwear, right?""" start="00:11:38.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""A bit of personal revelation.""" start="00:11:45.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""When I'm working from home, I'm wearing pants.""" start="00:11:50.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You don't see them, but I don't need to.""" start="00:11:54.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But I'm also kind of self-restricting myself in a way""" start="00:11:57.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because there's a window,""" start="00:12:00.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's dark outside, and I'm well lit.""" start="00:12:01.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And if I just stand up and have no pants on,""" start="00:12:03.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't care that much what the neighbors like 10, 20 meters across think.""" start="00:12:05.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""your mileage may vary then, right?""" start="00:12:12.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So there are restrictions that make sense""" start="00:12:15.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to get to some point in your day-to-day life.""" start="00:12:18.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And in the case of Zettelkasten,""" start="00:12:24.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I try to tell people the shortest story possible""" start="00:12:26.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to convey a story there, but also not to cage them in""" start="00:12:31.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with 20 definitions of different notes.""" start="00:12:36.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Because all that matters is try to move your thinking""" start="00:12:38.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""into an environment where you can write,""" start="00:12:42.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you feel comfortable writing,""" start="00:12:44.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and where you can keep this stuff.""" start="00:12:45.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Because I do feel comfortable with a pencil and paper.""" start="00:12:47.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But what I just showed you, this might as well never have happened.""" start="00:12:50.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Something has changed in my brain.""" start="00:12:54.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""most likely, when I engaged with a book like this.""" start="00:12:56.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""As far as publications and writing is concerned,""" start="00:13:01.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this might as well not exist in my life,""" start="00:13:04.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because I didn't do something with it.""" start="00:13:06.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I mean, I was reading the book probably on a commute back then, on the train.""" start="00:13:10.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I didn't take notes on the computer right away.""" start="00:13:15.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So if you feel caged in,""" start="00:13:18.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that may be a sign that you went too far on the,""" start="00:13:20.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I need to do this, I need to do that stage,""" start="00:13:24.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and lose some of the playfulness.""" start="00:13:26.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""There needs to be playfulness""" start="00:13:28.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""inside of the whole procedure, otherwise it...""" start="00:13:29.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you don't enjoy doing it, you won't be doing it.""" start="00:13:32.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And if you don't do it, then you don't get a benefit.""" start="00:13:37.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And it's just another chore in your life.""" start="00:13:39.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Then rather not do it.""" start="00:13:41.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So try to avoid the feeling of caginess""" start="00:13:42.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and do whatever you want with it""" start="00:13:46.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""as long as you try to give your best.""" start="00:13:49.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's the cage that you will benefit from""" start="00:13:52.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like really trying maybe not trying hard""" start="00:13:55.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but trying in earnest to produce""" start="00:13:58.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""something that you can read in a year in a week whatever""" start="00:14:02.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then make sense of it like that's that's that's the minimum bar and the rest""" start="00:14:05.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you find yourself writing for hours on end,""" start="00:14:10.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""during the nights, during the weekends,""" start="00:14:13.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""whatever, and can't stop,""" start="00:14:15.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you can tackle more of the prescriptions, let's say.""" start="00:14:17.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But everything I showed to you""" start="00:14:21.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""was there are three essential things,""" start="00:14:22.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the rest is just add-ons.""" start="00:14:24.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Add-ons to inspire you to think in certain ways,""" start="00:14:26.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but you don't have to do them. You can scratch all of this.""" start="00:14:28.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You just need to write to think,""" start="00:14:31.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you need to connect""" start="00:14:33.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to make the thinking happen in an organic way.""" start="00:14:35.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Otherwise, you get a storage that's very hard to navigate""" start="00:14:37.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and doesn't grow well. Thanks. Yeah, you're welcome.""" start="00:14:40.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not writing another show. Yeah. Oh, combine the forums.""" start="00:14:46.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like it's a Zettelkasten anonymous group there.""" start="00:14:51.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like everyone's struggling.""" start="00:14:54.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Everyone's struggling and it's okay to like,""" start="00:14:56.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm feeling like stuck at this and that.""" start="00:14:58.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then other people will be able to relate.""" start="00:15:01.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I can promise. How does it denote, question mark maybe,""" start="00:15:03.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""compared to org-roam?""" start="00:15:10.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Roam research was setting a new trend of connectiveness""" start="00:15:11.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because you could create recursive structures with links""" start="00:15:18.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and everything is linkable.""" start="00:15:21.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And it's like you put every sentence in its own org heading""" start="00:15:22.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then link to all the headings possibly""" start="00:15:25.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then transpile them so you can expand in place""" start="00:15:27.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you would link to.""" start="00:15:31.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I think this was the approach at least.""" start="00:15:32.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So this was a very interesting transclusion, not transpile.""" start="00:15:34.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Transclude the contents, like move them in right then and there""" start="00:15:38.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and not navigate to another page. It was interesting.""" start="00:15:41.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It never made sense for me""" start="00:15:45.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when people told their stories of how they used it.""" start="00:15:47.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I guess you can use this tool for a lot of purposes,""" start="00:15:50.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but the prevailing story of the Rome style note-taking tools""" start="00:15:53.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""was like, just dump everything in it.""" start="00:15:59.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And garbage in, garbage out still holds.""" start="00:16:01.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I do keep my personal journal away""" start="00:16:04.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""from my Zettelkasten nowadays""" start="00:16:07.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because I want to not restrict myself""" start="00:16:10.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when I feel the urge to journal,""" start="00:16:12.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when I want to capture something that, for example, my 15-month-old baby daughter does.""" start="00:16:14.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like, first time she pulled a chair""" start="00:16:18.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""out of another room to the next room""" start="00:16:21.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""just to create a ladder to then climb onto another thing.""" start="00:16:22.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It just was, okay, this is now the time""" start="00:16:25.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to take note of this. in her life, like you were this""" start="00:16:27.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and that many months old when you did this.""" start="00:16:30.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So we have some reference parts. And I could put this kind""" start="00:16:33.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of factual information, et cetera, custom,""" start="00:16:35.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but also, like, what if I have a toothache or whatever,""" start="00:16:37.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and just want to gather data for whatever reason?""" start="00:16:42.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know. Like this kind of personal stuff.""" start="00:16:47.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's too much of the non-useful stuff""" start="00:16:52.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in a tool that I want to use to think.""" start="00:16:55.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I do see the appeal there.""" start="00:16:58.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But anyway, the org-roam, like that's a roam part.""" start="00:17:00.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can watch a lot of videos""" start="00:17:04.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""on that to get a feel for this.""" start="00:17:05.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Org-roam adopted this to make the connection easier""" start="00:17:07.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and replicate features. As I said, porting tools""" start="00:17:10.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that exist into Emacs, very nice pastime.""" start="00:17:13.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""A lot of people do this for a lot of things,""" start="00:17:16.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but it's not a thinking environment.""" start="00:17:18.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's just another tool to take notes in""" start="00:17:20.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that behave weirdly with links or interestingly with links.""" start="00:17:22.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And Denote does do even less.""" start="00:17:25.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It only offers you a couple of shortcuts""" start="00:17:29.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to help you find files quickly.""" start="00:17:31.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It does, like you see in the bottom here in the mode line,""" start="00:17:33.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it does just show square brackets D""" start="00:17:37.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""instead of the whole ID, which would be rather long.""" start="00:17:40.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So you have a buffer list that is bearable and works.""" start="00:17:44.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can read this and find the title quickly.""" start="00:17:48.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Things like that, Denote does things like that.""" start="00:17:51.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Oh, I closed the wrong.""" start="00:17:56.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Denote does things like that very well,""" start="00:17:58.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but it gets out of your way otherwise.""" start="00:18:00.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Just a couple of conventions""" start="00:18:02.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to get stuff into your file system.""" start="00:18:04.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not sure if Org-Roam now,""" start="00:18:06.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""what's the current state there?""" start="00:18:08.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Do they do ID generation out of the box?""" start="00:18:11.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Is there a standard popular convention or whatever?""" start="00:18:13.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""not sure, didn't follow,""" start="00:18:18.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I'm very happy that org-roam still exists""" start="00:18:19.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because I think porting tools into emacs is very cool,""" start="00:18:21.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I guess next question,""" start="00:18:25.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I noticed that the wikipedia link you wrote""" start="00:18:27.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""was typed wrongly, oh no garbage in, garbage out,""" start="00:18:31.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I think garbage in, garbage out, garbage well spotted""" start="00:18:40.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how do you do that oh I typed it""" start="00:18:45.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I typed it from yeah right i didn't""" start="00:18:47.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""i didn't paste this right yeah yeah""" start="00:18:50.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this janitorial tasks that's the umbrella term""" start="00:18:53.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how do you deal with this""" start="00:18:55.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like if you put stuff like this into into your notes""" start="00:18:56.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you hopefully get a 404 code from wikipedia""" start="00:18:59.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because the page doesn't exist""" start="00:19:05.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""let's not check um you get a 404 and then you could write a tool""" start="00:19:07.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that checks all the links periodically""" start="00:19:12.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and tells you about broken links like a broken link checker""" start="00:19:13.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that then looks up maybe automatically""" start="00:19:17.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the last good version on archive.org""" start="00:19:19.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then the Wayback Machine""" start="00:19:21.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then corrects the link with the archived version""" start="00:19:23.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because the live one is gone like this happens all the time on the internet""" start="00:19:26.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and even if you don't mistype""" start="00:19:30.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you could you know things go out of out of order so""" start="00:19:31.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What do you do with that? You need to automate this.""" start="00:19:35.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not clicking every link manually.""" start="00:19:42.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I have like, what's it now, 11,000 notes or something.""" start="00:19:45.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""This is not a thing that humans are good at.""" start="00:19:49.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not good at this.""" start="00:19:52.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I will never finish anything else if I do this manually.""" start="00:19:52.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So write a tool, write a script,""" start="00:19:55.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""get a script from the interwebs.""" start="00:19:57.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""There are tools like this plenty that can do it.""" start="00:19:58.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then you just need to do the wiring.""" start="00:20:01.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and that should help.""" start="00:20:06.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You could automate this in Emacs, of course, right?""" start="00:20:07.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""For every file in my node directory,""" start="00:20:09.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""look if there's a link inside""" start="00:20:12.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then check the URL or whatever.""" start="00:20:14.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Also works for inter-node connections.""" start="00:20:16.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""This could also break if you rename files or remove files""" start="00:20:18.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and don't use a denote function,""" start="00:20:21.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which I believe takes care of backlinks and forward links""" start="00:20:23.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and keeps them organized.""" start="00:20:26.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you do this manually on another device,""" start="00:20:28.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""out of denote, out of Emacs, in Vim, I don't know, then yeah, mistakes happen""" start="00:20:31.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and you need to deal with mistakes""" start="00:20:38.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and heal and create scar tissue there in some way""" start="00:20:39.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so write janitorial tools to do that it's also,""" start="00:20:44.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""i'm mentioning the term janitorial tools""" start="00:20:48.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""a couple of times now""" start="00:20:50.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because that's the term that we in the forums at least""" start="00:20:51.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""usually talk about things like find orphaned notes,""" start="00:20:55.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""notes that no one links to find broken links,""" start="00:20:58.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""clean up references reformat nodes, stuff like this.""" start="00:21:02.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Find large nodes and then suggest them""" start="00:21:07.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to the user to break them up.""" start="00:21:10.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like these are tasks that you can do mechanically,""" start="00:21:11.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but also it's better if you use a tool to get started,""" start="00:21:14.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""otherwise you waste a lot of time.""" start="00:21:21.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Next question, when I complete, next long question.""" start="00:21:27.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm going to copy this over because maybe""" start="00:21:35.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""When I completely reworked my configs from two years ago,""" start="00:21:39.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I also tried some of these packages for making nodes,""" start="00:21:42.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but none of them actually fit my purpose,""" start="00:21:44.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because I do not like the idea of splitting up my ideas.""" start="00:21:47.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm writing prose.""" start="00:21:51.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I collect material, reading lists, and so on""" start="00:21:53.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in just one big file. Everything fits in.""" start="00:21:55.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""In this notebook file, I do archiving from time to time.""" start="00:21:57.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I search these files in Finder""" start="00:22:00.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to find old notes I would like to go back to.""" start="00:22:02.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So if I write a paper,""" start="00:22:04.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's basically an extract from my old notes""" start="00:22:06.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that only have one structure.""" start="00:22:09.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when I took them time structures my thought and my notes""" start="00:22:13.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but they would get lost if I split them up in a network""" start="00:22:17.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like structure like a wiki etc custom my two cents""" start="00:22:20.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""by the way I work on legal sociological topics""" start="00:22:22.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""i'm a lawyer by training you know Luhmann was a german german style""" start="00:22:32.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""weird sociologist""" start="00:22:37.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and sociology studies are like the first four semesters at university,""" start="00:22:41.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where a lot of, I don't know any of the terms in English,""" start="00:22:44.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""a lot of these things were theories""" start="00:22:48.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in the loosest and broadest sense.""" start="00:22:51.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Some were just models of how things might behave,""" start="00:22:53.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but nobody knew because they were not empirically backed.""" start="00:22:55.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Some were empirically backed,""" start="00:22:58.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then also there was some sense making.""" start="00:23:00.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then also in sociology,""" start="00:23:01.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you have some structure analysis of,""" start="00:23:03.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like demographics and things like that.""" start="00:23:09.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So very, very hard fact and statistics heavy things.""" start="00:23:11.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So broad topic. And there's a lot of interconnections.""" start="00:23:15.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I can see the approach here.""" start="00:23:20.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not going to defend Zettelkasten""" start="00:23:22.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so that you in the end become a Zettelkasten aficionado""" start="00:23:25.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or whatever I mean, if it works, fine, more power to you like""" start="00:23:30.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""reminds me of Twyla Tharp's like the shoebox approach""" start="00:23:33.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or whatever it was called""" start="00:23:37.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where she just dumped everything inside""" start="00:23:39.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for her next project like an idea box,""" start="00:23:41.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like real physical things like oh, I want to, I don't know,""" start="00:23:44.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like this weird 8-bit do controller inside""" start="00:23:47.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then eventually she would spread out everything she collected,""" start="00:23:50.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""newspaper clippings and I don't know, maybe toenails or some weird stuff,""" start="00:23:54.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know what she actually put there""" start="00:23:59.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then make sense of this""" start="00:24:01.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and think of something of putting these sorted pieces into context""" start="00:24:03.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and if you just dump stuff into a notebook file""" start="00:24:08.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then rework the stuff, yeah, fine""" start="00:24:12.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""One answer is Zettelkasten is great for mathematics.""" start="00:24:20.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Or maybe you can have... Oh, next question.""" start="00:24:22.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Sorry, I jumped. So my answer is, this was not a question,""" start="00:24:25.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I'm happy for you. So that's still an answer.""" start="00:24:31.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Next question. How Zettelkasten is useful""" start="00:24:34.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for highly mathematical STEM academic fields""" start="00:24:38.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like computer science or engineering fields,""" start="00:24:42.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like when studying a STEM field?""" start="00:24:44.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I need to unpack the acronym again maybe for the audience.""" start="00:24:48.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""M is mathematics. Engineering is E.""" start="00:24:53.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Science and tech, tech, techno,""" start="00:24:58.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know, maybe technical. I could look this up, right?""" start="00:25:02.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""STEM, what was STEM again? I'm doing a bad job.""" start="00:25:05.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Science, technology, engineering, mathematics.""" start="00:25:09.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Okay, so probably technology is the computer stuff.""" start="00:25:12.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yeah, STEM.""" start="00:25:16.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Dear audience, that's science, technology,""" start="00:25:17.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""engineering, mathematics, academic fields.""" start="00:25:19.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What should we make notes of?""" start="00:25:23.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The important bits are interconnected in a hierarchy,""" start="00:25:24.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""usually chapters of a book.""" start="00:25:27.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yes, someone did the job of making the order""" start="00:25:28.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""out of the chaotic findings""" start="00:25:31.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that people did over hundreds of years for you.""" start="00:25:33.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's an order. But there are also many textbooks.""" start="00:25:35.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So opinions may vary. The presentation may vary.""" start="00:25:39.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Some textbooks may click with you,""" start="00:25:42.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""while others stay opaque, and you can't get into the meat.""" start="00:25:48.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Sorry, I'm just typing the answer right now.""" start="00:25:59.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Copying information to another box is not, yeah.""" start="00:26:04.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yeah, let's see what the first answer is.""" start="00:26:13.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Someone posted that Zettelkasten is great for mathematics,""" start="00:26:17.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""incredible for computer science.""" start="00:26:21.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""With OrgBabel you can have living source code, yes,""" start="00:26:22.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that you can execute from the node,""" start="00:26:25.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""also true for a formula,""" start="00:26:26.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and LaTeX in interspersing of images and SVGs.""" start="00:26:28.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can even use Agda if you want to.""" start="00:26:35.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Ah, I think I know who typed the answer.""" start="00:26:37.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Hello, Oliver. If you want to have living proofs in your nodes,""" start="00:26:39.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""even inline LaTeX is in here. That's, yeah, yeah, yeah.""" start="00:26:43.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""quote the sentence as is and add, yeah, add something,""" start="00:26:47.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe your own summary.""" start="00:26:58.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I would suggest add your own summary""" start="00:27:01.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because we're looking at the etherpad, right?""" start="00:27:02.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe I just copy this over so you can all the either""" start="00:27:11.300" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""pets indentation is missing with what Org is doing.""" start="00:27:14.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And the answer was probably submitted by Oliver""" start="00:27:30.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""just in case someone wants to see""" start="00:27:37.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""who that could have been with the Acta reference""" start="00:27:40.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because nobody uses Acta,""" start="00:27:47.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""nobody in the world maybe so Acta is just a yeah""" start="00:27:49.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""let's say it's good for proofing the code that you type""" start="00:27:56.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""as you type it in the compilation set very weird""" start="00:28:01.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you've never heard of this so check that out""" start="00:28:04.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so question was how Zettelkasten is useful for these kinds of things""" start="00:28:07.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""yeah it sounds like in these kinds of fields""" start="00:28:13.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that you only deal with facts""" start="00:28:16.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's also kind of sort of true for psychology where you have a lot of""" start="00:28:18.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and also law where you at least in at least in German""" start="00:28:24.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and our style of law where you have a lot of where you have thick books of law""" start="00:28:29.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and very very little records,""" start="00:28:33.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's not the right phrasing,""" start="00:28:38.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you don't rely on the ruling as much as you do in, for example, the USA,""" start="00:28:41.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you need to be aware of every court ruling to then put stuff into context""" start="00:28:48.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and all of this is like the current how you do law.""" start="00:28:53.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know.""" start="00:28:59.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not a lawyer and also not good at this in English.""" start="00:29:01.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So, sorry.""" start="00:29:04.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If I don't find the cool words and technical terms,""" start="00:29:04.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you probably all know.""" start="00:29:08.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What do you do with these kinds of things?""" start="00:29:11.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You need to collect a lot of stuff.""" start="00:29:12.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like the previous questionnaire mentioned,""" start="00:29:14.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""hey, I'm just copying stuff over""" start="00:29:17.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then I have a good time and can write about this""" start="00:29:19.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and create prose in the end.""" start="00:29:22.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like with mathematics, you can't.""" start="00:29:24.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can't do a lot when you're still working on the foundations.""" start="00:29:26.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like, what do you want to do there?""" start="00:29:36.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You don't innovate there. You just need to learn the stuff.""" start="00:29:38.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Typing things out and creating your own organization""" start="00:29:41.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of how things are connected there,""" start="00:29:45.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's where the depth of processing increases,""" start="00:29:49.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like the actual depth of processing""" start="00:29:52.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so that it takes more effort""" start="00:29:53.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and affects more parts of your brain, basically,""" start="00:29:57.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which then helps with remembering stuff.""" start="00:30:01.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm trying not to go into a 10 minute tangent here, but""" start="00:30:03.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you've ever tried to memorize stuff with flashcards""" start="00:30:12.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and you put a, I don't know, coffee stain""" start="00:30:18.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or a weird scribble or spilled something on one of these cards,""" start="00:30:20.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""actual physical cards there,""" start="00:30:24.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this card now has another piece of information""" start="00:30:26.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that is actually important""" start="00:30:29.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because it makes the card stand out""" start="00:30:32.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""more and more worthy of being remembered""" start="00:30:36.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because now one of these cards""" start="00:30:41.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""has this coffee circle thingy""" start="00:30:42.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and all the others don't so this one stands out""" start="00:30:44.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and this may actually improve""" start="00:30:46.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how you learn this particular fact""" start="00:30:49.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that you want to remember or memorize""" start="00:30:51.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Similar, like what kind of principle""" start="00:30:57.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""do people postulate is at play here?""" start="00:31:00.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Again, last time I went into""" start="00:31:04.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this kind of stuff was at university,""" start="00:31:06.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so I'm not sure if there's something new""" start="00:31:08.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in the field of flashcard learning.""" start="00:31:11.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not aware of anything, let's say.""" start="00:31:15.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And the idea back then that we spread""" start="00:31:18.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and that was taught to us was like this.""" start="00:31:23.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That more information and more context and more stimuli""" start="00:31:27.540" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and making things more interesting,""" start="00:31:32.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's what makes it memorable.""" start="00:31:34.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you go for a walk and then associate things with places.""" start="00:31:39.341" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Going for a walk is a different activity""" start="00:31:43.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""than imagining going for a walk.""" start="00:31:47.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's also different from not doing anything""" start="00:31:48.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and just sitting in your chair""" start="00:31:52.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and relaxing because you're not engaged.""" start="00:31:54.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You're losing, like you're using""" start="00:31:56.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""a bit of your brain matter to do the work""" start="00:31:58.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""while the rest of your body is stagnant.""" start="00:32:01.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You don't smell anything different.""" start="00:32:04.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You don't hear, see, feel on your skin,""" start="00:32:07.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""everything's constant,""" start="00:32:09.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like you're in a, what are these called?""" start="00:32:11.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""These chambers where you're locked""" start="00:32:15.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""into very salty water, I think.""" start="00:32:18.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Floating chambers, so sensual deprivation chambers.""" start="00:32:21.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You're depriving yourself of a lot of sensual input""" start="00:32:24.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you just try to really focus""" start="00:32:29.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""into everything with your head.""" start="00:32:31.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you engage more of your body,""" start="00:32:33.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you engage more of your senses,""" start="00:32:35.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you have an easier time there.""" start="00:32:36.008" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What does it have to do with this answer?""" start="00:32:37.675" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""My answer would be the value is in rephrasing,""" start="00:32:40.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in making your own connections eventually.""" start="00:32:46.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know, the foundational laws of geometry,""" start="00:32:51.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""there's no room for innovation,""" start="00:32:56.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but there's maybe a room for association.""" start="00:32:58.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like, hey, I remember this, like, if you can't figure out""" start="00:33:00.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""what the name of a certain axiom, lemma, whatever it is, and it has a name,""" start="00:33:03.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""adding your own story to the note doesn't hurt.""" start="00:33:09.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you say, hey, this is what my grandfather""" start="00:33:12.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""taught me with wire and sticks when we tried to measure""" start="00:33:14.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""whatever in the sand on a vacation one day.""" start="00:33:18.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And these kinds of things make it more memorable.""" start="00:33:22.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And that's at least something that you could need to then,""" start="00:33:26.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which is the ultimate purpose of STEM at university,""" start="00:33:31.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you can pass the tests. Like that's it.""" start="00:33:34.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You either, and eventually you embody the knowledge, right?""" start="00:33:39.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you do this stuff over and over again,""" start="00:33:43.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you don't need to look up""" start="00:33:44.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how to do a certain kind of proof.""" start="00:33:45.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And you just do the proof when you need to do the proof.""" start="00:33:47.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But maybe you forget all the kinds of weird proofs""" start="00:33:50.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that you encountered in your life""" start="00:33:53.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because you only remember the 10 most weird ones,""" start="00:33:55.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but you had 15 in your life.""" start="00:33:57.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And what's about the, what do you do""" start="00:33:58.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with the five missing ones? They just fade away.""" start="00:34:00.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But if you capture them in some way or another,""" start="00:34:02.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""as superficial as it may be,""" start="00:34:05.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and you still have access to this later""" start="00:34:08.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when you need to check your personal inventory""" start="00:34:10.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of mathematical proofs so my answer would be""" start="00:34:21.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""let's type in my answer""" start="00:34:30.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""on either pad would be I'm not able to type.""" start="00:34:33.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Sorry. My answer would be this.""" start="00:34:46.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Foundational knowledge is important for tests mostly""" start="00:34:52.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and eventually becomes your inventory of skills.""" start="00:35:05.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Synth programming, like I don't need to look up for loops,""" start="00:35:23.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I just do for loops and that's it, right?""" start="00:35:25.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But still, I do have notes about for loops, I think,""" start="00:35:29.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in different languages, like Python,""" start="00:35:33.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the, what is it called, list comprehension.""" start="00:35:34.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not using Python, but it's so quirky.""" start="00:35:37.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's quirky and I captured this on a note""" start="00:35:39.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because I needed to get myself used to the pieces""" start="00:35:42.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I needed to look at the syntax anyway,""" start="00:35:45.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then this is that part and this goes there.""" start="00:35:48.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And I did this work, like this separation stuff on a note""" start="00:35:50.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to then do the work with more engagement,""" start="00:35:55.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like engage more so I can remember more later.""" start="00:36:01.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't remember all the details,""" start="00:36:04.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I do remember there were different parts,""" start="00:36:06.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then I can look up the note.""" start="00:36:08.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And it helps me refresh my memory rather quickly,""" start="00:36:09.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because it's written by me for me""" start="00:36:12.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in a way that I'm writing these notes""" start="00:36:15.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for 15 years or something.""" start="00:36:17.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""16, at least, 16 years or something.""" start="00:36:18.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So it's much better than looking, especially now,""" start="00:36:27.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's much better than going to the web""" start="00:36:30.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and doing a web search for the same topic,""" start="00:36:31.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because I will probably not get the useful resource""" start="00:36:33.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that I relied on some eight years ago anyway,""" start="00:36:37.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but some garbage instead,""" start="00:36:40.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe AI generated stuff, I don't know.""" start="00:36:41.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I have my personal copy of this""" start="00:36:44.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and it's not just copying the thing into a box,""" start="00:36:48.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like from one box into another,""" start="00:36:50.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""from the public internet box into my own buffer,""" start="00:36:51.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's a custom that's closer to me,""" start="00:36:53.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like a fridge is closer to my kitchen""" start="00:36:56.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and where I want to eat when I'm hungry""" start="00:36:58.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""than going to the supermarket""" start="00:37:01.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or out into the wild and hunt animals,""" start="00:37:02.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like this is all about proximity""" start="00:37:04.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and also brought about ownership, like I own these notes""" start="00:37:06.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I still take responsibility""" start="00:37:10.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for what I put on them to some degree""" start="00:37:13.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like sometimes they're really bad""" start="00:37:14.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I want to distance myself,""" start="00:37:15.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but still yeah, so that's it, I'm just I'm leaving,""" start="00:37:17.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm not typing this out, I'm leaving copy box fridge,""" start="00:37:23.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""there was a term for this, wait a second,""" start="00:37:29.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""setup custom fridge can be fridge-like buffer of knowledge""" start="00:37:32.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm just, let me just try to copy this note verbatim into the etherpad""" start="00:37:38.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then see whether you folks can do something with it.""" start="00:37:48.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The formatting. See appendix A. I am doing this here.""" start="00:37:51.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Appendix A. I'm not going to read this,""" start="00:38:00.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but then you have a FridgeLab buffer of knowledge.""" start="00:38:10.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Local link in the supply chain. That was the term.""" start="00:38:13.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Didn't remember that one.""" start="00:38:16.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's at least a local link in supply chain.""" start="00:38:18.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Also, engagement doing the work of not copying,""" start="00:38:28.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but rephrasing, organizing,""" start="00:38:36.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but sometimes also just typing the stuff in""" start="00:38:38.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's how people romanticize learning a basic""" start="00:38:46.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like there were magazines with a lot of code listings""" start="00:38:51.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and they just typed the code it was quite some effort""" start="00:38:55.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you eventually got better at this""" start="00:38:58.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but you did do mistakes and then you needed to correct""" start="00:39:00.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and look through the source code carefully to spot the typo""" start="00:39:03.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's apparently virtue, at least people claim it's a virtue.""" start="00:39:06.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't deny it's a virtue because I went through the same kind of crap""" start="00:39:11.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I believe it strengthened my character, for sure, but still.""" start="00:39:15.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe it's not that useful, but maybe it is. I don't know.""" start="00:39:20.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""There's studies I remember,""" start="00:39:26.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I don't remember any interesting results.""" start="00:39:27.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's not like it's a 10x improvement""" start="00:39:30.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of recall if you type this, but it may be significant.""" start="00:39:32.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Just check it out for yourself. I'm not sure.""" start="00:39:36.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Next question, sorry.""" start="00:39:39.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""In your experience, would you say that you reuse most of your nodes?""" start="00:39:40.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Watching your demo, I thought that more nodes you create,""" start="00:39:45.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the less you might reuse them. Yes, that's true.""" start="00:39:47.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I have 11,000 nodes or something,""" start="00:39:51.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and I don't use 11,000 nodes every day.""" start="00:39:54.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I can only use a fraction of them.""" start="00:39:57.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But let's say you have the Feynman Darling nodes,""" start="00:39:59.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you would probably use these.""" start="00:40:06.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Imagine you have the same 12 Darlings for a year.""" start="00:40:08.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Then you use these 12 thingies for one year more often.""" start="00:40:11.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""than most of your other nodes,""" start="00:40:15.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because these become your entry points""" start="00:40:17.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""into what's in my Zettelkasten today.""" start="00:40:20.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""These become your entry points""" start="00:40:22.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of what do I want to work on today?""" start="00:40:23.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""These become your, where can I put""" start="00:40:25.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the weird stuff that I just found?""" start="00:40:27.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Does it stick to any of these surfaces?""" start="00:40:29.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Entry point into the process.""" start="00:40:31.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But let's say, five years later,""" start="00:40:33.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe these 12 Feynman darlings were your darlings""" start="00:40:41.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""during university studies for STEM field,""" start="00:40:45.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you had a hard time figuring out""" start="00:40:47.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how the technical system works for your benefit.""" start="00:40:49.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then five years later, you're in a job and you don't need all of them""" start="00:40:52.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because your subject matters from university, they're gone.""" start="00:40:56.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you're not at a day job and you have different darlings""" start="00:41:00.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""whatever your day job is""" start="00:41:03.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe you're a mathematician at an insurance company""" start="00:41:04.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so you will probably have insurance related domain darlings pouring in""" start="00:41:09.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and some academic darlings falling off the bandwagon""" start="00:41:14.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because no time for these maybe other hobbies come in""" start="00:41:18.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like i didn't have anything related to child Rearing,""" start="00:41:21.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""bearing is when you produce them""" start="00:41:25.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and put them into the wild, right?""" start="00:41:29.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Rearing is when you let them grow up, I don't know""" start="00:41:30.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like when you have children and make them not die""" start="00:41:34.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and get larger and do stuff, right?""" start="00:41:36.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I did have a couple of things in advance, but""" start="00:41:42.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That was not a daily concern. Now it is.""" start="00:41:44.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Now I'm a father and that's a new concern in my life.""" start="00:41:47.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Getting things done also tackled this, right?""" start="00:41:51.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you remember getting things done, everyone,""" start="00:41:54.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you had areas of responsibility.""" start="00:41:56.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's a new area of responsibility and you could represent,""" start="00:41:58.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""sorry, you could represent these in your Zettelkasten,""" start="00:42:01.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you find that you can spell out your areas of responsibility""" start="00:42:06.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""well, then you can see, well, I've learned something new,""" start="00:42:10.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""can I become a better person""" start="00:42:12.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in one of my core areas of responsibility?""" start="00:42:14.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yes or no? Why not?""" start="00:42:16.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Then you will use these more than the other notes.""" start="00:42:18.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like the weird thing you found last month.""" start="00:42:21.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Last month, you will probably not reference that weird thing every day.""" start="00:42:25.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Natural process. But it's there.""" start="00:42:29.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And eventually you get back to something,""" start="00:42:32.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you serve access to this like that's the that""" start="00:42:34.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and whatever this changes like going through these processes""" start="00:42:39.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""change you if I if I spend a month getting nerd sniped on""" start="00:42:43.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know chocolate manufacturing or something""" start="00:42:51.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then I don't need this ever these things ever again most likely""" start="00:42:56.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but going through the procedure of""" start="00:43:00.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""becoming the master chocolate manufacturer of my town,""" start="00:43:03.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""at least in theory, will do something with me""" start="00:43:06.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when I encounter the next topic.""" start="00:43:10.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I will think of chocolate manufacturing.""" start="00:43:12.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I wouldn't have thought of chocolate manufacturing before.""" start="00:43:14.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""In fact, I didn't think about chocolate""" start="00:43:17.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""manufacturing yesterday. I just made this up on the spot.""" start="00:43:18.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What does this say about me today?""" start="00:43:21.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe because we were out of chocolate,""" start="00:43:23.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe because I don't know,""" start="00:43:26.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe there's nothing that looks like chocolate here""" start="00:43:30.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know so it just came up and now it's there""" start="00:43:33.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and things have changed for the better,""" start="00:43:36.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for the worse, I don't know but they've changed""" start="00:43:39.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and that's the real takeaway there""" start="00:43:41.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where do you put the effort?""" start="00:43:43.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where do you want to put the effort? and will it pay off?""" start="00:43:44.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe if not, then maybe spend the time on something else""" start="00:43:48.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like don't try to exactly customize something you hate""" start="00:43:54.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""just to I don't know,""" start="00:43:57.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""do your due diligence if you don't want to""" start="00:43:59.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because then you'll hate the process""" start="00:44:04.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's worse than not using nodes a lot next questions,""" start="00:44:06.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how are nodes structured and accessed""" start="00:44:15.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when the nodes grow from 10k to 100k nodes?""" start="00:44:17.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""yes, that's a field of exploration,""" start="00:44:20.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I mean that the lower realm there I don't know anybody""" start="00:44:22.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""who's using a hyperlinked 100k node archive.""" start="00:44:25.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I do know people who have a lot of text files""" start="00:44:32.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like the Evernote style""" start="00:44:37.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""they capture everything and put the verbatim copy into their stuff""" start="00:44:38.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then they have a lot more items of course""" start="00:44:42.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but these don't really count,""" start="00:44:47.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""these are like web clippings of websites themselves""" start="00:44:51.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I've read how many hundreds of websites today""" start="00:44:54.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I could have captured everything automatically,""" start="00:44:58.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but they wouldn't, like the files there, the clippings,""" start="00:45:02.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""they wouldn't have contributed""" start="00:45:07.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""anything meaningfully to my knowledge base,""" start="00:45:10.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because I'm not thinking about the stuff,""" start="00:45:12.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm thinking about the stuff that I'm spending time on.""" start="00:45:14.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What about that?""" start="00:45:16.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yeah, how are nodes structured and accessed""" start="00:45:18.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when the nodes go from one to 100k?""" start="00:45:20.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I will imagine that it becomes a matter that's speculation.""" start="00:45:22.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""We'll see. My speculation is this.""" start="00:45:31.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's going to be self-similar, like Mandelbrot images,""" start="00:45:34.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you have recursive patterns.""" start="00:45:40.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""First, you have a couple of nodes.""" start="00:45:43.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can leave through them digitally or physically easily.""" start="00:45:46.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then eventually, you need to rely on structures""" start="00:45:49.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or some kinds of entry points,""" start="00:45:52.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which we usually call structures,""" start="00:45:54.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""thanks to Sascha. Perfect. Thank you.""" start="00:45:55.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And the clue there is,""" start="00:46:03.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Eventually, you have hundreds or maybe thousands,""" start="00:46:04.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""not hundreds or thousands, of structure nodes.""" start="00:46:10.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then you have the same problem""" start="00:46:12.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that you had on the lower base layer.""" start="00:46:13.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And now you will probably look for another tool.""" start="00:46:16.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But there is nothing else that's not also a structure node""" start="00:46:19.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but is structuring other structures mostly""" start="00:46:22.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""instead of structuring the low-level nodes.""" start="00:46:25.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But this distinction, I want to point out, doesn't pay off.""" start="00:46:28.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it seems like it doesn't pay off""" start="00:46:31.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to say hey i have these foundational permanent nodes""" start="00:46:34.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then i have these meta nodes""" start="00:46:37.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""these these maps and structures""" start="00:46:38.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then i have these super mega structures""" start="00:46:40.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which are not permanent""" start="00:46:42.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which are not structures which are not""" start="00:46:44.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know this doesn't seem to pay off""" start="00:46:45.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because eventually there is another level and another level""" start="00:46:47.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and also sometimes you want to talk""" start="00:46:51.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""about a structure as a data point""" start="00:46:53.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like hey I did this writing project""" start="00:46:56.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""once it was really cool link to writing project""" start="00:46:58.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the writing project is a table of contents huge hierarchy or whatever.""" start="00:47:00.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Is it not a link to a thing?""" start="00:47:04.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Back then you get into all these weird academic questions""" start="00:47:06.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""about the nature of links""" start="00:47:10.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and there's no gold at the end of that rainbow, let's say.""" start="00:47:12.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""At least I've never seen anyone come back with any gold.""" start="00:47:17.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I've seen people come back with very long faces""" start="00:47:21.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and sadness in their eyes""" start="00:47:24.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because all the effort, all the metadata was for naught.""" start="00:47:26.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So, how do you do this?""" start="00:47:31.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You figure out, when you get to 10k,""" start="00:47:32.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you will probably have figured,""" start="00:47:36.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and if you do 10k, not like web clippings,""" start="00:47:37.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but really like you did put in effort to get there""" start="00:47:40.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and type everything yourself in one way or another""" start="00:47:42.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you would have figured out something""" start="00:47:46.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that kind of sort of works for you around that milestone.""" start="00:47:48.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then I believe in you,""" start="00:47:52.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you will be equipped to get to 20k, 30k,""" start="00:47:53.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because you feel comfortable in your notes.""" start="00:47:58.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then you can expand further.""" start="00:48:00.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And it will probably look different""" start="00:48:02.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for someone in STEM fields than for an artist.""" start="00:48:03.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe, maybe not. I don't know.""" start="00:48:06.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe a fine arts artist would woodcrafter,""" start="00:48:09.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe these kinds of folks will have different structures""" start="00:48:14.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and rely more on visuals, schemas,""" start="00:48:17.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""whole part relationships, whereas mathematicians may not.""" start="00:48:22.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I don't know, I don't know, we need to compare""" start="00:48:28.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and this will be the interesting like""" start="00:48:31.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if the internet survives and we all survive""" start="00:48:33.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and also Zettelkasten as an idea sticks on""" start="00:48:36.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I hope we can have this discussion""" start="00:48:40.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""every year in five years, in ten years""" start="00:48:43.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then see how people transparently evolve""" start="00:48:44.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""their gardens, their processes, their note-taking systems""" start="00:48:50.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""next question not a question but i would be very interested""" start="00:48:55.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in your thoughts on this video""" start="00:49:00.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""by westenberg okay it's it's this is not spam""" start="00:49:01.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""i i don't uh there's joe westenberg's uh youtube channel""" start="00:49:07.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""why i deleted my second brain""" start="00:49:13.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""a journey back to real thinking uh""" start="00:49:15.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I think I didn't watch the video but read an article.""" start="00:49:22.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Not sure where. Let me check my Zettelkasten.""" start="00:49:30.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's not on screen sharing. That was stupid.""" start="00:49:34.383" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm probably not going to watch it right now with everyone here,""" start="00:49:36.216" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so my thoughts on deleting and stuff like that.""" start="00:49:48.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I do remember there was a very cleverly written, well-written post""" start="00:49:53.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the claim was, from my perspective,""" start="00:49:58.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and that's not doing the work of""" start="00:50:02.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's not doing the work of the author justice.""" start="00:50:04.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But the shortest summary is that there seems to be false contradiction,""" start="00:50:13.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where the contradiction stems from how the opposite side,""" start="00:50:19.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the note taking, the deliberate note taking,""" start="00:50:24.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""taking a lot of notes,""" start="00:50:27.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""all the notes every time, stuff, like how this is presented.""" start="00:50:28.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I would say this is more on the collecting""" start="00:50:31.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and not on the connecting side of things.""" start="00:50:34.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So like I mentioned for the, some 30 minutes ago""" start="00:50:36.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when I talked about Roam, Roam Research.""" start="00:50:42.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you start your day with a daily note,""" start="00:50:45.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""journal style, and then branch out from there,""" start="00:50:47.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you do at least have time as a structure""" start="00:50:50.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that helps you to organize what you put in.""" start="00:50:53.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But also, it can get very messy""" start="00:50:57.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and very weirdly interconnected,""" start="00:50:59.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like this meme of the with a guy""" start="00:51:01.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""standing in front of a board""" start="00:51:04.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with all these lines connecting things""" start="00:51:10.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and just, you know, with the madness in his eyes""" start="00:51:14.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you can do a lot of stuff in there.""" start="00:51:17.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But at a certain point, it gets hard""" start="00:51:23.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to also get out of your own head, let's say.""" start="00:51:27.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you do it in this kind of style,""" start="00:51:30.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it can get hard to get off your own head.""" start="00:51:33.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And one litmus test that you may find enjoyable""" start="00:51:35.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you struggle with this""" start="00:51:39.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""is to publish more. Because having access""" start="00:51:41.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to a very deeply interconnected web of stuff""" start="00:51:46.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""thoughts, ideas, notes, wisdoms, whatever""" start="00:51:49.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""very deeply connected,""" start="00:51:52.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like not a pile, yarn, wool, what's the ball?""" start="00:51:55.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Ball of yarn? No, that's boring.""" start="00:52:02.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Let's say like you have a lot of yarn""" start="00:52:06.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you just create chaos and entropy""" start="00:52:09.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and can't untangle it. It's a very tangled mess.""" start="00:52:11.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So it's a very dense, dense thingy""" start="00:52:13.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's now its own kind of structure. Like if you have this""" start="00:52:15.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And in your head, when you think about your notes,""" start="00:52:18.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you may have some interesting pathways there.""" start="00:52:21.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But you need to serialize and put into a linear order""" start="00:52:24.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in order to communicate.""" start="00:52:29.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Otherwise, people cannot follow your thought.""" start="00:52:30.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's a pity because we still rely""" start="00:52:32.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""on the book style of writing""" start="00:52:36.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and also hypertext which is making navigation easy""" start="00:52:39.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but not telling a story easier in our modern times""" start="00:52:42.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but we still rely a lot on books""" start="00:52:47.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which take take a lot of intertwined stuff,""" start="00:52:50.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""put it into one order so you can read from start to finish.""" start="00:52:54.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But then, in order for you to make sense of this,""" start="00:52:58.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you need to chop it up,""" start="00:53:01.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""associate with things you already know,""" start="00:53:02.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then attach things and create a new kind of structure""" start="00:53:04.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""through the narrative,""" start="00:53:07.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because it's only one kind of presentation""" start="00:53:08.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's given to you.""" start="00:53:11.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And there may also be different kinds of presentations,""" start="00:53:12.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like I also mentioned for the STEM fields,""" start="00:53:14.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you have different textbooks""" start="00:53:16.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""from different eras of mathematics foundations,""" start="00:53:18.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you see, hey, this one clicks, this one doesn't.""" start="00:53:21.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Why? It's the same stuff, but they present it differently.""" start="00:53:24.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And the presentation matters. The presentation matters.""" start="00:53:27.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And if you only deal with the chaos,""" start="00:53:30.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the weird entanglement,""" start="00:53:33.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you capture everything and anything,""" start="00:53:34.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""how many, I don't know, how many hairs you lost that day or whatever.""" start="00:53:36.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you capture everything in there,""" start="00:53:41.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you don't create the kind of value""" start="00:53:43.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that is linearizable into thought,""" start="00:53:45.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which also makes reading your own stuff later,""" start="00:53:47.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe unbearable, maybe at least hard and making sense.""" start="00:53:49.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Now we come back to one of the earlier questions,""" start="00:53:55.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like, why do I not use outlines?""" start="00:53:57.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Because OrgNode allows me to do outlines.""" start="00:54:00.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Well, I try to write my notes as blog posts,""" start="00:54:03.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""very short blog posts, microblogging, if you will,""" start="00:54:06.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""paragraphs, a couple of paragraphs.""" start="00:54:09.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe it's also more nested because it's a huge topic.""" start="00:54:11.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's a complex topic. That also happens.""" start="00:54:14.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But then it's more like an article,""" start="00:54:16.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""a long blog post, or an essay,""" start="00:54:18.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but never just vomiting thought out onto the page,""" start="00:54:21.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because then you will get back to the note""" start="00:54:26.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and you will find, hey, there's a lot of vomit.""" start="00:54:28.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But you never follow this kind of phrase with nice.""" start="00:54:31.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I enjoyed reading that. It's always me.""" start="00:54:36.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Oppressing because of its mass,""" start="00:54:40.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's also getting in the way of having new ideas""" start="00:54:43.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because whatever is there and you need to tangle it""" start="00:54:46.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you lost your new genuine idea,""" start="00:54:48.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this can also happen.""" start="00:54:52.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I'm not sure what the Westenberg video contains,""" start="00:54:56.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but the sentiment there of deleting everything,""" start="00:55:00.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it makes sense if you find yourself in a situation""" start="00:55:03.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you don't have a productive system.""" start="00:55:07.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the notes from 2009 in my own Zettelkasten""" start="00:55:09.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""aren't of the highest quality standards""" start="00:55:13.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I rewrite most of them when I encounter them,""" start="00:55:15.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I can still use a couple as is and sometimes they're just garbage,""" start="00:55:17.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but as Luhmann said garbage like trickles to the ground""" start="00:55:23.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and forms a nice sediment layer there in the septic tank of your thought machine,""" start="00:55:28.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""your thought thinking environment.""" start="00:55:34.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But clear water separates and then rises to the top""" start="00:55:36.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and that's what you work with.""" start="00:55:40.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""it's never going to be 100% useful. But if it's 90% garbage""" start="00:55:42.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and if the water is, if the septic tank is never clearing,""" start="00:55:47.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you probably need to start""" start="00:55:51.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""over and rethink your approach.""" start="00:55:54.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Maybe there was just too much garbage,""" start="00:55:55.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""too much toxic waste in there, whatever that means, right?""" start="00:55:57.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I do understand this, but also I would say""" start="00:56:01.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe maybe they tried to do too much with a different mindset""" start="00:56:07.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and it just didn't click and then they,""" start="00:56:11.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you know next question is there a danger?""" start="00:56:24.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""also, wait a second, answer do not probably a lot of collection,""" start="00:56:27.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""not a lot of stinking in the Zettelkasten to some purpose.""" start="00:56:41.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Usually. Conflation was the word I was fishing for.""" start="00:56:52.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Usually posts videos like this.""" start="00:56:58.701" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Conflate note taking as a dumping ground""" start="00:57:02.841" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for stuff with something that is valuable in the long term.""" start="00:57:10.091" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Also if this was our dear friend Westenberg""" start="00:57:22.175" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I think the note count also was higher,""" start="00:57:27.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I might confuse them with someone else.""" start="00:57:30.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The note count was way higher than mine. Note count.""" start="00:57:33.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But then also, you know, there's the sign""" start="00:57:36.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of going for quantity in...""" start="00:57:41.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""just capture anything, like capturing,""" start="00:57:44.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's not the bottleneck.""" start="00:57:47.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The bottleneck is finding, making connections happen,""" start="00:57:48.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""having thoughts and working on problems""" start="00:57:52.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you really want to solve in the long term.""" start="00:57:55.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So next question.""" start="00:57:57.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Is there a danger that with the settled custom process,""" start="00:57:59.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that the process gets a bit in the way of the content?""" start="00:58:02.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""yes, especially if you do it like old school style""" start="00:58:05.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you find that your handwriting sucks""" start="00:58:12.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and you want to type things""" start="00:58:14.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""on a typewriter like that kind of process""" start="00:58:16.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""definitely gets in the way""" start="00:58:19.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's going to be your bottleneck""" start="00:58:20.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you can't find black paper""" start="00:58:21.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and put it into your typewriter and then like that's not the speed of thought""" start="00:58:24.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's the speed of, I don't know, my long deceased grandmother""" start="00:58:30.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but yeah it's not like a strive for speed of thought tools""" start="00:58:35.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""not needing a typewriter""" start="00:58:54.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then next step reduce ritual reduce rituals and ceremony""" start="00:59:00.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What I mean by that is if you find yourself doing the same moves""" start="00:59:10.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or similar moves over and over again,""" start="00:59:15.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but they don't contribute""" start="00:59:16.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to having more cool ideas per week, then maybe ditch these,""" start="00:59:19.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""apart from the day timestamp,""" start="00:59:23.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""having a title, hashtags, and content,""" start="00:59:26.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and also being very, very careful about quoting my sources.""" start="00:59:28.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't do much with my et cetera.""" start="00:59:32.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I cannot give up quoting my sources""" start="00:59:35.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because then I'm plagiarizing, stealing,""" start="00:59:37.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""forgetting where I get ideas from and confuse.""" start="00:59:39.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And I get out because I'm aware of the problem there.""" start="00:59:41.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm also not trusting my own notes anymore.""" start="00:59:44.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""would not be trusting my own notes anymore""" start="00:59:47.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""i need to properly cite so then i can see hey""" start="00:59:51.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this block has no quotations that's mine""" start="00:59:53.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and i can trust this it's not like hey this is maybe mine""" start="00:59:56.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe this is a verbatim quote from a book like this""" start="01:00:00.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""is not helping that's a ceremony""" start="01:00:04.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's paying off in the long term also""" start="01:00:05.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so that when you write something""" start="01:00:09.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you have all the sources at hand""" start="01:00:11.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's a useful ceremony title""" start="01:00:15.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""is just a way of summarizing the content""" start="01:00:17.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""do it like an excerpt, right?""" start="01:00:20.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you have the whole content, that's your etc.""" start="01:00:25.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""do a short summary, that may be your introduction.""" start="01:00:26.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So have a way to quickly get a glimpse of the relevance""" start="01:00:29.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""before having to read the whole settle""" start="01:00:33.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when you encounter it years from now.""" start="01:00:35.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then have a one, that's one sentence summary,""" start="01:00:38.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then have an even more condensed form that's a title.""" start="01:00:41.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The title is basically your API,""" start="01:00:44.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the interface for you and your nodes.""" start="01:00:45.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And it needs to uphold some kind of contract.""" start="01:00:49.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And if it just is, like, this is my second note,""" start="01:00:54.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's not useful. This is just a technical limitation""" start="01:00:57.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because you can't have the same file name twice.""" start="01:01:00.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's not going to be useful.""" start="01:01:02.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But if you give yourself the permission to take time""" start="01:01:05.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of titling your notes in one way and also changing titles,""" start="01:01:09.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because you will know from writing introductions""" start="01:01:12.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the further you get along,""" start="01:01:16.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the more and more you need to rewrite your introductions""" start="01:01:18.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because your understanding changes same for titles""" start="01:01:22.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""titles don't always stay consistent or constant""" start="01:01:24.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's why I don't link by title, because I would then need""" start="01:01:28.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to go through my node archive and also need to go to""" start="01:01:31.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""my node archive and need to correct all the links""" start="01:01:34.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's a janitorial task I like to not do, if I can""" start="01:01:40.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So answer here, less ceremony, fewer ceremonies, plural.""" start="01:01:44.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Try to only do the minimum possible, minimum viable thing.""" start="01:01:49.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And using Emacs and D-Node, you get a lot of defaults.""" start="01:01:54.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then you need to worry""" start="01:01:57.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""not about IDs and tags that much,""" start="01:01:58.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or where to put them and how to put them.""" start="01:02:01.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can omit keywords. You can leave keywords out.""" start="01:02:04.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""They don't scale anyway.""" start="01:02:06.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But they may be interesting as a way to group,""" start="01:02:08.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but also Sascha from zettelkasten.de, from our website,""" start="01:02:12.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Sascha also found that, I believe, he,""" start="01:02:19.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""structures win in the long term.""" start="01:02:23.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Manual created hubs and overviews""" start="01:02:28.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""win over machine generated lumps.""" start="01:02:30.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Because you need to reorient yourself""" start="01:02:34.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in the search results all the time.""" start="01:02:37.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's not as useful as having a pathway""" start="01:02:42.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""through your nodes that you can follow.""" start="01:02:45.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It may not be a pathway through all of your nodes, of course,""" start="01:02:49.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but it may be a pathway from entry point into some topic.""" start="01:02:52.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's why some things are essential and others aren't.""" start="01:02:56.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And the essential stuff, try to do it quickly, get better at it,""" start="01:03:01.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""practice the movements, then they get out of the way,""" start="01:03:06.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you can focus on having ideas""" start="01:03:08.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and typing them at speed of thought,""" start="01:03:10.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""more or less, and then you're good.""" start="01:03:12.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I hope. Wishing you all the best. Next and last question.""" start="01:03:15.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""How do you navigate looking at all posts with a certain text?""" start="01:03:20.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""This might be an emacs, already new to emacs.""" start="01:03:24.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I just may have answered this.""" start="01:03:26.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""How do you navigate looking at all posts with a certain text?""" start="01:03:28.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Let me go to my actual node archive.""" start="01:03:40.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then php no language learning ah""" start="01:03:42.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this is not my setup I'm very clumsy""" start="01:03:55.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm sorry, I don't know swift language learning""" start="01:03:59.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""ah that's that's a boring one php By this time, I could have also,""" start="01:04:03.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""ah, there's the model. This would be an entry point""" start="01:04:28.466" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""into my PHP atom molecule organism learning journey""" start="01:04:35.300" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where I tried to practice, what's visual line mode, sorry,""" start="01:04:39.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where I tried to practice this atom molecule thing on something new.""" start="01:04:43.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I haven't used PHP in a long time""" start="01:04:48.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and found that I wasn't, yeah, you can see it on the screen also""" start="01:04:51.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like language primitives are the atoms,""" start="01:04:59.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I think molecules are more like idioms or patterns that are PHP special in PHP""" start="01:05:01.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and different in other languages in Python""" start="01:05:08.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""would be list comprehension that's in a molecule""" start="01:05:10.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and but also you can make a point for hey,""" start="01:05:13.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this comprehension is more like a syntactical thing,""" start="01:05:16.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""no no get out of here, like the for loop is the syntactical atom""" start="01:05:18.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the molecule is using the for loop""" start="01:05:23.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with weird other stuff""" start="01:05:25.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to then make the list comprehension happen.""" start="01:05:26.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's my argument there, okay? So what do we do with this?""" start="01:05:28.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I use this as an entry point if I want to see,""" start="01:05:33.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""hey, what kind of stuff did I take notes on""" start="01:05:38.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to get a better understanding""" start="01:05:41.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""on multiple levels of the language.""" start="01:05:43.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And project structure conventions""" start="01:05:45.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and usually another language""" start="01:05:47.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that I use more here would be, but I can't remember now.""" start="01:05:49.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Funny, right? I can't remember how I would need to look,""" start="01:05:53.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I think I'm too clumsy in Emacs""" start="01:05:57.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to do it live on camera, sorry.""" start="01:05:58.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But the organisms part here would also be like my own inventions,""" start="01:06:00.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""let's say in code,""" start="01:06:05.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like my own discoveries where I found that in Swift, for example,""" start="01:06:06.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you can express things on the type level""" start="01:06:11.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in a very sexy way sometimes.""" start="01:06:13.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then I would put these there as well.""" start="01:06:15.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So these are also,""" start="01:06:19.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""There are organisms to discover in the language reference,""" start="01:06:20.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but there are also organisms to discover in the world,""" start="01:06:26.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then they are your own inventions,""" start="01:06:30.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""discoveries, more or less. And that's a sign of mastery.""" start="01:06:32.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""If you work more on these things,""" start="01:06:36.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you don't need to worry""" start="01:06:38.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""about the basics of the language anymore.""" start="01:06:40.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I can use this as an entry point""" start="01:06:42.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to get into things that are very PHP-esque.""" start="01:06:46.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""When do I need this? When I want to talk about PHP,""" start="01:06:51.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like I do now.""" start="01:06:54.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Why do I show this when the question is about tags?""" start="01:06:55.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Because if I search for... Which one do I take?""" start="01:06:59.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Let's try grep. php. Yep, grep exited the anomaly.""" start="01:07:10.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Dang, why? Option requires an argument.""" start="01:07:22.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yes, eshell is there.""" start="01:07:28.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So let's just use rg, ripgrep and then ripgrep for php.""" start="01:07:36.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And you see I get, I can do filenames only, right?""" start="01:07:43.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Let's not worry. I get a lot of, let's just scroll up.""" start="01:07:50.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I get a lot more hits here for the PHP tech,""" start="01:07:56.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which is only about PHP specific things,""" start="01:08:03.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""not about anything that I do in PHP.""" start="01:08:06.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like, I don't know, I don't take Laravel or Filament,""" start="01:08:09.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which are frameworks, libraries in PHP,""" start="01:08:15.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the Zend library or whatever, I don't know many.""" start="01:08:17.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like I wouldn't take everything""" start="01:08:21.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and anything that is related to the php ecosystem""" start="01:08:23.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with the php hashtag.""" start="01:08:27.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Why? Because then the tag becomes useless.""" start="01:08:28.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I only tag things that are about the language.""" start="01:08:30.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like how do I pass variables to php includes that's php related.""" start="01:08:33.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And you see these are... I'm still not at the top.""" start="01:08:39.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""now i'm at the top these are a lot more findings than you could""" start="01:08:44.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""these don't fit on the screen""" start="01:08:48.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""these are three pages i believe""" start="01:08:49.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the note about my language learning journey was""" start="01:08:51.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""wasn't even one full page here's white space""" start="01:08:55.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""there wasn't okay right but still there's much more stuff""" start="01:08:59.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""the hashtag I don't use for navigating.""" start="01:09:02.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I only use this, let's say, the shotgun approach.""" start="01:09:07.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I think Sascha on our Zettelkasten blog post,""" start="01:09:10.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""don't remember which post, mentioned this as well.""" start="01:09:14.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Sometimes you need a sniper rifle.""" start="01:09:16.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Sometimes you need a shotgun.""" start="01:09:18.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And the hashtag-based search would be I don't know what I'm looking for.""" start="01:09:21.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It was PHP related. I hope I use the hashtag correctly""" start="01:09:27.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then kill all these nodes from my archive.""" start="01:09:32.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""The metaphor doesn't work that way,""" start="01:09:36.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but still you get a lot of results here""" start="01:09:38.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and you could use this as a way to filter from 11,000 nodes""" start="01:09:41.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""down to 50 or so, maybe less.""" start="01:09:45.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And if you got this far, then you can start to do it in a mechanical way again.""" start="01:09:53.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But wait, if you have 100 or 1000 nodes in the results there,""" start="01:09:59.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you can't mechanically go through all the nodes again.""" start="01:10:05.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can maybe skim and look""" start="01:10:08.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for something that catches your eye,""" start="01:10:09.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you're lucky, and if that's the thing""" start="01:10:11.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that works for you.""" start="01:10:14.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but usually no, like usually the text become useless""" start="01:10:15.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then maybe tag groups become more useful""" start="01:10:21.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like PHP and LSP which is on screen here""" start="01:10:24.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like then maybe the combination of two tags""" start="01:10:28.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that reduces the search terms enough""" start="01:10:30.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""like this is basically glorified full text search""" start="01:10:32.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""where you highlight certain terms of importance that's it,""" start="01:10:36.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I wouldn't use I wouldn't put more effort in there""" start="01:10:41.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's also maybe useful to group things by topic.""" start="01:10:45.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""For example, study notes like, I don't know,""" start="01:10:48.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""this is my undergrad, third semester,""" start="01:10:52.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""what do you do in the third semester, I don't know,""" start="01:10:56.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""history of philosophy of science of birds,""" start="01:11:01.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""very long course name, and then week 10.""" start="01:11:06.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then you assemble everything""" start="01:11:10.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with this very technical tagging.""" start="01:11:13.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Then you can use these folders""" start="01:11:15.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""to loosely group stuff together""" start="01:11:18.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that happened during that week.""" start="01:11:21.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And if you have 10 required readings and then do five of them,""" start="01:11:23.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but they're also not closely interrelated,""" start="01:11:26.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you will have read five to 10 different sources that you could process.""" start="01:11:28.880" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You could maybe then also create an overview node""" start="01:11:33.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""as a preparation for the seminar""" start="01:11:36.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""whatever happens at university.""" start="01:11:38.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Then the hashtag becomes just a way to group things.""" start="01:11:44.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But once you create the structure node,""" start="01:11:51.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you don't need the hashtags to navigate anymore.""" start="01:11:52.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You could then maybe use the hashtags not to navigate""" start="01:11:55.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but to to clump, to create collections,""" start="01:11:57.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""pre-assembled to some degree collections of things that exist already,""" start="01:12:02.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""get them out there and then review them.""" start="01:12:07.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Like Twyla Tharp again, dumping all the notes on a table,""" start="01:12:09.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""all the stuff on the table,""" start="01:12:13.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""not just notes, all the clippings and so on and so on,""" start="01:12:15.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then making sense of them.""" start="01:12:17.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""That's what you can use a hashtag search for in the longterm.""" start="01:12:18.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And I'm not convinced about navigational use in the longterm.""" start="01:12:21.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""which doesn't mean that it won't work for you,""" start="01:12:27.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but I can't recommend it.""" start="01:12:31.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I can't recommend trying to do it that way.""" start="01:12:32.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So my answer is going to be, how do you navigate""" start="01:12:34.900" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""looking at all posts with certain tags? I don't.""" start="01:12:37.883" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Tags are just a way to loosely group notes and stuff in general""" start="01:12:45.508" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so that you can find potentially, PP, why doesn't P work?""" start="01:12:53.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Potentially relevant pieces of information more quickly.""" start="01:13:05.520" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Navigational aids. Create navigational aids""" start="01:13:14.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""things that help you navigate like this is for a week""" start="01:13:34.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""what did I say 10 of semester three""" start="01:13:38.050" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""uh the history of the sociology""" start="01:13:42.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of the philosophy of science of birds""" start="01:13:44.633" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or something lump things together there then you have a""" start="01:13:46.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""then you have a scratch pad to think on you do this""" start="01:13:51.560" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""did do this when you went to university with paper anyway, right?""" start="01:13:54.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You would get your college book or whatever""" start="01:13:59.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you would take notes and these like that location""" start="01:14:01.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""of that piece of paper in your college book""" start="01:14:04.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""in your whatever notes folder""" start="01:14:07.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that's the important piece of information""" start="01:14:09.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and the scratchpad, the thinking environment for this course""" start="01:14:15.040" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and if you have all the other things""" start="01:14:20.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that you ever did at your disposal as well""" start="01:14:22.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe pull them in maybe pull them in""" start="01:14:24.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then bring them to the discussion""" start="01:14:26.840" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""with your professor or your teaching assistant""" start="01:14:28.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and asking about, well, I read these five books""" start="01:14:31.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""that you recommended for this week.""" start="01:14:35.200" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Thank you for recommending five whole books""" start="01:14:37.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""for one week of reading. I really enjoyed that. Long pause.""" start="01:14:40.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""And then you say, I also thought about other topics""" start="01:14:45.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and brought them into a, I don't know, dialectic or position.""" start="01:14:50.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""What do you think about foxes in that regard""" start="01:14:54.360" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and their own history and subjectivity""" start="01:14:58.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""when it comes to the bird's point of view or something, right?""" start="01:15:01.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""You can only do this if you either know this by heart""" start="01:15:08.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because you do this a lot,""" start="01:15:11.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""think a lot about this stuff or you do this,""" start="01:15:13.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you stumble upon this and then look for oppositions,""" start="01:15:15.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""look for certain patterns in your notes""" start="01:15:18.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then try to pull them in and represent them again""" start="01:15:19.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""so they actually do exist and then you can work with this,""" start="01:15:22.480" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you can get on people's nerves""" start="01:15:26.240" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you can write weird papers, essays""" start="01:15:27.400" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then get through your university studies quickly""" start="01:15:30.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""maybe also become an interesting columnist,""" start="01:15:33.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know, I've never been a columnist Right.""" start="01:15:35.960" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I think these are all the questions.""" start="01:15:39.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I'm going to delete the leftover ones.""" start="01:15:44.080" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I hope you enjoyed some of the answers.""" start="01:15:47.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Thank you so much. Thank you. That's a lot.""" start="01:15:52.440" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""We'll go back and get everything transcribed as well""" start="01:15:58.160" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""and then you can turn that into other articles in the future""" start="01:16:02.760" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""because that's how this all works, right?""" start="01:16:08.600" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It all turns into writing. It all does.""" start="01:16:10.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""All the rest is garbage.""" start="01:16:14.320" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I don't know why we invented anything else.""" start="01:16:16.000" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""It's only useful to transfer language before writing,""" start="01:16:20.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""but now you can just read.""" start="01:16:23.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""We have two people in the big blue button room""" start="01:16:26.280" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""who are still around, but I think they've got their, like,""" start="01:16:29.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""they don't have microphones set up.""" start="01:16:33.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""So I don't know if you want to just, like, CryptKNFL,""" start="01:16:35.720" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""if you want to just follow up through the etherpad,""" start="01:16:40.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""or email, I guess, in case you have further questions.""" start="01:16:44.340" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""But yeah, if you want to wrap up,""" start="01:16:47.640" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""I know it's getting a little bit late over there,""" start="01:16:50.120" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""you're in your time zone. Thank you so much.""" start="01:16:52.800" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Yeah, all right. Thank you. You're welcome.""" start="01:16:55.920" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Thanks for joining and listening.""" start="01:16:59.680" video="qanda-zettelkasten" id="subtitle"]]
+[[!template text="""Okay, I'll wrap it up here then.""" start="01:17:02.720" video="qanda-zettelkasten" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [hi@christiantietze.de](mailto:hi@christiantietze.de?subject=Comment%20for%20EmacsConf%202023%20zettelkasten%3A%20Zettelkasten%20for%20regular%20Emacs%20hackers)
+
+
+<!-- End of emacsconf-publish-after-page -->
diff --git a/2025/info/zettelkasten-before.md b/2025/info/zettelkasten-before.md
new file mode 100644
index 00000000..4cfea6fc
--- /dev/null
+++ b/2025/info/zettelkasten-before.md
@@ -0,0 +1,36 @@
+<!-- Automatically generated by emacsconf-publish-before-page -->
+[[!toc ]]
+Format: 24-min talk ; Q&A: BigBlueButton conference room Etherpad: <https://pad.emacsconf.org/2025-zettelkasten>
+Etherpad: <https://pad.emacsconf.org/2025-zettelkasten>
+Status: TO_INDEX_QA
+
+
+
+
+
+# Talk
+
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-zettelkasten"><source src="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--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="mainVideo-zettelkasten" data="""
+00:01.400 Introduction
+01:25.534 Advocating Freedoms
+02:29.680 What Is This About?
+04:36.534 Write - Essential Mechanic
+05:09.601 Connect - Essential Mechanic
+05:34.268 Correct - Essential Habit
+06:49.434 Design for Use - Habit
+07:43.920 Create Structure - Mechanic
+08:47.968 Start in the Zettelkasten - Mechanic
+09:32.401 Start with a Link - Mechanic
+09:54.568 Recap
+13:22.034 Facilitate Growth
+14:46.140 Emacs demo
+20:39.068 Learn, Share, Grow
+22:45.297 Outro
+
+"""]]<div></div>Duration: 23:18 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-zettelkasten">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--main.webm">Download --main.webm (41MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--script.org">Download --script.org</a></li><li><a href="https://youtu.be/wE8vCWyr1Eo">View on Youtube</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid qanda"><video controls preload="none" id="qanda-zettelkasten"><source src="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.m4v" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--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="qanda-zettelkasten-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.opus"></audio></div><div></div>Duration: 1:17:07 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-zettelkasten">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.json">Download --answers.json (1.5MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.m4v">Download --answers.m4v (152MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.opus">Download --answers.opus (39MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.tsv">Download --answers.tsv</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.txt">Download --answers.txt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.vtt">Download --answers.vtt</a> (unedited)</li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers.webm">Download --answers.webm (166MB)</a></li></ul></div></div>
+# Description
+<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/zettelkasten-nav.md b/2025/info/zettelkasten-nav.md
new file mode 100644
index 00000000..bfc20b3a
--- /dev/null
+++ b/2025/info/zettelkasten-nav.md
@@ -0,0 +1,7 @@
+
+<div class="talk-nav">
+Back to the [[talks]]
+Previous by track: <a href="/2025/talks/completion">corfu+yasnippet: Easier than I thought</a>
+Next by track: <a href="/2025/talks/hyperboleqa">Questions and answers to help you fly with Hyperbole</a>
+Track: <span class="sched-track General">General</span>
+</div>