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.md1055
-rw-r--r--2025/info/blee-lcnt-before.md57
-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.md801
-rw-r--r--2025/info/gnus-before.md50
-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.md493
-rw-r--r--2025/info/latex-before.md28
-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.md52
-rw-r--r--2025/info/zettelkasten-nav.md7
108 files changed, 18657 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..037c1afb
--- /dev/null
+++ b/2025/info/blee-lcnt-after.md
@@ -0,0 +1,1055 @@
+<!-- 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 that I saw""" start="00:00:17.680" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""come in earlier on the pad,""" start="00:00:20.080" video="qanda-blee-lcnt" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Where do we find all the inputs and outputs you mentioned?""" start="00:00:22.880" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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.541" 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 https://github.com/bxplpc/180068,""" start="00:00:41.940" 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="""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 beamer,""" start="00:01:19.440" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""let's take a quick look at the beamer,""" 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="""This presentation, left to right,""" start="00:01:40.280" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""is the one that includes all the LaTeX packages.""" start="00:01:44.121" 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 bodyPresArt,""" 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 Aeneas""" 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 planned 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Making presentations easier to distribute""" start="00:04:48.400" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Reveal output""" start="00:05:42.040" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 bootstrapping 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 BxBlee,""" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""GitHub organizations""" start="00:08:15.000" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!template text="""But again, all of this is through the use of GitHub organizations.""" start="00:08:15.000" 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 BISOS 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 Aidermacs.""" 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 BISOS in Python is in BISOS-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="""convert it 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. One 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Challenge of DIY model and recipes""" start="00:12:24.040" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 BISOS and BLEE.""" 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, BISOS 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 Comeega, 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Dblocks everywhere""" start="00:13:57.480" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!template text="""I think the dblocks 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 dblock,""" 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 path.""" 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 path.""" 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 COMEEGA, 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: What changes have you seen in the culture while developing all these things like libre-halal system and now blee-lcnt?""" start="00:17:09.960" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 Libre-halaal system and now Blee-LCNT?""" 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:36.280" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Intellectual property rights""" start="00:19:11.160" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 IPR regime.""" start="00:19:28.760" video="qanda-blee-lcnt" id="subtitle"]]
+[[!template text="""So throughout the FOSS 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 FOSS 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 Affero 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Given that large AI companies are openly stealing IP and copyright, thereby eroding the authority of such law (and eroding truth itself as well), can you see a future where IP & copyright flaw become untenable and what sort of onwards effect might that have?""" start="00:23:43.560" video="qanda-blee-lcnt" id="subtitle"]]</div>[[!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 Affero 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..4b72b35d
--- /dev/null
+++ b/2025/info/blee-lcnt-before.md
@@ -0,0 +1,57 @@
+<!-- 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_CAPTION_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.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--answers.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="qanda-blee-lcnt" data="""
+00:22.880 Q: Where do we find all the inputs and outputs you mentioned?
+04:48.400 Making presentations easier to distribute
+05:42.040 Reveal output
+08:15.000 GitHub organizations
+12:24.040 Challenge of DIY model and recipes
+13:57.480 Dblocks everywhere
+17:09.960 Q: What changes have you seen in the culture while developing all these things like libre-halal system and now blee-lcnt?
+19:11.160 Intellectual property rights
+23:43.560 Q: Given that large AI companies are openly stealing IP and copyright, thereby eroding the authority of such law (and eroding truth itself as well), can you see a future where IP & copyright flaw become untenable and what sort of onwards effect might that have?
+
+"""]]<div>Listen to just the audio:<br /><audio controls preload="none" id="qanda-blee-lcnt-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-blee-lcnt--bleelcnt-an-emacscentered-content-production-and-selfpublication-framework--mohsen-banan--answers.opus"></audio></div><div></div>Duration: 27:45 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--chapters.vtt">Download --answers--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--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.opus">Download --answers.opus (24MB)</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 (55MB)</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..b30609c0
--- /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 (79MB)</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..b6fad87b
--- /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>Listen to just the audio:<br /><audio controls preload="none" id="qanda-gmail-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-gmail--orggmail-a-deep-integration-of-gmail-into-your-org-mode--bala-ramadurai--answers.opus"></audio></div><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.opus">Download --answers.opus (7.3MB)</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..cd1891c5
--- /dev/null
+++ b/2025/info/gnus-after.md
@@ -0,0 +1,801 @@
+<!-- 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>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Q: I noticed that it took a considerable amount of time to send email. Is it possible to configure gnus to use an external smtp client to send emails?""" start="00:00:00.000" video="qanda-gnus" id="subtitle"]]</div>[[!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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Is the dovecot workaround actually a solution?""" start="00:01:17.838" video="qanda-gnus" id="subtitle"]]</div>[[!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 Gnus""" 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 Dovecot""" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Do you have experience with mu4e or Notmuch, and why would you say Gnus is worth using compared to these?""" start="00:03:07.118" video="qanda-gnus" id="subtitle"]]</div>[[!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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: At my organization, we're forced to use OAuth with outlook and they've also blacklisted all email clients except thunderbird (but they don't support it, only the webmail or the outlook app). Do you know if this is something that can be circumvented in Gnus?""" start="00:06:05.320" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""Let's see, at my organization,""" start="00:06:05.320" 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:34.640" video="qanda-gnus" id="subtitle"]]
+[[!template text="""With Gnus, you can set, define a posting style""" start="00:07:37.280" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to set a custom user agent.""" start="00:07:40.880" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So, yeah, that's as far as I know.""" start="00:07:43.280" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Thunderbird is pretty nice too.""" start="00:07:48.720" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Like I reach out for it sometimes""" start="00:07:50.080" video="qanda-gnus" id="subtitle"]]
+[[!template text="""when I'm in a rush or can't,""" start="00:07:54.160" video="qanda-gnus" id="subtitle"]]
+[[!template text="""don't have the time to like set up Gnus with""" start="00:07:55.800" video="qanda-gnus" id="subtitle"]]
+[[!template text="""like some new like IMAP server or something.""" start="00:08:00.160" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I reach for it sometimes, but yeah,""" start="00:08:04.040" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I primarily use Gnus. I see.""" start="00:08:05.520" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So the question says they tried it""" start="00:08:10.360" video="qanda-gnus" id="subtitle"]]
+[[!template text="""with not much and it never worked.""" start="00:08:11.720" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Even KML on Android didn't work.""" start="00:08:13.280" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Right. Yeah, I'm not sure.""" start="00:08:20.000" video="qanda-gnus" id="subtitle"]]
+[[!template text="""If you can like provide maybe more details""" start="00:08:23.520" video="qanda-gnus" id="subtitle"]]
+[[!template text="""as to like what doesn't work""" start="00:08:27.040" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or if you get any particular error messages""" start="00:08:29.320" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or like how they're trying to like prevent you from using it,""" start="00:08:32.080" video="qanda-gnus" id="subtitle"]]
+[[!template text="""then maybe folks could have some ideas""" start="00:08:37.360" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of maybe how to get around that.""" start="00:08:38.440" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah. Let's see, I'm going to go""" start="00:08:42.000" video="qanda-gnus" id="subtitle"]]
+[[!template text="""over and take a look at IRC. Yes, scoring is great.""" start="00:08:46.000" video="qanda-gnus" id="subtitle"]]
+[[!template text="""In it for bankruptcy,""" start="00:08:59.960" video="qanda-gnus" id="subtitle"]]
+[[!template text="""they have mail to use outlook from Gnus, right?""" start="00:09:02.960" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, there are various like solutions and workarounds.""" start="00:09:06.560" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, let's see. How's the schedule looking?""" start="00:09:12.000" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I think the next talk""" start="00:09:23.520" video="qanda-gnus" id="subtitle"]]
+[[!template text="""is gonna start pretty soon, if I'm not mistaken.""" start="00:09:24.520" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, so I believe that's about all the time""" start="00:09:30.520" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that we have on the stream for the Q&A,""" start="00:09:34.280" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but of course I'll hang around here on big blue button""" start="00:09:36.800" video="qanda-gnus" id="subtitle"]]
+[[!template text="""and IRC for a while if folks would like to ask more questions.""" start="00:09:40.760" video="qanda-gnus" id="subtitle"]]
+[[!template text="""And also feel free to email me,""" start="00:09:45.280" video="qanda-gnus" id="subtitle"]]
+[[!template text="""bandali@gnu.org""" start="00:09:47.280" video="qanda-gnus" id="subtitle"]]
+[[!template text="""or at kelar.org with any questions.""" start="00:09:49.100" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Thanks again for the kind words folks, appreciate it.""" start="00:10:31.540" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Yeah, I myself also wish""" start="00:10:35.720" video="qanda-gnus" id="subtitle"]]
+[[!template text="""that there were like some tutorials or something""" start="00:10:38.400" video="qanda-gnus" id="subtitle"]]
+[[!template text="""when I was getting started with Gnus,""" start="00:10:41.320" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but we didn't have that. So, and I've been meaning""" start="00:10:43.680" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to like record a talk like this for years for EmacsConf,""" start="00:10:46.120" video="qanda-gnus" id="subtitle"]]
+[[!template text="""but yeah, funnily enough, after like 10 years of,""" start="00:10:50.000" video="qanda-gnus" id="subtitle"]]
+[[!template text="""at my 10th anniversary""" start="00:10:53.040" video="qanda-gnus" id="subtitle"]]
+[[!template text="""of being involved with the conference,""" start="00:10:54.920" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I finally put together a talk of my own""" start="00:10:55.880" video="qanda-gnus" id="subtitle"]]
+[[!template text="""to talk about configuring Gnus.""" start="00:10:58.000" video="qanda-gnus" id="subtitle"]]
+[[!template text="""Let's see. Oh, I see, I see.""" start="00:11:08.200" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So the organization is doing some kind of check""" start="00:11:25.960" video="qanda-gnus" id="subtitle"]]
+[[!template text="""during setting up of OAuth.""" start="00:11:29.720" video="qanda-gnus" id="subtitle"]]
+[[!template text="""So I think how that works is""" start="00:11:41.240" video="qanda-gnus" id="subtitle"]]
+[[!template text="""sometimes these email clients,""" start="00:11:45.640" video="qanda-gnus" id="subtitle"]]
+[[!template text="""I think at least this is the case for Gmail or something,""" start="00:11:47.400" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Comment: Liked how I started with a clean setup""" start="00:13:18.798" video="qanda-gnus" id="subtitle"]]</div>[[!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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Comment: They would have liked to see a quick demo of Gnus while it is fully configured and tweaked""" start="00:17:34.660" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""Another comment, they would have liked""" start="00:17:34.660" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""My init file""" start="00:18:22.798" video="qanda-gnus" id="subtitle"]]</div>[[!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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Mail splitting""" start="00:19:34.080" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""Yeah, you can do like mail splitting,""" start="00:19:34.080" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Gnus parameters""" start="00:19:52.638" video="qanda-gnus" id="subtitle"]]</div>[[!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="""Gnus can integrate with Dired.""" start="00:21:22.998" video="qanda-gnus" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Custom signatures""" start="00:21:31.020" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""You can set like custom signatures like here.""" start="00:21:31.020" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Other customizations""" start="00:22:05.020" video="qanda-gnus" id="subtitle"]]</div>[[!template text="""You can write custom like functions to move email around.""" start="00:22:05.020" 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 v s,""" start="00:22:13.920" 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 Gnus behave a certain way.""" start="00:23:41.760" 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..752e969e
--- /dev/null
+++ b/2025/info/gnus-before.md
@@ -0,0 +1,50 @@
+<!-- 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 />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="qanda-gnus" data="""
+00:00.000 Q: I noticed that it took a considerable amount of time to send email. Is it possible to configure gnus to use an external smtp client to send emails?
+01:17.838 Q: Is the dovecot workaround actually a solution?
+03:07.118 Q: Do you have experience with mu4e or Notmuch, and why would you say Gnus is worth using compared to these?
+06:05.320 Q: At my organization, we're forced to use OAuth with outlook and they've also blacklisted all email clients except thunderbird (but they don't support it, only the webmail or the outlook app). Do you know if this is something that can be circumvented in Gnus?
+13:18.798 Comment: Liked how I started with a clean setup
+17:34.660 Comment: They would have liked to see a quick demo of Gnus while it is fully configured and tweaked
+18:22.798 My init file
+19:34.080 Mail splitting
+19:52.638 Gnus parameters
+21:31.020 Custom signatures
+22:05.020 Other customizations
+
+"""]]<div>Listen to just the audio:<br /><audio controls preload="none" id="qanda-gnus-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-gnus--reading-and-writing-emails-in-gnu-emacs-with-gnus--amin-bandali--answers.opus"></audio></div><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--chapters.vtt">Download --answers--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--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.opus">Download --answers.opus (21MB)</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..89903ea1
--- /dev/null
+++ b/2025/info/latex-after.md
@@ -0,0 +1,493 @@
+<!-- Automatically generated by emacsconf-publish-after-page -->
+
+
+<div class="transcript transcript-mainVideo"><a name="latex-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:00.140" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""Okay. Good afternoon, morning or evening,""" start="00:00:00.140" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""whatever it is in your time 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Motivation""" start="00:00:41.400" video="mainVideo-latex" id="subtitle"]]</div>[[!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 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 from the Emacs side to do this is none,""" start="00:02:17.360" 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 a new Mac,""" start="00:02:36.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I'm able now to get my vanilla Emacs 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Evolution""" start="00:02:53.360" video="mainVideo-latex" id="subtitle"]]</div>[[!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 ox-latex""" 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 header, 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="""&quot;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,&quot;""" 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 Polyglossia.""" start="00:04:00.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and it was made basically for font LaTeX""" start="00:04:02.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""although some of the things can... for lualatex""" start="00:04:06.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and some of the things can also be used with xelatex.""" 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 fallback fonts""" start="00:04:16.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""was something that I learned""" 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 lualatex""" start="00:04:29.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because xelatex doesn't support them.""" start="00:04:34.408" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Actually, fallback fonts is a lua feature.""" start="00:04:36.308" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""There was already something in the list""" start="00:04:40.541" 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 Juan M. Macias 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="""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:14.175" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Looking back, I have a very strange feeling""" start="00:05:19.040" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What do you get from the feature branch?""" start="00:06:02.480" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""What do you get from the feature branch?""" start="00:06:02.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The feature branch adds font management for fontspec,""" start="00:06:04.956" 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:14.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""But again, it's a nice way to get better support here.""" start="00:06:18.580" 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 fallback 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 Polyglossia here""" start="00:07:05.320" 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="""Then what I've added is a keyword""" start="00:07:30.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is `#+LATEX_MULTI_LANG:`""" 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 Org Mode""" 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="""Jing Huang 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 really helpful and a big thanks to him""" start="00:08:03.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because he also had an easy idea""" start="00:08:06.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to support Chinese and Japanese documents,""" start="00:08:10.975" 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:21.860" 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 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Behind the scenes: .dir-locals.el""" start="00:08:47.280" video="mainVideo-latex" id="subtitle"]]</div>[[!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 this famous .dir-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 font 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.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so you have everything in a file.""" start="00:09:56.840" 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 provided by you""" start="00:10:58.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""through the fontspec package,""" start="00:11:03.740" 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 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="""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:15.780" 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 the font that where you want to replace this.""" start="00:11:24.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""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:37.340" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you can always have your dir-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 dir-locals.el file.""" start="00:11:54.120" video="mainVideo-latex" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""When fontspec is not enough""" start="00:11:59.080" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""So, fontspec 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 fontspec only, and there you have a polyglot here""" start="00:12:09.380" 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.120" 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 variables""" start="00:12:38.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""to configure both fontspec, 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 Thai.""" 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 Babel.""" start="00:13:10.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Main is going to be English.""" start="00:13:13.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And I'm also going to have Thai.""" start="00:13:15.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And then they tell me that, for English,""" start="00:13:20.340" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm going to be using Noto Serif for the main,""" start="00:13:23.841" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for the main of the serif font,""" start="00:13:26.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Noto Sans for the sans font,""" start="00:13:30.083" 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:41.107" 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.108" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you're intending this font for is Thai.""" start="00:14:07.775" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So this appears here. In case you don't have any language,""" start="00:14:10.560" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""like in the first two lines,""" start="00:14:16.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you just say that the language is nil,""" start="00:14:19.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is the language for the default language.""" start="00:14:21.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The other thing is in my example,""" start="00:14:23.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in this example that I found in the Internet,""" start="00:14:26.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have my properties for the fonts in this part in LaTeX,""" start="00:14:29.375" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and I put them as properties here.""" start="00:14:40.175" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""That's the whole idea behind the feature branch.""" start="00:14:43.908" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The babelprovide part is generated or is also integrated""" start="00:14:53.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""from the Org header, mainly from the language line.""" start="00:15:01.641" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""We have a variable in case you need to tweak it,""" start="00:15:11.320" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Rationale behind my take at LaTeX font management""" start="00:15:21.080" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""So what is the rationale behind my take at LaTeX font management?""" start="00:15:21.080" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""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 xelatex,""" 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 fontspec""" 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 LaTeX 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:18.600" 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:24.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you don't need that.""" start="00:16:26.275" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""The important thing is maybe date management.""" start="00:16:27.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""If you need dates, headings""" start="00:16:34.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or anything in any other language or locale,""" start="00:16:36.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""then yes, then you need to use Babel or Polyglossia.""" start="00:16:40.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Choice, Depends. Can use polyglossia here,""" start="00:16:46.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""or you can use Babel, whatever you want.""" start="00:16:52.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Also, in some cases, it will depend""" start="00:16:56.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""if you've been researching a bit""" start="00:16:58.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""of how this is done with pure LaTeX,""" start="00:17:00.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""it will be also depending on, uh,""" start="00:17:02.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""on the examples that you get.""" start="00:17:05.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So, what can you, when you are using""" start="00:17:07.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Babel or Polyglossia here, what do you have?""" start="00:17:11.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""You have your dates, your headings, and so on.""" start="00:17:12.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""You might need to control the text""" start="00:17:16.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in the sense that what passage""" start="00:17:21.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is written in what language.""" start="00:17:22.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""For example, for things like hyphenation""" start="00:17:24.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and some ways of writing the hyphens in a""" start="00:17:29.160" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and direct speech and things like that.""" start="00:17:37.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And the other place where you need""" start="00:17:42.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""other Babel or Polyglossia here,""" start="00:17:45.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you will see that, because all examples""" start="00:17:47.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you can get for later, in this case,""" start="00:17:50.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""is when you have a language""" start="00:17:53.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that uses right to left alignment""" start="00:17:56.141" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""like Arabic, Hebrew and others.""" start="00:17:59.408" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So one note of, I would say, care is you always use the,""" start="00:18:06.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""if you use Unicode fonts""" start="00:18:14.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that includes the scripts as you need,""" start="00:18:16.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you will have done, that will be a great leap for you""" start="00:18:19.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""because that simplifies the configuration a lot.""" start="00:18:28.240" video="mainVideo-latex" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demonstrations""" start="00:18:34.480" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""Now, a couple of demos.""" start="00:18:34.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I don't know if you've noticed""" start="00:18:36.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""first demo is that I'm using""" start="00:18:39.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""fonts that are not the official fonts""" start="00:18:43.200" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in this Beamer template,""" start="00:18:47.520" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is by the way Boadilla.""" start="00:18:48.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""This would be the first thing.""" start="00:18:51.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So I've been using other fonts,""" start="00:18:53.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and they are, at least from what I get in class,""" start="00:18:56.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""they are more readable than the official...""" start="00:19:01.680" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""than the default fonts in Polyglossia,""" start="00:19:03.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that you get in Babel for the Boadilla theme.""" start="00:19:06.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Another thing is what I've told you,""" start="00:19:12.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I have my own things like emojis.""" start="00:19:14.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Now, if you allow me for a second,""" start="00:19:18.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm going to switch to the Emacs""" start="00:19:22.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""which is running behind the scenes to show you what.""" start="00:19:27.000" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Okay, fine. So, this is the presentation.""" start="00:19:36.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""that I have here, and as you see,""" start="00:19:42.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I'm using Lua LaTeX and just fontspec,""" start="00:19:44.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""given I don't know why I would need this,""" start="00:19:54.840" 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...""" start="00:20:09.360" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""[Ihor]: I don't think you're showing anything""" start="00:20:11.172" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""[Pedro]: Oh, thank you.""" start="00:20:12.941" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Okay, this is the presentation, right?""" start="00:20:18.480" 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:23.541" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And in this full screen,""" start="00:20:31.201" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you see the presentation on one side""" start="00:20:32.640" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and you see Emacs on the other side. Oh, still nothing.""" start="00:20:34.760" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Yeah, we're not seeing your screen at the moment, sorry.""" start="00:20:40.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Oh, thank you. Thank you for that.""" start="00:20:44.320" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Now it's starting to come. Okay. Yay! Fine.""" start="00:20:47.720" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""So this presentation, I've done it with Lua LaTeX,""" start="00:20:52.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""and what I add here is fontspec and English language.""" start="00:21:00.400" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Just to show you, but with the same configuration,""" start="00:21:06.440" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with the same fontspec configuration,""" start="00:21:10.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""but adding Polyglossia.""" start="00:21:11.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""I just have enough with adding Polyglossia""" start="00:21:20.474" 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 date 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 polyglossia 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 dir-locals""" start="00:22:02.340" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""in these 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:16.960" 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 Emacs 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:28.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Actually, you don't need a fallback""" start="00:22:33.960" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""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:40.108" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so the only thing that I would really need""" start="00:22:44.608" 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 mono. This can be also commented.""" start="00:22:53.920" video="mainVideo-latex" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demo: Emoji""" start="00:22:57.475" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""The only thing where I would really need""" start="00:22:57.475" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""a fallback 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 fallback 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""" start="00:23:09.800" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""with a modifier,""" start="00:23:14.741" 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 Harfbuzz 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:22.875" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demo: Letter""" start="00:23:33.180" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""I also have a couple of other things to show.""" start="00:23:33.180" 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 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 polyglossia for the date.""" start="00:24:06.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Anyhow, how did... What was my first thing that I did""" start="00:24:08.680" 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 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 LaTeX for that running.""" start="00:24:35.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Well, I actually, all my LaTeX is supported for that.""" start="00:24:43.860" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Demo: Side by side""" start="00:25:44.400" video="mainVideo-latex" id="subtitle"]]</div>[[!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 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 done with Polyglossia.""" start="00:26:12.920" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""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:24.241" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Come on. There you are. You get this.""" start="00:26:38.000" 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 FreeSerif.""" start="00:26:48.240" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""This listing is produced with DejaVu Sans Mono.""" start="00:26:53.880" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""And using Polyglossia here, I'm able to go and define""" start="00:27:01.480" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""the Greek polyton for the variant,""" start="00:27:12.900" 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 FreeSerif.""" 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"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Thanks""" start="00:28:12.600" video="mainVideo-latex" id="subtitle"]]</div>[[!template text="""I want to thank once again Juan Manuel Macias and Jing Huang""" start="00:28:12.600" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""for what they have shared.""" start="00:28:16.840" 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 font untouched for a couple of months""" start="00:28:37.040" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so that people can take... the feature branch""" start="00:28:39.608" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""untouched for a couple of months""" start="00:28:42.221" 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="""[Ihor]: I think there was one question on Etherpad for...""" start="00:29:24.840" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""[Pedro]: Beautiful. I think that goes beyond fonts right.""" start="00:29:39.241" video="mainVideo-latex" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: What about video (mp4) support for ox-latex?""" start="00:29:47.120" video="mainVideo-latex" id="subtitle"]]</div>[[!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="""&quot;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.&quot;""" 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:14.740" 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:42.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""you can get the LaTeX 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:31:00.320" 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 latex` `#+end_export` LaTeX.""" 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="""[Ihor]: Videos are generally a bit tricky because you cannot...""" start="00:31:24.280" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""Not every viewer will play them.""" start="00:31:27.275" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""so I think there is something called pdfpc that can,""" start="00:31:31.120" video="mainVideo-latex" id="subtitle"]]
+[[!template text="""this provides a LaTeX 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="""[Pedro]: 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 LaTeX""" 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..7a149948
--- /dev/null
+++ b/2025/info/latex-before.md
@@ -0,0 +1,28 @@
+<!-- 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 />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-latex--latex-export-in-orgmode-the-overhaul--pedro-a-aranda-gutirrez--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-latex" data="""
+00:00.000 Introduction
+00:41.400 Motivation
+02:53.360 Evolution
+06:02.480 What do you get from the feature branch?
+08:47.280 Behind the scenes: .dir-locals.el
+11:59.080 When fontspec is not enough
+15:21.080 Rationale behind my take at LaTeX font management
+18:34.480 Demonstrations
+22:57.475 Demo: Emoji
+23:33.180 Demo: Letter
+25:44.400 Demo: Side by side
+28:12.600 Thanks
+29:47.120 Q: What about video (mp4) support for ox-latex?
+
+"""]]<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--chapters.vtt">Download --main--chapters.vtt</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></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..e00f6105
--- /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 Mastodon""" 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 ToobNix, 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. Helary, Triko, and James Endres 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="""PsiTransfer, 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..ca632dbd
--- /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 (156MB)</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..199f4e4c
--- /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>Listen to just the audio:<br /><audio controls preload="none" id="qanda-reader-audio" src="https://media.emacsconf.org/2025/emacsconf-2025-reader--an-introduction-to-the-emacs-reader--divy--answers.opus"></audio></div><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.opus">Download --answers.opus (17MB)</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..fdd54459
--- /dev/null
+++ b/2025/info/zettelkasten-before.md
@@ -0,0 +1,52 @@
+<!-- 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: Q&A to be extracted from the room recordings
+
+
+
+
+
+# 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 />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-zettelkasten--zettelkasten-for-regular-emacs-hackers--christian-tietze--answers--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="qanda-zettelkasten" data="""
+00:49.560 Q: What do you use for the fancy animations?
+03:30.080 Q: Are you not a fan of using *, **, *** headings in org-mode?
+07:13.720 Q: Can you use org files and all its features inside Denote?
+07:49.000 Q: Where or how do you like to capture fleeting notes?
+11:29.040 Q: Zettelkasten feels like a very "cagey" approach to note-taking and knowledge management. Doesn't it restrict one to think in certain ways rather than what feels natural to someone?
+15:07.328 Q: How does denote compare to org-roam?
+18:25.040 Q: I noticed that the wikipedia link you wrote was typed wrongly - and it got me thinking about how to deal with broken links at scale? Do you have any thoughts on this? What about archival?
+21:20.591 Comment: When I completely re-worked my config some two years ago, I also tried out some of these packages for making notes in Emacs...
+24:34.800 Q: How Zettelkasten is useful for highly mathematical STEM academic fields like computer science or engineering fields?
+39:40.960 Q: In your experience, would you say that you re-use most of your notes?
+44:15.280 Q: How are notes structured and accessed when the notes grow from 10K to 100K notes?
+48:55.160 Q: I would be very interested in your thought on this video by Westenberg - https://www.youtube.com/watch?v=CjSWwmg-JRM (Why I Deleted My Second Brain: A Journey Back to Real Thinking)
+57:59.160 Q: Is there a danger that with the Zettelkasten process, that the process gets a bit in the way of the content?
+01:03:20.640 Q: How do you navigate looking at all posts with certain tags
+
+"""]]<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--chapters.vtt">Download --answers--chapters.vtt</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 (67MB)</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>